La fonctionnalité de connecteur « Model Context Protocol », ou MCP, de Claude vous permet de vous connecter à des serveurs MCP distants directement depuis l'API Messages sans client MCP distinct.
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 obsolète. Consultez Version obsolète : mcp-client-2025-04-04.
Cette fonctionnalité n'est pas éligible à la Zero Data Retention (ZDR). Les données sont conservées conformément à la politique de conservation standard de la fonctionnalité.
Une fois qu'un serveur MCP est connecté, Claude appelle ses outils lorsque la requête de l'utilisateur correspond à une capacité décrite d'un outil, que ce soit explicitement (« recherche les bugs ouverts dans Jira ») ou implicitement (« qu'est-ce qui bloque la release ? » avec un serveur Jira attaché).
Claude n'appelle pas d'outil MCP pour des questions de connaissances générales concernant un service connecté. Demander « comment fonctionnent les bases de données Notion ? » avec un serveur Notion attaché reçoit une réponse directe ; demander « qu'y a-t-il dans ma base de données Projects ? » déclenche l'outil.
Vous pouvez orienter la propension de Claude à appeler les outils MCP via votre invite système. Consultez Quand Claude utilise les outils pour des conseils généraux et des exemples de formulations.
Le connecteur MCP utilise deux composants :
mcp_servers) : Définit les détails de connexion au serveur (URL, authentification)tools) : Configure quels outils activer et comment les configurerCet exemple active tous les outils d'un serveur MCP avec la configuration par défaut :
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)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. Consultez la spécification MCP. |
Le MCPToolset se trouve dans le tableau tools et configure quels outils du serveur MCP 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 individuelles dans configs remplacent ces valeurs par défaut. |
configs | object | Non | Remplacements de configuration par outil. Les clés sont des noms d'outils, les valeurs sont des objets de configuration. |
cache_control | object | Non | Configuration du point d'arrêt de cache pour la mise en cache des prompts pour ce toolset. |
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 | Indique si cet outil est activé. |
defer_loading | boolean | false | Si true, la description de l'outil n'est pas envoyée au modèle initialement. Utilisé avec l'outil de recherche d'outils. |
Pour le répertoire complet des outils fournis par Anthropic et les propriétés optionnelles telles que defer_loading, consultez la Référence des outils. Pour effectuer des recherches dans de grands ensembles d'outils, consultez l'outil de recherche d'outils.
Les valeurs de configuration fusionnent selon cet ordre de 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. Il est recommandé de placer les outils d'écriture ou destructifs sur une liste de refus lors de la création d'assistants en lecture seule, ou lorsque vous souhaitez une étape de confirmation humaine avant les changements d'état :
{
"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 renvoyée (les serveurs MCP peuvent avoir une disponibilité d'outils dynamique)Lorsque Claude utilise des outils MCP, la réponse inclut 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 serveur dans mcp_servers et un MCPToolset correspondant pour chacun dans le tableau 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
}
}
]
}Avec de nombreux outils disponibles, Claude effectue sa sélection en fonction des noms et descriptions des outils. Des descriptions d'outils claires et spécifiques améliorent la précision de la sélection. Pour les grands ensembles d'outils (des dizaines d'outils répartis sur plusieurs serveurs), envisagez d'activer defer_loading avec l'outil de recherche d'outils afin que seuls les outils pertinents soient présentés pour chaque requête.
Pour les serveurs MCP qui nécessitent une authentification OAuth, vous devrez obtenir un jeton d'accès. La 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 de l'API doivent gérer le flux OAuth et obtenir le jeton d'accès avant d'effectuer l'appel API, et actualiser le jeton si nécessaire.
L'inspecteur MCP peut vous guider dans le processus d'obtention d'un jeton d'accès à des fins de test.
Exécutez l'inspecteur avec la commande suivante. Node.js doit être installé sur votre machine.
npx @modelcontextprotocol/inspectorDans la barre latérale de gauche, pour « Transport type », sélectionnez « SSE » ou « Streamable HTTP ».
Saisissez 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 de 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 à l'aide de l'un des flux OAuth précédents, 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 sur le flux OAuth, consultez la section Authorization de la spécification MCP.
Si vous gérez votre propre connexion client MCP (par exemple, avec des serveurs stdio locaux, des prompts MCP ou des ressources MCP), les SDK fournissent des fonctions d'aide qui effectuent la conversion entre les types MCP et les types de l'API Claude. Cela élimine le code de conversion manuel lors de l'utilisation d'un SDK MCP (tel que le SDK MCP TypeScript) conjointement avec le SDK Anthropic.
Ces fonctions d'aide sont disponibles dans les SDK Python, TypeScript, Java, Go, Ruby et PHP. Elles ne sont pas encore disponibles dans le SDK C#. Les exemples de cette section utilisent TypeScript ; dans les autres langages, importez les fonctions d'aide équivalentes depuis :
anthropic.lib.tools.mcp (installez avec pip install anthropic[mcp])com.anthropic.mcp.BetaMcp dans le module anthropic-java-mcpgithub.com/anthropics/anthropic-sdk-go/mcpAnthropic::Mcp (nécessite la gem mcp)Anthropic\Lib\Tools\BetaMcpUtilisez le paramètre API mcp_servers lorsque vous disposez de serveurs distants accessibles par URL et que vous n'avez besoin que de la prise en charge des outils. Utilisez les fonctions d'aide côté client lorsque vous avez besoin de serveurs locaux, de prompts, de ressources ou d'un contrôle accru 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 fonctions d'aide depuis l'espace de noms bêta :
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Fonction d'aide | 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 de prompt 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 tool runner du SDK, qui gère automatiquement l'exécution des outils :
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();
// Se connecter à un serveur MCP
const transport = new StdioClientTransport({ command: "mcp-server", args: [] });
const mcpClient = new Client({ name: "my-client", version: "1.0.0" });
await mcpClient.connect(transport);
// Lister les outils et les convertir pour l'API 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);Convertissez les messages de prompt 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-opus-4-8",
max_tokens: 1024,
messages: mcpMessages(messages)
});
console.log(response);Convertissez les ressources MCP en blocs de contenu à inclure dans les messages, ou en objets fichier pour le téléversement :
import { mcpResourceToContent, mcpResourceToFile } from "@anthropic-ai/sdk/helpers/beta/mcp";
// En tant que bloc de contenu dans un message
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" }
]
}
]
});
// En tant que fichier téléversé
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 une erreur 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 non pris en charge ou des liens de ressources non HTTP.
Vous pouvez inclure mcp_servers dans les requêtes de l'API Message Batches. Les appels d'outils MCP via l'API Batches sont facturés au même tarif que ceux des requêtes régulières de l'API Messages.
Le connecteur MCP n'est pas couvert par les accords 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 standard de conservation des données d'Anthropic.
Pour l'éligibilité ZDR de toutes les fonctionnalités, consultez API et conservation des données.
Si vous utilisez l'en-tête bêta obsolète 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 (obsolète) :
{
"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"]
}
}
]
}Après (actuel) :
{
"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
}
}
}
]
}| 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 obsolète. Migrez vers mcp-client-2025-11-20 en utilisant le guide de migration précédent.
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 | Obsolète : Utilisez MCPToolset dans le tableau tools à la place |
tool_configuration.enabled | boolean | Obsolète : Utilisez default_config.enabled dans MCPToolset |
tool_configuration.allowed_tools | array | Obsolète : Utilisez le modèle de liste d'autorisation avec configs dans MCPToolset |
Was this page helpful?