claude-code-mcp-servers · ZH · 2026-10-22

在聚合站 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 通过聚合站调用模型

  1. 获取聚合站 API key:在聚合站生成一个 key,记下 base URL(例如 https://api.example.com/v1)。
  2. 设置 Claude Code 的环境变量:
  • ANTHROPICAPIKEY 设为你的聚合站 key。
  • ANTHROPICBASEURL 设为聚合站的 base URL(注意有些聚合站要求不带 /v1,请参考其文档)。
  1. 配置 MCP server:在 Claude Code 的配置文件(如 ~/.claude.json 或项目级 .mcp.json)中添加你的 MCP server,例如:
  2. ```json
    {
    "mcpServers": {
    "my-tool": {
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"]
    }
    }
    }
    ```

  3. 启动 Claude Code:运行 claude,它会自动加载 MCP server 并列出可用工具。

实测工具调用往返

我们用一个简单的文件系统 MCP server 测试。在 Claude Code 中提问:“列出 /tmp 下的文件”,观察 Claude 是否发起工具调用并得到结果。

关键观察点:

  • 请求是否成功到达聚合站并返回 tool_use 内容块。
  • 工具调用结果回传后,Claude 是否能继续生成最终回答。

实测发现,大多数标准 MCP 工具调用能正常往返,但代理层可能改动以下字段,导致部分链路异常。

代理层可能改动的字段

聚合站为了统一多模型接口,通常会对请求/响应做适配。以下是常见的改动点:

1. 请求头(Headers)

  • anthropic-version:部分聚合站会覆盖或移除该头,导致上游模型拒绝请求。如果遇到 400 错误,检查聚合站是否要求特定版本头。
  • x-api-key vs Authorization:聚合站可能将 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 总体可行,但需注意代理层对请求头、模型映射、工具定义和流式响应的潜在改动。通过逐步测试和对比直连行为,可以定位并绕过大部分兼容性问题。建议从简单工具开始,确认往返正常后再接入复杂工具链。