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. Vedi la documentazione della versione deprecata di seguito.
This feature is in beta and is not covered by Zero Data Retention (ZDR) arrangements. Beta features are excluded from ZDR.
Il connettore MCP utilizza due componenti:
mcp_servers): Definisce i dettagli della connessione al server (URL, autenticazione)tools): Configura quali strumenti abilitare e come configurarliQuesto esempio abilita tutti gli strumenti da un server MCP con 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 della 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. Vedi la specifica MCP. |
MCPToolset si trova nell'array tools e configura quali strumenti dal 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 di singoli strumenti in configs sovrascriveranno questi valori predefiniti. |
configs | object | No | Override di configurazione per singolo strumento. Le chiavi sono nomi di 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 al modello inizialmente. Utilizzato con Tool Search Tool. |
I valori di configurazione si uniscono con questa precedenza (da più alta a 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
}
}
}Risultati in:
search_events: enabled: false (da configs), defer_loading: true (da default_config)enabled: true (impostazione predefinita del sistema), defer_loading: true (da default_config)Il modello 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 di autorizzazione con 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 convalida:
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 di backend ma non viene restituito alcun errore (i server MCP possono avere disponibilità di strumenti dinamica)Quando Claude utilizza strumenti MCP, la risposta includerà due nuovi tipi di blocco 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. Il beta del connettore MCP supporta il passaggio di un parametro authorization_token nella definizione del server MCP.
I consumatori di 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'ispettore MCP può guidarti attraverso il processo di ottenimento di un token di accesso a scopo di test.
Esegui l'ispettore con il seguente comando. Hai bisogno di Node.js installato sulla tua macchina.
npx @modelcontextprotocol/inspectorNella barra laterale a sinistra, per "Tipo di trasporto", 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'ispettore 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, 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, fai riferimento alla sezione Autorizzazione 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 tipi MCP e tipi API Claude. Ciò 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.
Utilizza il parametro API mcp_servers quando hai server remoti accessibili tramite URL e hai bisogno solo del supporto degli strumenti. Se stai utilizzando l'Agent SDK, le connessioni MCP vengono gestite automaticamente. Utilizza gli helper lato client quando hai bisogno di server locali, prompt, risorse o più 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 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 API Claude per l'uso con client.beta.messages.toolRunner() |
mcpMessages(messages) | Converte i messaggi di prompt MCP nel formato di messaggio API Claude |
mcpResourceToContent(resource) | Converte una risorsa MCP in un blocco di contenuto 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 l'esecuzione dello strumento automaticamente:
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 di messaggio 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 lanciano UnsupportedMCPValueError se un valore MCP non è supportato dall'API Claude. Questo può accadere con tipi di contenuto non supportati, tipi MIME o link di risorse non HTTP.
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
}
}
}
]
}| Modello precedente | Nuovo modello |
|---|---|
Nessun 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. Esegui la migrazione a mcp-client-2025-11-20 utilizzando la guida alla migrazione sopra.
La versione precedente del connettore MCP includeva la configurazione dello strumento 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: Utilizza MCPToolset nell'array tools |
tool_configuration.enabled | boolean | Deprecato: Utilizza default_config.enabled in MCPToolset |
tool_configuration.allowed_tools | array | Deprecato: Utilizza il modello di lista di autorizzazione con configs in MCPToolset |
Was this page helpful?