在聚合站 key 上给 Claude Code 挂 MCP server:哪些工具链路还能通
本文介绍如何将 MCP server 接入指向聚合站的 Claude Code,并实测工具调用能否正常往返。文章涵盖配置步骤、代理层可能修改的字段(如请求头、模型名称映射、工具调用字段等),以及常见问题排查,帮助开发者确保 MCP 工具链在聚合站环境下仍能正常工作。
为什么要在聚合站上挂 MCP server
Claude Code 支持通过 MCP(Model Context Protocol)连接外部工具,比如文件系统、数据库或自定义 API。当你把 Claude Code 的 API 端点指向 LLM 聚合站时,请求会先经过聚合站的代理层再转发给上游模型。这个代理层可能对请求或响应做某些改写,从而影响 MCP 工具调用的往返。本文带你一步步配置,并实测哪些工具链路还能通。
配置步骤:让 Claude Code 通过聚合站调用模型
- 获取聚合站 API key:在聚合站生成一个 key,记下 base URL(例如
https://api.example.com/v1)。 - 设置 Claude Code 的环境变量:
ANTHROPICAPIKEY设为你的聚合站 key。ANTHROPICBASEURL设为聚合站的 base URL(注意有些聚合站要求不带/v1,请参考其文档)。
- 配置 MCP server:在 Claude Code 的配置文件(如
~/.claude.json或项目级.mcp.json)中添加你的 MCP server,例如: - 启动 Claude Code:运行
claude,它会自动加载 MCP server 并列出可用工具。
```json
{
"mcpServers": {
"my-tool": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
}
}
}
```
实测工具调用往返
我们用一个简单的文件系统 MCP server 测试。在 Claude Code 中提问:“列出 /tmp 下的文件”,观察 Claude 是否发起工具调用并得到结果。
关键观察点:
- 请求是否成功到达聚合站并返回
tool_use内容块。 - 工具调用结果回传后,Claude 是否能继续生成最终回答。
实测发现,大多数标准 MCP 工具调用能正常往返,但代理层可能改动以下字段,导致部分链路异常。
代理层可能改动的字段
聚合站为了统一多模型接口,通常会对请求/响应做适配。以下是常见的改动点:
1. 请求头(Headers)
anthropic-version:部分聚合站会覆盖或移除该头,导致上游模型拒绝请求。如果遇到 400 错误,检查聚合站是否要求特定版本头。x-api-keyvsAuthorization:聚合站可能将x-api-key转换为Authorization: Bearer,这通常不影响功能,但需确保 key 传递正确。
2. 模型名称映射
聚合站可能将你请求的模型名(如 claude-3-5-sonnet-20241022)映射到其内部标识。如果映射错误,工具调用可能失效,因为不同模型对工具调用的支持程度不同。建议:在聚合站文档中确认支持的模型名,并使用其推荐的名称。
3. 工具调用(Tool Use)字段
tools数组:代理层可能过滤或修改工具定义。例如,某些聚合站会移除input_schema中的additionalProperties字段,导致工具参数校验失败。toolchoice:部分代理会忽略或重写toolchoice,影响强制工具调用的行为。- 响应中的
tool_use块:代理可能调整id或input的格式,但通常保持结构一致。
4. 流式响应(Streaming)
如果启用流式传输,代理层可能重组 SSE 事件。工具调用的 contentblockstart 和 contentblockdelta 事件可能被合并或拆分,导致 Claude Code 解析异常。建议:先关闭流式传输测试,确认基本功能后再开启。
5. 系统提示(System Prompt)
少数聚合站会注入或修改系统提示,这可能影响模型对工具调用的决策。如果发现工具调用不积极,检查代理是否添加了额外指令。
常见问题与排查
- 工具调用未触发:检查模型是否支持工具调用(如 Claude 3 系列支持),并确认
tools字段在请求中正确传递。可在聚合站日志中查看实际转发的请求体。 - 工具调用返回错误:如
invalidtooluse,可能是代理层修改了工具定义。尝试简化工具 schema,或联系聚合站确认兼容性。 - 响应截断:代理层可能限制响应大小,导致长工具结果被截断。调整
max_tokens或分页处理。 - 认证失败:确认 base URL 和 key 正确,且聚合站支持 Anthropic 协议。
总结
在聚合站上使用 Claude Code 挂 MCP server 总体可行,但需注意代理层对请求头、模型映射、工具定义和流式响应的潜在改动。通过逐步测试和对比直连行为,可以定位并绕过大部分兼容性问题。建议从简单工具开始,确认往返正常后再接入复杂工具链。