Fitur MCP connector (Model Context Protocol) dari Claude memungkinkan Anda terhubung ke server MCP jarak jauh langsung dari Messages API tanpa klien MCP terpisah.
Versi saat ini: Fitur ini memerlukan header beta: "anthropic-beta": "mcp-client-2025-11-20"
Versi sebelumnya (mcp-client-2025-04-04) sudah tidak didukung. Lihat dokumentasi versi yang tidak didukung di bawah.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
MCP connector menggunakan dua komponen:
mcp_servers): Mendefinisikan detail koneksi server (URL, autentikasi)tools): Mengonfigurasi alat mana yang akan diaktifkan dan cara mengonfigurasinyaContoh ini mengaktifkan semua alat dari server MCP dengan konfigurasi default:
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-11-20" \
-d '{
"model": "claude-opus-4-6",
"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"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp"
}
]
}'Setiap server MCP dalam array mcp_servers mendefinisikan detail koneksi:
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Properti | Tipe | Wajib | Deskripsi |
|---|---|---|---|
type | string | Ya | Saat ini hanya "url" yang didukung |
url | string | Ya | URL server MCP. Harus dimulai dengan https:// |
name | string | Ya | Pengenal unik untuk server MCP ini. Harus direferensikan oleh tepat satu MCPToolset dalam array tools. |
authorization_token | string | Tidak | Token otorisasi OAuth jika diperlukan oleh server MCP. Lihat spesifikasi MCP. |
MCPToolset berada dalam array tools dan mengonfigurasi alat mana dari server MCP yang diaktifkan dan bagaimana alat tersebut harus dikonfigurasi.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Properti | Tipe | Wajib | Deskripsi |
|---|---|---|---|
type | string | Ya | Harus berupa "mcp_toolset" |
mcp_server_name | string | Ya | Harus cocok dengan nama server yang didefinisikan dalam array mcp_servers |
default_config | object | Tidak | Konfigurasi default yang diterapkan ke semua alat dalam set ini. Konfigurasi alat individual dalam configs akan menggantikan default ini. |
configs | object | Tidak | Penggantian konfigurasi per-alat. Kunci adalah nama alat, nilai adalah objek konfigurasi. |
cache_control | object | Tidak | Konfigurasi breakpoint cache untuk toolset ini |
Setiap alat (baik yang dikonfigurasi dalam default_config maupun dalam configs) mendukung field berikut:
| Properti | Tipe | Default | Deskripsi |
|---|---|---|---|
enabled | boolean | true | Apakah alat ini diaktifkan |
defer_loading | boolean | false | Jika true, deskripsi alat tidak dikirim ke model pada awalnya. Digunakan dengan Tool Search Tool. |
Nilai konfigurasi digabungkan dengan urutan prioritas ini (tertinggi ke terendah):
configsdefault_config tingkat setContoh:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Menghasilkan:
search_events: enabled: false (dari configs), defer_loading: true (dari default_config)enabled: true (default sistem), defer_loading: true (dari default_config)Pola paling sederhana - aktifkan semua alat dari server:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Atur enabled: false sebagai default, lalu aktifkan alat tertentu secara eksplisit:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Aktifkan semua alat secara default, lalu nonaktifkan alat yang tidak diinginkan secara eksplisit:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Gabungkan daftar putih dengan konfigurasi khusus untuk setiap alat:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false,
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": true,
"defer_loading": false
},
"list_events": {
"enabled": true
}
}
}Dalam contoh ini:
search_events diaktifkan dengan defer_loading: falselist_events diaktifkan dengan defer_loading: true (diwarisi dari default_config)API memberlakukan aturan validasi berikut:
mcp_server_name dalam MCPToolset harus cocok dengan server yang didefinisikan dalam array mcp_serversmcp_servers harus direferensikan oleh tepat satu MCPToolsetconfigs tidak ada di server MCP, peringatan backend dicatat tetapi tidak ada kesalahan yang dikembalikan (server MCP mungkin memiliki ketersediaan alat yang dinamis)Ketika Claude menggunakan alat MCP, respons akan menyertakan dua tipe blok konten baru:
{
"type": "mcp_tool_use",
"id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
"name": "echo",
"server_name": "example-mcp",
"input": { "param1": "value1", "param2": "value2" }
}{
"type": "mcp_tool_result",
"tool_use_id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
"is_error": false,
"content": [
{
"type": "text",
"text": "Hello"
}
]
}Anda dapat terhubung ke beberapa server MCP dengan menyertakan beberapa definisi server dalam mcp_servers dan MCPToolset yang sesuai untuk masing-masing dalam array tools:
{
"model": "claude-opus-4-6",
"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"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "mcp-server-1"
},
{
"type": "mcp_toolset",
"mcp_server_name": "mcp-server-2",
"default_config": {
"defer_loading": true
}
}
]
}Untuk server MCP yang memerlukan autentikasi OAuth, Anda perlu mendapatkan token akses. Beta MCP connector mendukung pengiriman parameter authorization_token dalam definisi server MCP.
Konsumen API diharapkan menangani alur OAuth dan mendapatkan token akses sebelum melakukan panggilan API, serta memperbarui token sesuai kebutuhan.
MCP inspector dapat memandu Anda melalui proses mendapatkan token akses untuk tujuan pengujian.
Jalankan inspector dengan perintah berikut. Anda perlu menginstal Node.js di mesin Anda.
npx @modelcontextprotocol/inspectorDi sidebar sebelah kiri, untuk "Transport type", pilih "SSE" atau "Streamable HTTP".
Masukkan URL server MCP.
Di area kanan, klik tombol "Open Auth Settings" setelah "Need to configure authentication?".
Klik "Quick OAuth Flow" dan otorisasi di layar OAuth.
Ikuti langkah-langkah di bagian "OAuth Flow Progress" pada inspector dan klik "Continue" hingga Anda mencapai "Authentication complete".
Salin nilai access_token.
Tempelkan ke field authorization_token dalam konfigurasi server MCP Anda.
Setelah Anda mendapatkan token akses menggunakan alur OAuth di atas, Anda dapat menggunakannya dalam konfigurasi server MCP Anda:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Untuk penjelasan terperinci tentang alur OAuth, lihat bagian Authorization dalam spesifikasi MCP.
Jika Anda mengelola koneksi klien MCP sendiri (misalnya, dengan server stdio lokal, prompt MCP, atau resource MCP), TypeScript SDK menyediakan fungsi helper yang mengonversi antara tipe MCP dan tipe Claude API. Ini menghilangkan kode konversi manual saat menggunakan MCP SDK bersama Anthropic SDK.
Helper ini saat ini hanya tersedia di TypeScript SDK.
Gunakan parameter API mcp_servers ketika Anda memiliki server jarak jauh yang dapat diakses melalui URL dan hanya memerlukan dukungan alat. Jika Anda menggunakan Agent SDK, koneksi MCP dikelola secara otomatis. Gunakan helper sisi klien ketika Anda memerlukan server lokal, prompt, resource, atau kontrol lebih besar atas koneksi dengan base SDK.
Instal Anthropic SDK dan MCP SDK:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImpor helper dari namespace beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Helper | Deskripsi |
|---|---|
mcpTools(tools, mcpClient) | Mengonversi alat MCP ke alat Claude API untuk digunakan dengan client.beta.messages.toolRunner() |
mcpMessages(messages) | Mengonversi pesan prompt MCP ke format pesan Claude API |
mcpResourceToContent(resource) | Mengonversi resource MCP ke blok konten Claude API |
mcpResourceToFile(resource) | Mengonversi resource MCP ke objek file untuk diunggah |
Konversi alat MCP untuk digunakan dengan tool runner SDK, yang menangani eksekusi alat secara otomatis:
import Anthropic from "@anthropic-ai/sdk";
import { mcpTools } from "@anthropic-ai/sdk/helpers/beta/mcp";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const anthropic = new Anthropic();
// Terhubung ke server MCP
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// Daftarkan alat dan konversi untuk Claude API
const { tools } = await mcpClient.listTools();
const runner = await anthropic.beta.messages.toolRunner({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [{ role: "user", content: "What tools do you have available?" }],
tools: mcpTools(tools, mcpClient)
});Konversi pesan prompt MCP ke format pesan Claude API:
import { mcpMessages } from "@anthropic-ai/sdk/helpers/beta/mcp";
const { messages } = await mcpClient.getPrompt({ name: "my-prompt" });
const response = await anthropic.beta.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: mcpMessages(messages)
});Konversi resource MCP ke blok konten untuk disertakan dalam pesan, atau ke objek file untuk diunggah:
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// Sebagai blok konten dalam pesan
const resource = await mcpClient.readResource({ uri: "file:///path/to/doc.txt" });
await anthropic.beta.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
messages: [
{
role: "user",
content: [
mcpResourceToContent(resource),
{ type: "text", text: "Summarize this document" }
]
}
]
});
// Sebagai unggahan file
const fileResource = await mcpClient.readResource({ uri: "file:///path/to/data.json" });
await anthropic.beta.files.upload({ file: mcpResourceToFile(fileResource) });Fungsi konversi melempar UnsupportedMCPValueError jika nilai MCP tidak didukung oleh Claude API. Ini dapat terjadi dengan tipe konten yang tidak didukung, tipe MIME, atau tautan resource non-HTTP.
MCP Connector tidak tercakup dalam pengaturan ZDR. Data yang dipertukarkan dengan server MCP, termasuk definisi alat dan hasil eksekusi, disimpan sesuai dengan kebijakan retensi data standar Anthropic.
Untuk kelayakan ZDR di semua fitur, lihat API dan Retensi Data.
Jika Anda menggunakan header beta mcp-client-2025-04-04 yang sudah tidak didukung, ikuti panduan ini untuk bermigrasi ke versi baru.
mcp-client-2025-04-04 menjadi mcp-client-2025-11-20tools sebagai objek MCPToolset, bukan dalam definisi server MCPSebelum (tidak didukung):
{
"model": "claude-opus-4-6",
"max_tokens": 1000,
"messages": [
// ...
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.example.com/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN",
"tool_configuration": {
"enabled": true,
"allowed_tools": ["tool1", "tool2"]
}
}
]
}Sesudah (saat ini):
{
"model": "claude-opus-4-6",
"max_tokens": 1000,
"messages": [
// ...
],
"mcp_servers": [
{
"type": "url",
"url": "https://mcp.example.com/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}
],
"tools": [
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": false
},
"configs": {
"tool1": {
"enabled": true
},
"tool2": {
"enabled": true
}
}
}
]
}| Pola lama | Pola baru |
|---|---|
Tidak ada tool_configuration (semua alat diaktifkan) | MCPToolset tanpa default_config atau configs |
tool_configuration.enabled: false | MCPToolset dengan default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset dengan default_config.enabled: false dan alat tertentu diaktifkan dalam configs |
Versi ini sudah tidak didukung. Silakan migrasi ke mcp-client-2025-11-20 menggunakan panduan migrasi di atas.
Versi sebelumnya dari MCP connector menyertakan konfigurasi alat langsung dalam definisi server MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN",
"tool_configuration": {
"enabled": true,
"allowed_tools": ["example_tool_1", "example_tool_2"]
}
}
]
}| Properti | Tipe | Deskripsi |
|---|---|---|
tool_configuration | object | Tidak didukung: Gunakan MCPToolset dalam array tools sebagai gantinya |
tool_configuration.enabled | boolean | Tidak didukung: Gunakan default_config.enabled dalam MCPToolset |
tool_configuration.allowed_tools | array | Tidak didukung: Gunakan pola daftar putih dengan configs dalam MCPToolset |
Was this page helpful?