Claude 的模型上下文協議(Model Context Protocol,MCP)連接器功能使您能夠直接從 Messages API 連接到遠程 MCP 服務器,無需單獨的 MCP 客戶端。

此功能需要 beta 標頭:"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 連接器 beta 版支持在 MCP 服務器定義中傳遞 authorization_token 參數。 API 消費者需要在進行 API 調用之前處理 OAuth 流程並獲取訪問令牌,以及根據需要刷新令牌。

獲取測試用的訪問令牌

MCP 檢查器可以指導您完成獲取測試用訪問令牌的過程。

  1. 使用以下命令運行檢查器。您需要在機器上安裝 Node.js。

    npx @modelcontextprotocol/inspector
    
  2. 在左側的側邊欄中,對於”Transport type”,選擇”SSE”或”Streamable HTTP”。

  3. 輸入 MCP 服務器的 URL。

  4. 在右側區域,在”Need to configure authentication?”後點擊”Open Auth Settings”按鈕。

  5. 點擊”Quick OAuth Flow”並在 OAuth 屏幕上授權。

  6. 按照檢查器的”OAuth Flow Progress”部分中的步驟操作,點擊”Continue”直到達到”Authentication complete”。

  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 規範中的 授權部分