ClaudeのModel Context Protocol(MCP)コネクタ機能を使用すると、別のMCPクライアントを使用せずにメッセージAPIから直接リモートMCPサーバーに接続できます。

この機能には、ベータヘッダーが必要です:"anthropic-beta": "mcp-client-2025-04-04"

主な機能

  • 直接API統合:MCPクライアントを実装せずにMCPサーバーに接続
  • ツール呼び出しのサポート:メッセージAPIを通じてMCPツールにアクセス
  • OAuth認証:認証されたサーバー用のOAuth Bearerトークンのサポート
  • 複数サーバー:1つのリクエストで複数のMCPサーバーに接続

制限事項

  • MCP仕様の機能セットのうち、現在はツール呼び出しのみがサポートされています。
  • サーバーはHTTPを通じて公開されている必要があります。ローカルのSTDIOサーバーには直接接続できません。
  • MCPコネクタは現在、Amazon BedrockおよびGoogle Vertexではサポートされていません。

メッセージAPIでMCPコネクタを使用する

リモートMCPサーバーに接続するには、メッセージ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」のみサポート
urlstringはいMCPサーバーのURL。https://で始まる必要があります
namestringはいこのMCPサーバーの一意の識別子。mcp_tool_callブロックでサーバーを識別し、モデルにツールを区別するために使用されます。
tool_configurationobjectいいえツールの使用を設定
tool_configuration.enabledbooleanいいえこのサーバーからのツールを有効にするかどうか(デフォルト:true)
tool_configuration.allowed_toolsarrayいいえ許可するツールを制限するリスト(デフォルトでは、すべてのツールが許可されます)
authorization_tokenstringいいえMCPサーバーで必要な場合のOAuth認証トークン。MCP仕様を参照してください。

レスポンスコンテンツタイプ

ClaudeがMCPツールを使用する場合、レスポンスには2つの新しいコンテンツブロックタイプが含まれます:

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. 左側のサイドバーで、「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」セクションの手順に従い、「Authentication complete」に到達するまで「Continue」をクリックします。

  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仕様の認証セクションを参照してください。