La funzionalità del connettore "Model Context Protocol", o MCP, di Claude ti consente di connetterti a server MCP remoti direttamente dalla Messages API senza un client MCP separato.
Versione corrente: Questa funzionalità richiede l'header beta: "anthropic-beta": "mcp-client-2025-11-20"
La versione precedente (mcp-client-2025-04-04) è deprecata. Consulta Versione deprecata: mcp-client-2025-04-04.
Questa funzionalità non è idonea per Zero Data Retention (ZDR). I dati vengono conservati secondo la politica di conservazione standard della funzionalità.
Una volta connesso un server MCP, Claude chiama i suoi strumenti quando la richiesta dell'utente corrisponde a una capacità descritta di uno strumento, sia esplicitamente ("cerca su Jira i bug aperti") sia implicitamente ("cosa sta bloccando il rilascio?" con un server Jira collegato).
Claude non chiama uno strumento MCP per domande di conoscenza generale su un servizio connesso. Chiedere "come funzionano i database di Notion?" con un server Notion collegato riceve una risposta diretta; chiedere "cosa c'è nel mio database Projects?" attiva lo strumento.
Puoi orientare la propensione di Claude a chiamare gli strumenti MCP tramite il tuo prompt di sistema. Consulta Quando Claude utilizza gli strumenti per indicazioni generali ed esempi di formulazione.
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 di un server MCP con la configurazione predefinita:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-8",
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)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 risiede 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 a un nome di 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 sovrascrivono questi valori predefiniti. |
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 breakpoint di cache per la cache dei prompt per questo toolset. |
Ogni strumento (sia configurato in default_config che in configs) supporta i seguenti campi:
| Proprietà | Tipo | Predefinito | Descrizione |
|---|---|---|---|
enabled | boolean | true | Indica se questo strumento è abilitato. |
defer_loading | boolean | false | Se true, la descrizione dello strumento non viene inviata inizialmente al modello. Utilizzato con lo strumento Tool search. |
Per la directory completa degli strumenti forniti da Anthropic e le proprietà opzionali come defer_loading, consulta il Riferimento degli strumenti. Per la ricerca su grandi set di strumenti, consulta lo strumento Tool search.
I valori di configurazione vengono uniti 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
}
}
}Risultato:
search_events: enabled: false (da configs), defer_loading: true (da default_config)enabled: true (predefinito di sistema), defer_loading: true (da default_config)Il pattern più semplice: abilita tutti gli strumenti di 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. Escludere tramite denylist gli strumenti di scrittura o distruttivi è consigliato quando si creano assistenti di sola lettura, o quando si desidera un passaggio di conferma umana prima delle modifiche di stato:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Combina l'allowlist con una 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 include 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-8",
"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
}
}
]
}Con molti strumenti disponibili, Claude seleziona in base ai nomi e alle descrizioni degli strumenti. Descrizioni chiare e specifiche degli strumenti migliorano l'accuratezza della selezione. Per grandi set di strumenti (decine di strumenti su più server), considera di abilitare defer_loading con lo strumento Tool search in modo che vengano mostrati solo gli strumenti rilevanti per ogni query.
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, e aggiornare il token secondo necessità.
L'MCP inspector può guidarti attraverso il processo di ottenimento di un token di accesso a scopo di test.
Esegui l'inspector con il seguente comando. Devi avere Node.js installato sulla tua macchina.
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 precedenti, 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 Authorization nella specifica MCP.
Se gestisci la tua connessione client MCP (ad esempio, con server stdio locali, prompt MCP o risorse MCP), l'SDK TypeScript fornisce funzioni helper che convertono tra i tipi MCP e i tipi della Claude API. Questo elimina il codice di conversione manuale quando si utilizza l'SDK MCP insieme all'SDK Anthropic.
Questi helper sono attualmente disponibili solo nell'SDK TypeScript.
Usa il parametro API mcp_servers quando hai server remoti accessibili tramite URL e hai bisogno solo del supporto per gli strumenti. Usa gli helper lato client quando hai bisogno di server locali, prompt, risorse o maggiore controllo sulla connessione con l'SDK di base.
Installa sia l'SDK Anthropic che l'SDK MCP:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImporta gli helper dal namespace beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Helper | Descrizione |
|---|---|
mcpTools(tools, mcpClient) | Converte gli strumenti MCP in strumenti della Claude API per l'uso con client.beta.messages.toolRunner() |
mcpMessages(messages) | Converte i messaggi di prompt MCP nel formato dei messaggi della Claude API |
mcpResourceToContent(resource) | Converte una risorsa MCP in un blocco di contenuto della Claude API |
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 { 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();
// Connettiti a un 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);
// Elenca gli strumenti e convertili per l'API di Claude
const { tools } = await mcpClient.listTools();
const finalMessage = await anthropic.beta.messages.toolRunner({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [{ role: "user", content: "What tools do you have available?" }],
tools: mcpTools(tools, mcpClient)
});
console.log(finalMessage);Converti i messaggi di prompt MCP nel formato dei messaggi della 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-opus-4-8",
max_tokens: 1024,
messages: mcpMessages(messages)
});
console.log(response);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";
// Come blocco di contenuto in un messaggio
const resource = await mcpClient.readResource({ uri: "file:///path/to/doc.txt" });
await anthropic.beta.messages.create({
model: "claude-opus-4-8",
max_tokens: 1024,
messages: [
{
role: "user",
content: [
mcpResourceToContent(resource),
{ type: "text", text: "Summarize this document" }
]
}
]
});
// Come caricamento di file
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 dalla Claude API. Questo può accadere con tipi di contenuto non supportati, tipi MIME o link a risorse non HTTP.
Puoi includere mcp_servers nelle richieste della Message Batches API. Le chiamate agli strumenti MCP tramite la Batches API hanno lo stesso prezzo di quelle nelle normali richieste della Messages API.
Il connettore MCP non è coperto dagli accordi ZDR. I dati scambiati con i server MCP, incluse le definizioni degli strumenti e i risultati di esecuzione, vengono conservati secondo la politica standard di conservazione dei dati di Anthropic.
Per l'idoneità ZDR su tutte le funzionalità, consulta API e conservazione dei dati.
Se stai utilizzando l'header beta deprecato 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-8",
"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-8",
"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. Migra a mcp-client-2025-11-20 utilizzando la guida alla migrazione precedente.
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 invece MCPToolset nell'array tools |
tool_configuration.enabled | boolean | Deprecato: Usa default_config.enabled in MCPToolset |
tool_configuration.allowed_tools | array | Deprecato: Usa il pattern allowlist con configs in MCPToolset |
Was this page helpful?