La funzionalità del connettore Model Context Protocol (MCP) di Claude ti consente di connetterti a server MCP remoti direttamente dall'API Messages senza un client MCP separato.
Versione corrente: Questa funzionalità richiede l'intestazione beta: "anthropic-beta": "mcp-client-2025-11-20"
La versione precedente (mcp-client-2025-04-04) è deprecata. Consulta la documentazione della versione deprecata di seguito.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Il connettore MCP utilizza due componenti:
mcp_servers): Definisce i dettagli di connessione al server (URL, autenticazione)tools): Configura quali strumenti abilitare e come configurarliQuesto esempio abilita tutti gli strumenti da un server MCP con la configurazione predefinita:
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"
}
]
}'Ogni server MCP nell'array mcp_servers definisce i dettagli di connessione:
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Proprietà | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
type | string | Sì | Attualmente è supportato solo "url" |
url | string | Sì | L'URL del server MCP. Deve iniziare con https:// |
name | string | Sì | Un identificatore univoco per questo server MCP. Deve essere referenziato da esattamente un MCPToolset nell'array tools. |
authorization_token | string | No | Token di autorizzazione OAuth se richiesto dal server MCP. Consulta la specifica MCP. |
L'MCPToolset si trova nell'array tools e configura quali strumenti del server MCP sono abilitati e come devono essere configurati.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Proprietà | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
type | string | Sì | Deve essere "mcp_toolset" |
mcp_server_name | string | Sì | Deve corrispondere al nome di un server definito nell'array mcp_servers |
default_config | object | No | Configurazione predefinita applicata a tutti gli strumenti in questo set. Le configurazioni dei singoli strumenti in configs sovrascriveranno queste impostazioni predefinite. |
configs | object | No | Override di configurazione per singolo strumento. Le chiavi sono i nomi degli strumenti, i valori sono oggetti di configurazione. |
cache_control | object | No | Configurazione del punto di interruzione della cache per questo set di strumenti |
Ogni strumento (sia configurato in default_config che in configs) supporta i seguenti campi:
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
enabled | boolean | true | Se questo strumento è abilitato |
defer_loading | boolean | false | Se true, la descrizione dello strumento non viene inviata inizialmente al modello. Utilizzato con Tool Search Tool. |
I valori di configurazione si uniscono con questa precedenza (dalla più alta alla più bassa):
configsdefault_config a livello di setEsempio:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Risulta in:
search_events: enabled: false (da configs), defer_loading: true (da default_config)enabled: true (impostazione predefinita di sistema), defer_loading: true (da default_config)Il pattern più semplice - abilita tutti gli strumenti da un server:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Imposta enabled: false come predefinito, quindi abilita esplicitamente strumenti specifici:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Abilita tutti gli strumenti per impostazione predefinita, quindi disabilita esplicitamente gli strumenti indesiderati:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Combina la lista consentiti con la configurazione personalizzata per ogni strumento:
{
"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
}
}
}In questo esempio:
search_events è abilitato con defer_loading: falselist_events è abilitato con defer_loading: true (ereditato da default_config)L'API applica queste regole di validazione:
mcp_server_name in un MCPToolset deve corrispondere a un server definito nell'array mcp_serversmcp_servers deve essere referenziato da esattamente un MCPToolsetconfigs non esiste sul server MCP, viene registrato un avviso nel backend ma non viene restituito alcun errore (i server MCP possono avere disponibilità dinamica degli strumenti)Quando Claude utilizza gli strumenti MCP, la risposta includerà due nuovi tipi di blocchi di contenuto:
{
"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"
}
]
}Puoi connetterti a più server MCP includendo più definizioni di server in mcp_servers e un MCPToolset corrispondente per ciascuno nell'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
}
}
]
}Per i server MCP che richiedono l'autenticazione OAuth, dovrai ottenere un token di accesso. La beta del connettore MCP supporta il passaggio di un parametro authorization_token nella definizione del server MCP.
I consumatori dell'API devono gestire il flusso OAuth e ottenere il token di accesso prima di effettuare la chiamata API, nonché aggiornare il token secondo necessità.
L'inspector MCP può guidarti nel processo di ottenimento di un token di accesso per scopi di test.
Esegui l'inspector con il seguente comando. È necessario avere Node.js installato sul tuo computer.
npx @modelcontextprotocol/inspectorNella barra laterale a sinistra, per "Transport type", seleziona "SSE" o "Streamable HTTP".
Inserisci l'URL del server MCP.
Nell'area a destra, fai clic sul pulsante "Open Auth Settings" dopo "Need to configure authentication?".
Fai clic su "Quick OAuth Flow" e autorizza nella schermata OAuth.
Segui i passaggi nella sezione "OAuth Flow Progress" dell'inspector e fai clic su "Continue" fino a raggiungere "Authentication complete".
Copia il valore access_token.
Incollalo nel campo authorization_token nella configurazione del tuo server MCP.
Una volta ottenuto un token di accesso utilizzando uno dei flussi OAuth sopra descritti, puoi utilizzarlo nella configurazione del tuo server MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Per spiegazioni dettagliate del flusso OAuth, consulta la sezione Autorizzazione nella specifica MCP.
Se gestisci la tua connessione client MCP (ad esempio, con server stdio locali, prompt MCP o risorse MCP), il TypeScript SDK fornisce funzioni helper che convertono tra i tipi MCP e i tipi dell'API Claude. Questo elimina il codice di conversione manuale quando si utilizza l'MCP SDK insieme all'Anthropic SDK.
Questi helper sono attualmente disponibili solo nel TypeScript SDK.
Usa il parametro API mcp_servers quando hai server remoti accessibili tramite URL e hai bisogno solo del supporto per gli strumenti. Se stai usando l'Agent SDK, le connessioni MCP vengono gestite automaticamente. Usa gli helper lato client quando hai bisogno di server locali, prompt, risorse o maggiore controllo sulla connessione con il base SDK.
Installa sia l'Anthropic SDK che l'MCP SDK:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImporta gli helper dallo spazio dei nomi beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Helper | Descrizione |
|---|---|
mcpTools(tools, mcpClient) | Converte gli strumenti MCP in strumenti dell'API Claude per l'uso con client.beta.messages.toolRunner() |
mcpMessages(messages) | Converte i messaggi di prompt MCP nel formato dei messaggi dell'API Claude |
mcpResourceToContent(resource) | Converte una risorsa MCP in un blocco di contenuto dell'API Claude |
mcpResourceToFile(resource) | Converte una risorsa MCP in un oggetto file per il caricamento |
Converti gli strumenti MCP per l'uso con il tool runner dell'SDK, che gestisce automaticamente l'esecuzione degli strumenti:
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();
// Connect to an MCP server
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// List tools and convert them for the 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)
});Converti i messaggi di prompt MCP nel formato dei messaggi dell'API Claude:
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)
});Converti le risorse MCP in blocchi di contenuto da includere nei messaggi, o in oggetti file per il caricamento:
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// As a content block in a message
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" }
]
}
]
});
// As a file upload
const fileResource = await mcpClient.readResource({ uri: "file:///path/to/data.json" });
await anthropic.beta.files.upload({ file: mcpResourceToFile(fileResource) });Le funzioni di conversione generano UnsupportedMCPValueError se un valore MCP non è supportato dall'API Claude. Ciò può accadere con tipi di contenuto non supportati, tipi MIME o link di risorse non HTTP.
Il connettore MCP non è coperto dagli accordi ZDR. I dati scambiati con i server MCP, incluse le definizioni degli strumenti e i risultati dell'esecuzione, vengono conservati in conformità con la politica di conservazione dei dati standard di Anthropic.
Per l'idoneità ZDR su tutte le funzionalità, consulta API e conservazione dei dati.
Se stai utilizzando l'intestazione beta deprecata mcp-client-2025-04-04, segui questa guida per migrare alla nuova versione.
mcp-client-2025-04-04 a mcp-client-2025-11-20tools come oggetti MCPToolset, non nella definizione del server MCPPrima (deprecato):
{
"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"]
}
}
]
}Dopo (corrente):
{
"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
}
}
}
]
}| Vecchio pattern | Nuovo pattern |
|---|---|
Nessuna tool_configuration (tutti gli strumenti abilitati) | MCPToolset senza default_config o configs |
tool_configuration.enabled: false | MCPToolset con default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset con default_config.enabled: false e strumenti specifici abilitati in configs |
Questa versione è deprecata. Si prega di migrare a mcp-client-2025-11-20 utilizzando la guida alla migrazione sopra.
La versione precedente del connettore MCP includeva la configurazione degli strumenti direttamente nella definizione del 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"]
}
}
]
}| Proprietà | Tipo | Descrizione |
|---|---|---|
tool_configuration | object | Deprecato: Usa MCPToolset nell'array tools invece |
tool_configuration.enabled | boolean | Deprecato: Usa default_config.enabled in MCPToolset |
tool_configuration.allowed_tools | array | Deprecato: Usa il pattern della lista consentiti con configs in MCPToolset |
Was this page helpful?