Fitur konektor "Model Context Protocol", atau MCP, dari Claude memungkinkan Anda terhubung ke server MCP jarak jauh langsung dari Messages API tanpa klien MCP terpisah.
Setelah server MCP terhubung, Claude memanggil alatnya ketika permintaan pengguna sesuai dengan kemampuan yang dijelaskan oleh suatu alat, baik secara eksplisit ("cari bug terbuka di Jira") maupun secara implisit ("apa yang menghambat rilis?" dengan server Jira yang terhubung).
Claude tidak memanggil alat MCP untuk pertanyaan pengetahuan umum tentang layanan yang terhubung. Bertanya "bagaimana cara kerja database Notion?" dengan server Notion yang terhubung akan dijawab secara langsung; bertanya "apa yang ada di database Projects saya?" akan memicu alat tersebut.
Anda dapat mengarahkan seberapa mudah Claude memanggil alat MCP melalui prompt sistem Anda. Lihat Kapan Claude menggunakan alat untuk panduan umum dan contoh frasa.
Konektor MCP menggunakan dua komponen:
mcp_servers): Mendefinisikan detail koneksi server (URL, autentikasi)tools): Mengonfigurasi alat mana yang diaktifkan dan bagaimana mengonfigurasinyaContoh ini mengaktifkan semua alat dari server MCP dengan konfigurasi default:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5",
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"}],
betas=["mcp-client-2025-11-20"],
)
print(response)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 dari server MCP. Harus dimulai dengan https://. |
name | string | Ya | Pengidentifikasi 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 menimpa default ini. |
configs | object | Tidak | Penimpaan konfigurasi per alat. Key adalah nama alat, value adalah objek konfigurasi. |
cache_control | object | Tidak | Konfigurasi breakpoint cache caching prompt untuk toolset ini. |
Setiap alat (baik dikonfigurasi dalam default_config atau 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. |
Untuk direktori lengkap alat yang disediakan Anthropic dan properti opsional seperti defer_loading, lihat Referensi alat. Untuk pencarian di seluruh kumpulan alat yang besar, lihat 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 sebuah 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. Memasukkan alat tulis atau alat destruktif ke daftar tolak direkomendasikan saat membangun asisten read-only, atau saat Anda menginginkan langkah konfirmasi manusia sebelum perubahan state:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Gabungkan daftar izin dengan konfigurasi kustom 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 menerapkan 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 error yang dikembalikan (server MCP mungkin memiliki ketersediaan alat yang dinamis)Ketika Claude menggunakan alat MCP, respons 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-5",
"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
}
}
]
}Dengan banyak alat yang tersedia, Claude memilih berdasarkan nama dan deskripsi alat. Deskripsi alat yang jelas dan spesifik meningkatkan akurasi pemilihan. Untuk kumpulan alat yang besar (puluhan alat di beberapa server), pertimbangkan untuk mengaktifkan defer_loading dengan Tool search tool sehingga hanya alat yang relevan yang dimunculkan per kueri.
Untuk server MCP yang memerlukan autentikasi OAuth, Anda perlu mendapatkan access token. Beta konektor MCP mendukung pengiriman parameter authorization_token dalam definisi server MCP.
Konsumen API diharapkan menangani alur OAuth dan mendapatkan access token sebelum melakukan panggilan API, serta me-refresh token sesuai kebutuhan.
MCP inspector dapat memandu Anda melalui proses mendapatkan access token untuk tujuan pengujian.
Jalankan inspector dengan perintah berikut. Anda memerlukan Node.js yang terinstal 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 pada 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 access token menggunakan salah satu alur OAuth sebelumnya, 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 Anda sendiri (misalnya, dengan server stdio lokal, prompt MCP, atau resource MCP), SDK menyediakan fungsi helper yang mengonversi antara tipe MCP dan tipe Claude API. Ini menghilangkan kode konversi manual saat menggunakan SDK MCP untuk bahasa Anda (misalnya, TypeScript MCP SDK) bersama dengan Anthropic SDK.
Instal Anthropic SDK dan MCP SDK:
Helper MCP disertakan dalam extra mcp, yang memerlukan Python 3.10 atau lebih baru:
pip install "anthropic[mcp]"Impor helper untuk bahasa Anda:
from anthropic.lib.tools.mcp import (
async_mcp_tool,
mcp_message,
mcp_resource_to_content,
mcp_resource_to_file,
)Nama helper dan signature persisnya mengikuti konvensi masing-masing bahasa; tabel ini menunjukkan bentuk TypeScript:
| Helper | Deskripsi |
|---|---|
mcpTools(tools, mcpClient) | Mengonversi alat MCP menjadi 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 menjadi blok konten Claude API |
mcpResourceToFile(resource) | Mengonversi resource MCP menjadi objek file untuk diunggah |
Konversi alat MCP untuk digunakan dengan tool runner SDK, yang menangani eksekusi alat secara otomatis:
from anthropic.lib.tools.mcp import async_mcp_tool
from mcp import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client
client = AsyncAnthropic()
async def main() -> None:
# Menghubungkan ke server MCP
server_params = StdioServerParameters(command="mcp-server")
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as mcp_client:
await mcp_client.initialize()
# Mendaftar alat dan mengonversinya untuk Claude API
tools_result = await mcp_client.list_tools()
runner = client.beta.messages.tool_runner(
model="claude-opus-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "What tools do you have available?"},
],
tools=[async_mcp_tool(tool, mcp_client) for tool in tools_result.tools],
)
final_message = await runner.until_done()
print(final_message)
asyncio.run(main())Konversi pesan prompt MCP ke format pesan Claude API:
from anthropic.lib.tools.mcp import mcp_message
prompt = await mcp_client.get_prompt(name="my-prompt")
response = await client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[mcp_message(message) for message in prompt.messages],
)
print(response)Konversi resource MCP menjadi blok konten untuk disertakan dalam pesan, atau menjadi objek file untuk diunggah:
from anthropic.lib.tools.mcp import (
mcp_resource_to_content,
mcp_resource_to_file,
)
# Sebagai blok konten dalam sebuah pesan
resource = await mcp_client.read_resource(uri="file:///path/to/doc.txt")
response = await client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[
{
"role": "user",
"content": [
mcp_resource_to_content(resource),
{"type": "text", "text": "Summarize this document"},
],
}
],
)
print(response)
# Sebagai unggahan file
file_resource = await mcp_client.read_resource(
uri="file:///path/to/data.json",
)
uploaded = await client.beta.files.upload(
file=mcp_resource_to_file(file_resource),
)
print(uploaded.id)Fungsi konversi melempar UnsupportedMCPValueError jika nilai MCP tidak didukung oleh Claude API (di Go, helper mengembalikan UnsupportedValueError; di Java dan C#, helper melempar AnthropicInvalidDataException). Ini dapat terjadi dengan tipe konten yang tidak didukung, tipe MIME, atau tautan resource (selesaikan tautan resource dengan klien MCP Anda sebelum mengonversi).
Anda dapat menyertakan mcp_servers dalam permintaan Message Batches API. Pemanggilan alat MCP melalui Batches API dikenakan harga yang sama dengan permintaan Messages API reguler.
Konektor MCP tidak tercakup oleh 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 beta header mcp-client-2025-04-04 yang sudah tidak digunakan lagi, ikuti panduan ini untuk bermigrasi ke versi baru.
mcp-client-2025-04-04 ke mcp-client-2025-11-20tools sebagai objek MCPToolset, bukan dalam definisi server MCPSebelum (tidak digunakan lagi):
{
"model": "claude-opus-5",
"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-5",
"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 |
|---|---|
Tanpa 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 sebelumnya dari konektor MCP 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 digunakan lagi: Gunakan MCPToolset dalam array tools sebagai gantinya |
tool_configuration.enabled | boolean | Tidak digunakan lagi: Gunakan default_config.enabled dalam MCPToolset |
tool_configuration.allowed_tools | array | Tidak digunakan lagi: Gunakan pola daftar izin dengan configs dalam MCPToolset |
| Supported platforms |
|
|---|
Was this page helpful?