MCP(Model Context Protocol)是 ZCode 扩展运行时的一部分,拥有”配置发现/加载”,与 agent-core(如何进入上下文与 turn)分离。
配置来源(三条并入路径)
- 插件内:
.mcp.json+ manifestmcpServers(合并,manifest 优先)——见 plugin-system。 - 用户/项目:
~/.zcode/cli/config.json的mcp.servers、<workspace>/.zcode/config.json的mcp.servers。 - 导入:设置页从外部 Agent 扫描 12 类来源(Claude
~/.claude/settings.json+.mcp.json、Codexconfig.toml、OpenCodeopencode.json、OpenClaw、Qwen、Qoder/CN、Trae、Kiro、Roo、CodeBuddy、通用.agents/mcp.json);同名保留 ZCode 现有配置。 - Host 注入:官方插件
hostMcpServerNames(browser-use / computer-use 的node_repl),不是 manifest 内 server。
配置格式(CLI)
默认用户配置路径 ~/.zcode/cli/config.json,MCP 默认启用(features.mcp 仅在需要显式开关时设置):
{
"mcp": {
"servers": {
"filesystem": { "type": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "."] },
"docs": { "type": "http", "url": "https://mcp.example.com/mcp" },
"legacy-sse": { "type": "sse", "url": "https://mcp.example.com/sse", "enabled": false }
}
}
}stdio:需command,可args/cwd/env/enabled/timeoutMs。http/sse:需url,可headers/enabled/timeoutMs。- MCP 工具在首次模型请求前注册,暴露为
mcp__<server>__<tool>。 - 会话内命令:
/mcp list、/mcp status、/mcp connect <server>、/mcp disconnect <server>。
插件侧 MCP
adapters/src/plugins/mcp.ts:
- 来源合并:
.mcp.json(插件根)+ manifestmcpServers,后者覆盖前者。 - server 名命名空间
plugin:<pluginName>:<serverName>;runtime source 归类builtin/plugin。 - 传输:stdio / Streamable HTTP / SSE;OAuth 支持
client_credentials与authorization_code。 - 官方鉴权
zcode_official+jwt_token:仅允许 http/stdio,sse直接禁用;与 oauth 不能共存;静态 header 不得含官方保留头;provenance 由宿主生成,不能伪造。 - 环境模板
CLAUDE_PROJECT_DIR/ZCODE_PROJECT_DIR、ZCODE_PLUGIN_DATA、ZCODE_PLUGIN_ROOT(含 CLAUDE 别名);sensitiveuser_config 只允许展开到敏感 sink(env/header/clientSecret)。
MCP 客户端实现
adapters/src/mcp/:pool.ts、stdio-transport.ts、oauth*.ts、resource-subscriptions.ts、windows-job-object.ts(Windows 进程容器)、timeout.ts、telemetry.ts。
平台边界(docs/mcp-platform-boundary.md)
- MCP 原生目录管理是平台能力,UI 只经
IPlatformService(loadMcpFromUserDirectory/saveMcpToUserDirectory/migrateLegacyCommonMcp)。 - 普通 stdio / Streamable HTTP 用 dual-era
auto协商。 - 内置
node_repl固定 MCP2026-07-28、无Mcp-Session-Id、按workspaceKey共享无状态进程(docs/mcp-stateless-node-repl.md)。 - 手机
/remote复用 desktop shared-host attachment,不建独立 runtime。 - 设置页显示本地化
initialize/tools/list诊断并按pluginId归属;官方 Server MCP 单独处理 auth/quota/unavailable。
MCP Apps(插件 UI 页面)
packages/shared/src/mcp-apps/ 是纯 wire contract:
contract.ts:沙箱契约类型、PluginSandboxPlatformPorthostContract.ts:ui/download-file、tool-input/result 载荷、titleBar/样式变量toolMeta.ts:_meta归一化、ui://resourceUri 优先级sampling.ts、appTools.ts、schemas.ts
CONTRACT.md 规定页面↔宿主的 ui/* 线协议由官方 @modelcontextprotocol/ext-apps 承担;ZCode 扩展放 hostCapabilities.experimental["zcode/…"];沙箱 origin 由 sandboxId 派生、partition 由 server 身份派生。详见 plugin-system、desktop。
相关设计文档
docs/mcp-dual-era-version-negotiation.md、mcp-stateless-node-repl.md、mcp-oauth-client-auth.md、mcp-oauth-two-phase.md、mcp-tool-output-budget.md、mcp-async-tool-catalog-cache.md、mcp-apps-resource-mime-spec.md、mcp-config-compat-diagnostics.md、mcp-stdio-failure-stderr-diagnostics.md、windows-mcp-job-object-containment.md。
相关页面
- plugin-system — 插件 manifest 与官方鉴权
- tool-system — MCP 工具如何进入工具池
- skills-system — 插件技能与 MCP 的组合
- desktop — MCP Apps 沙箱