MCP 支持
CLI 通过 @ai-zen/agents-sdk 接入 MCP(Model Context Protocol) 服务器,并提供三个动态加载工具:load_mcp、call_mcp_tool、read_mcp_resource。连接生命周期(连接、指数退避重连、空闲超时)由 SDK 的 McpConnectionManager 全权管理。
MCP 配置结构
MCP 服务器配置存放在 mcp.json 文件中,顶层字段统一采用业界标准的 mcpServers(CLI 的 McpConfig 顶层字段)。
{
"mcpServers": {
"my-server": {
"type": "stdio",
"command": "node",
"args": ["server.js"],
"env": {
"API_KEY": "xxx"
}
}
}
}服务器字段(CLI 通过配置菜单写入):
type:传输方式,stdio|http|sse。stdio场景:command、args、env。http/sse场景:url、headers。disabled:是否禁用(默认false)。description:服务器描述(供load_mcp呈现给 LLM)。
底层 SDK 类型
McpServerConfig使用transport表示传输方式,并在内部做归一化。CLI 自身读写全局mcp.json时以type字段存储(见src/config.ts的McpServersMap)。README 中的示例使用transport,与 CLI 源码字段略有出入,建议以源码为准。
配置文件与合并优先级
MCP 服务器配置会从多个来源由高到低合并,同名服务器以优先级更高者覆盖:
- 项目共享
./.mcp.json - 项目个人
./.ai-zen/mcp.json - 项目规范
./.agents/mcp.json - 用户级
~/.ai-zen/mcp.json - 用户规范
~/.agents/mcp.json
⚠️ README 中的合并优先级描述(“项目
.ai-zen/mcp.json→ 项目.mcp.json→ 用户级~/.ai-zen/mcp.json”)与源码顺序不一致。以上顺序来自src/agent-creator.ts的getProvider()与src/config.ts的注释,源码为准。
动态加载工具
load_mcp:连接 MCP 服务器并列出其工具/资源/提示(幂等,重复调用跳过重复连接)。服务器枚举由filteredMcps自动推导。call_mcp_tool:通过官方Client.callTool()API 调用服务器上的工具。read_mcp_resource:读取服务器上的资源。
OAuth(HTTP transport)— 暂不支持
MCP 的 OAuth 2.0 授权流程(mcp.json 中的 oauth 字段)在 SDK 类型中已定义,并预留了 mcp-oauth/ 存储目录,但尚未实现。目前配置了 oauth 的 HTTP MCP 服务器会因缺少 token 而连接失败。
交互式管理
在主菜单 → 配置管理 → 管理 MCP 服务器 中,可以:
- 查看所有 MCP 服务器(含传输方式、命令/URL)。
- 新增 MCP 服务器(stdio 或 HTTP/SSE)。
- 编辑/删除 MCP 服务器、重命名。
相关文件:~/.ai-zen/mcp.json(全局)与项目级 ./.mcp.json、./.ai-zen/mcp.json、./.agents/mcp.json。