MCP 工具
MCP (Model Context Protocol) 工具家族实现与外部 MCP 服务器的交互,包含 4 个工具。
注意: 以下所有工具的
call()方法均为普通async函数,返回Promise<ToolResult>,不是 AsyncGenerator。
MCPTool — 调用 MCP 工具
工作原理
MCPTool 是一个 元工具,它将外部 MCP 服务器提供的工具适配为 Claude Code 内置工具格式:
typescript
// MCP 工具包装在 services/mcp/client.ts 中完成
// 每个 MCP 服务器的工具通过 MCPServerConnection 注册
// 命名格式: mcp__{server}__{tool}
// 工具的 inputSchema 直接使用 MCP 服务器提供的 JSON Schema
// 无需 convertJsonSchemaToZod 转换
// 工具的 call() 通过 MCPServerConnection 的内部逻辑处理
// 权限检查由上层权限系统统一处理命名约定
MCP 工具名称格式: mcp__{server}__{tool}
mcp__filesystem__read_file — filesystem 服务器的 read_file 工具
mcp__github__create_issue — github 服务器的 create_issue 工具
mcp__postgres__query — postgres 服务器的 query 工具ListMcpResourcesTool — 列出 MCP 资源
typescript
const inputSchema = z.object({
server: z.string().optional().describe('MCP 服务器名称,不指定则列出所有'),
})执行时遍历指定或所有 MCP 客户端,获取各服务器提供的资源列表并格式化返回。
ReadMcpResourceTool — 读取 MCP 资源
typescript
const inputSchema = z.object({
server: z.string().describe('MCP 服务器名称'),
uri: z.string().describe('资源 URI'),
})执行时查找指定名称的 MCP 客户端,通过 MCP 协议的 resources/read 方法读取指定 URI 的资源内容。
McpAuthTool — MCP 认证
McpAuthTool 通过 createMcpAuthTool() 闭包创建,服务器信息通过闭包传入,无需输入参数。
typescript
const inputSchema = z.object({}) // 无输入参数执行时启动 OAuth 认证流程,引导用户完成 MCP 服务器的授权。
MCP 配置层级
MCP 服务器配置有 6 层合并:
优先级(从低到高):
1. 全局默认 — Claude Code 内置
2. 用户配置 — ~/.claude/settings.json
3. 项目配置 — .claude/settings.json
4. 企业托管配置 — 远程推送
5. 环境变量 — CLAUDE_MCP_SERVERS
6. CLI 参数 — --mcp-server配置格式
json
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"],
"env": { "DEBUG": "true" }
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "ghp_..." }
}
},
"allowedMcpServers": ["filesystem", "github"],
"deniedMcpServers": ["untrusted-server"]
}