Claude 的模型上下文协议(MCP)连接器功能使您能够直接从 Messages API 连接到远程 MCP 服务器,无需单独的 MCP 客户端。

此功能需要测试版标头:"anthropic-beta": "mcp-client-2025-04-04"

主要特性

  • 直接 API 集成:无需实现 MCP 客户端即可连接到 MCP 服务器
  • 工具调用支持:通过 Messages API 访问 MCP 工具
  • OAuth 认证:支持 OAuth Bearer 令牌用于已认证的服务器
  • 多服务器:在单个请求中连接到多个 MCP 服务器

限制

  • 在 MCP 规范的功能集中,目前仅支持工具调用。
  • 服务器必须通过 HTTP 公开暴露。本地 STDIO 服务器无法直接连接。
  • MCP 连接器目前不支持 Amazon Bedrock 和 Google Vertex。

在 Messages API 中使用 MCP 连接器

要连接到远程 MCP 服务器,请在 Messages API 请求中包含 mcp_servers 参数:

curl https://api.anthropic.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: mcp-client-2025-04-04" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1000,
    "messages": [{"role": "user", "content": "What tools do you have available?"}],
    "mcp_servers": [
      {
        "type": "url",
        "url": "https://example-server.modelcontextprotocol.io/sse",
        "name": "example-mcp",
        "authorization_token": "YOUR_TOKEN"
      }
    ]
  }'

MCP 服务器配置

mcp_servers 数组中的每个 MCP 服务器支持以下配置:

{
  "type": "url",
  "url": "https://example-server.modelcontextprotocol.io/sse",
  "name": "example-mcp",
  "tool_configuration": {
    "enabled": true,
    "allowed_tools": ["example_tool_1", "example_tool_2"]
  },
  "authorization_token": "YOUR_TOKEN"
}

字段描述

属性类型必填描述
typestring目前仅支持 “url”
urlstringMCP 服务器的 URL。必须以 https:// 开头
namestring此 MCP 服务器的唯一标识符。它将在 mcp_tool_call 块中用于识别服务器并向模型区分工具。
tool_configurationobject配置工具使用
tool_configuration.enabledboolean是否启用此服务器的工具(默认:true)
tool_configuration.allowed_toolsarray限制允许的工具列表(默认情况下,允许所有工具)
authorization_tokenstring如果 MCP 服务器需要,则提供 OAuth 授权令牌。参见 MCP 规范

响应内容类型

当 Claude 使用 MCP 工具时,响应将包含两种新的内容块类型:

MCP 工具使用块

{
  "type": "mcp_tool_use",
  "id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
  "name": "echo",
  "server_name": "example-mcp",
  "input": { "param1": "value1", "param2": "value2" }
}

MCP 工具结果块

{
  "type": "mcp_tool_result",
  "tool_use_id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
  "is_error": false,
  "content": [
    {
      "type": "text",
      "text": "Hello"
    }
  ]
}

多个 MCP 服务器

您可以通过在 mcp_servers 数组中包含多个对象来连接到多个 MCP 服务器:

{
  "model": "claude-sonnet-4-20250514",
  "max_tokens": 1000,
  "messages": [
    {
      "role": "user",
      "content": "Use tools from both mcp-server-1 and mcp-server-2 to complete this task"
    }
  ],
  "mcp_servers": [
    {
      "type": "url",
      "url": "https://mcp.example1.com/sse",
      "name": "mcp-server-1",
      "authorization_token": "TOKEN1"
    },
    {
      "type": "url",
      "url": "https://mcp.example2.com/sse",
      "name": "mcp-server-2",
      "authorization_token": "TOKEN2"
    }
  ]
}

认证

对于需要 OAuth 认证的 MCP 服务器,您需要获取访问令牌。MCP 连接器测试版支持在 MCP 服务器定义中传递 authorization_token 参数。 API 消费者需要在进行 API 调用之前处理 OAuth 流程并获取访问令牌,以及根据需要刷新令牌。

获取测试用的访问令牌

MCP 检查器可以指导您完成获取测试用访问令牌的过程。

  1. 使用以下命令运行检查器。您需要在机器上安装 Node.js。

    npx @modelcontextprotocol/inspector
    
  2. 在左侧边栏中,对于”传输类型”,选择”SSE”或”可流式 HTTP”。

  3. 输入 MCP 服务器的 URL。

  4. 在右侧区域,在”需要配置认证?“后点击”打开认证设置”按钮。

  5. 点击”快速 OAuth 流程”并在 OAuth 屏幕上授权。

  6. 按照检查器的”OAuth 流程进度”部分中的步骤操作,并点击”继续”直到达到”认证完成”。

  7. 复制 access_token 值。

  8. 将其粘贴到 MCP 服务器配置中的 authorization_token 字段中。

使用访问令牌

一旦您使用上述任一 OAuth 流程获得了访问令牌,您可以在 MCP 服务器配置中使用它:

{
  "mcp_servers": [
    {
      "type": "url",
      "url": "https://example-server.modelcontextprotocol.io/sse",
      "name": "authenticated-server",
      "authorization_token": "YOUR_ACCESS_TOKEN_HERE"
    }
  ]
}

有关 OAuth 流程的详细说明,请参阅 MCP 规范中的授权部分