La fonctionnalité de connecteur Model Context Protocol (MCP) de Claude vous permet de vous connecter à des serveurs MCP distants directement depuis l'API Messages sans client MCP séparé.
Version actuelle : Cette fonctionnalité nécessite l'en-tête bêta : "anthropic-beta": "mcp-client-2025-11-20"
La version précédente (mcp-client-2025-04-04) est dépréciée. Consultez la documentation de la version dépréciée ci-dessous.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
Le connecteur MCP utilise deux composants :
mcp_servers) : Définit les détails de connexion au serveur (URL, authentification)tools) : Configure les outils à activer et comment les configurerCet exemple active tous les outils d'un serveur MCP avec la configuration par défaut :
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"
}
]
}'Chaque serveur MCP dans le tableau mcp_servers définit les détails de connexion :
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Propriété | Type | Requis | Description |
|---|---|---|---|
type | string | Oui | Actuellement, seul "url" est pris en charge |
url | string | Oui | L'URL du serveur MCP. Doit commencer par https:// |
name | string | Oui | Un identifiant unique pour ce serveur MCP. Doit être référencé par exactement un MCPToolset dans le tableau tools. |
authorization_token | string | Non | Jeton d'autorisation OAuth si requis par le serveur MCP. Voir la spécification MCP. |
Le MCPToolset se trouve dans le tableau tools et configure les outils du serveur MCP qui sont activés et comment ils doivent être configurés.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Propriété | Type | Requis | Description |
|---|---|---|---|
type | string | Oui | Doit être "mcp_toolset" |
mcp_server_name | string | Oui | Doit correspondre à un nom de serveur défini dans le tableau mcp_servers |
default_config | object | Non | Configuration par défaut appliquée à tous les outils de cet ensemble. Les configurations d'outils individuels dans configs remplaceront ces valeurs par défaut. |
configs | object | Non | Remplacements de configuration par outil. Les clés sont les noms d'outils, les valeurs sont des objets de configuration. |
cache_control | object | Non | Configuration du point d'arrêt de cache pour cet ensemble d'outils |
Chaque outil (qu'il soit configuré dans default_config ou dans configs) prend en charge les champs suivants :
| Propriété | Type | Par défaut | Description |
|---|---|---|---|
enabled | boolean | true | Si cet outil est activé |
defer_loading | boolean | false | Si vrai, la description de l'outil n'est pas envoyée au modèle initialement. Utilisé avec l'outil de recherche d'outils. |
Les valeurs de configuration fusionnent avec cette priorité (de la plus haute à la plus basse) :
configsdefault_config au niveau de l'ensembleExemple :
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Résultat :
search_events : enabled: false (depuis configs), defer_loading: true (depuis default_config)enabled: true (valeur par défaut du système), defer_loading: true (depuis default_config)Le modèle le plus simple - activer tous les outils d'un serveur :
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Définissez enabled: false comme valeur par défaut, puis activez explicitement des outils spécifiques :
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Activez tous les outils par défaut, puis désactivez explicitement les outils indésirables :
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Combinez la liste d'autorisation avec une configuration personnalisée pour chaque outil :
{
"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
}
}
}Dans cet exemple :
search_events est activé avec defer_loading: falselist_events est activé avec defer_loading: true (hérité de default_config)L'API applique ces règles de validation :
mcp_server_name dans un MCPToolset doit correspondre à un serveur défini dans le tableau mcp_serversmcp_servers doit être référencé par exactement un MCPToolsetconfigs n'existe pas sur le serveur MCP, un avertissement backend est enregistré mais aucune erreur n'est retournée (les serveurs MCP peuvent avoir une disponibilité d'outils dynamique)Lorsque Claude utilise des outils MCP, la réponse inclura deux nouveaux types de blocs de contenu :
{
"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"
}
]
}Vous pouvez vous connecter à plusieurs serveurs MCP en incluant plusieurs définitions de serveurs dans mcp_servers et un MCPToolset correspondant pour chacun dans le tableau 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
}
}
]
}Pour les serveurs MCP qui nécessitent une authentification OAuth, vous devrez obtenir un jeton d'accès. La version bêta du connecteur MCP prend en charge le passage d'un paramètre authorization_token dans la définition du serveur MCP.
Les consommateurs d'API sont censés gérer le flux OAuth et obtenir le jeton d'accès avant d'effectuer l'appel API, ainsi que de rafraîchir le jeton si nécessaire.
L'inspecteur MCP peut vous guider tout au long du processus d'obtention d'un jeton d'accès à des fins de test.
Exécutez l'inspecteur avec la commande suivante. Vous devez avoir Node.js installé sur votre machine.
npx @modelcontextprotocol/inspectorDans la barre latérale gauche, pour "Transport type", sélectionnez "SSE" ou "Streamable HTTP".
Entrez l'URL du serveur MCP.
Dans la zone de droite, cliquez sur le bouton "Open Auth Settings" après "Need to configure authentication?".
Cliquez sur "Quick OAuth Flow" et autorisez sur l'écran OAuth.
Suivez les étapes dans la section "OAuth Flow Progress" de l'inspecteur et cliquez sur "Continue" jusqu'à atteindre "Authentication complete".
Copiez la valeur access_token.
Collez-la dans le champ authorization_token de votre configuration de serveur MCP.
Une fois que vous avez obtenu un jeton d'accès en utilisant le flux OAuth ci-dessus, vous pouvez l'utiliser dans votre configuration de serveur MCP :
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Pour des explications détaillées du flux OAuth, consultez la section Autorisation dans la spécification MCP.
Si vous gérez votre propre connexion client MCP (par exemple, avec des serveurs stdio locaux, des invites MCP ou des ressources MCP), le SDK TypeScript fournit des fonctions d'assistance qui convertissent entre les types MCP et les types de l'API Claude. Cela élimine le code de conversion manuel lors de l'utilisation du SDK MCP avec le SDK Anthropic.
Ces assistants sont actuellement disponibles uniquement dans le SDK TypeScript.
Utilisez le paramètre API mcp_servers lorsque vous avez des serveurs distants accessibles via URL et que vous n'avez besoin que de la prise en charge des outils. Si vous utilisez le SDK Agent, les connexions MCP sont gérées automatiquement. Utilisez les assistants côté client lorsque vous avez besoin de serveurs locaux, d'invites, de ressources ou d'un plus grand contrôle sur la connexion avec le SDK de base.
Installez à la fois le SDK Anthropic et le SDK MCP :
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImportez les assistants depuis l'espace de noms bêta :
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Assistant | Description |
|---|---|
mcpTools(tools, mcpClient) | Convertit les outils MCP en outils de l'API Claude pour une utilisation avec client.beta.messages.toolRunner() |
mcpMessages(messages) | Convertit les messages d'invite MCP au format de message de l'API Claude |
mcpResourceToContent(resource) | Convertit une ressource MCP en bloc de contenu de l'API Claude |
mcpResourceToFile(resource) | Convertit une ressource MCP en objet fichier pour le téléversement |
Convertissez les outils MCP pour une utilisation avec le gestionnaire d'outils du SDK, qui gère automatiquement l'exécution des outils :
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)
});Convertissez les messages d'invite MCP au format de message de l'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)
});Convertissez les ressources MCP en blocs de contenu à inclure dans les messages, ou en objets fichiers pour le téléversement :
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) });Les fonctions de conversion lèvent UnsupportedMCPValueError si une valeur MCP n'est pas prise en charge par l'API Claude. Cela peut se produire avec des types de contenu non pris en charge, des types MIME ou des liens de ressources non HTTP.
Le connecteur MCP n'est pas couvert par les arrangements ZDR. Les données échangées avec les serveurs MCP, y compris les définitions d'outils et les résultats d'exécution, sont conservées conformément à la politique de conservation des données standard d'Anthropic.
Pour l'éligibilité ZDR sur toutes les fonctionnalités, consultez API et conservation des données.
Si vous utilisez l'en-tête bêta déprécié mcp-client-2025-04-04, suivez ce guide pour migrer vers la nouvelle version.
mcp-client-2025-04-04 à mcp-client-2025-11-20tools sous forme d'objets MCPToolset, et non dans la définition du serveur MCPAvant (déprécié) :
{
"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"]
}
}
]
}Après (actuel) :
{
"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
}
}
}
]
}| Ancien modèle | Nouveau modèle |
|---|---|
Pas de tool_configuration (tous les outils activés) | MCPToolset sans default_config ni configs |
tool_configuration.enabled: false | MCPToolset avec default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset avec default_config.enabled: false et des outils spécifiques activés dans configs |
Cette version est dépréciée. Veuillez migrer vers mcp-client-2025-11-20 en utilisant le guide de migration ci-dessus.
La version précédente du connecteur MCP incluait la configuration des outils directement dans la définition du serveur 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"]
}
}
]
}| Propriété | Type | Description |
|---|---|---|
tool_configuration | object | Déprécié : Utilisez MCPToolset dans le tableau tools à la place |
tool_configuration.enabled | boolean | Déprécié : Utilisez default_config.enabled dans MCPToolset |
tool_configuration.allowed_tools | array | Déprécié : Utilisez le modèle de liste d'autorisation avec configs dans MCPToolset |
Was this page helpful?