La función de conector del Protocolo de Contexto de Modelo (MCP) de Claude te permite conectarte a servidores MCP remotos directamente desde la API de Mensajes sin un cliente MCP separado.
Versión actual: Esta función requiere el encabezado beta: "anthropic-beta": "mcp-client-2025-11-20"
La versión anterior (mcp-client-2025-04-04) está obsoleta. Consulta la documentación de la versión obsoleta a continuación.
This feature is not eligible for Zero Data Retention (ZDR). Data is retained according to the feature's standard retention policy.
El conector MCP utiliza dos componentes:
mcp_servers): Define los detalles de conexión del servidor (URL, autenticación)tools): Configura qué herramientas habilitar y cómo configurarlasEste ejemplo habilita todas las herramientas de un servidor MCP con la configuración predeterminada:
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"
}
]
}'Cada servidor MCP en el array mcp_servers define los detalles de conexión:
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "example-mcp",
"authorization_token": "YOUR_TOKEN"
}| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
type | string | Sí | Actualmente solo se admite "url" |
url | string | Sí | La URL del servidor MCP. Debe comenzar con https:// |
name | string | Sí | Un identificador único para este servidor MCP. Debe ser referenciado por exactamente un MCPToolset en el array tools. |
authorization_token | string | No | Token de autorización OAuth si es requerido por el servidor MCP. Consulta la especificación MCP. |
El MCPToolset vive en el array tools y configura qué herramientas del servidor MCP están habilitadas y cómo deben configurarse.
{
"type": "mcp_toolset",
"mcp_server_name": "example-mcp",
"default_config": {
"enabled": true,
"defer_loading": false
},
"configs": {
"specific_tool_name": {
"enabled": true,
"defer_loading": true
}
}
}| Propiedad | Tipo | Requerido | Descripción |
|---|---|---|---|
type | string | Sí | Debe ser "mcp_toolset" |
mcp_server_name | string | Sí | Debe coincidir con un nombre de servidor definido en el array mcp_servers |
default_config | object | No | Configuración predeterminada aplicada a todas las herramientas en este conjunto. Las configuraciones individuales de herramientas en configs anularán estos valores predeterminados. |
configs | object | No | Anulaciones de configuración por herramienta. Las claves son nombres de herramientas, los valores son objetos de configuración. |
cache_control | object | No | Configuración de punto de interrupción de caché para este conjunto de herramientas |
Cada herramienta (ya sea configurada en default_config o en configs) admite los siguientes campos:
| Propiedad | Tipo | Predeterminado | Descripción |
|---|---|---|---|
enabled | boolean | true | Si esta herramienta está habilitada |
defer_loading | boolean | false | Si es verdadero, la descripción de la herramienta no se envía al modelo inicialmente. Se usa con Tool Search Tool. |
Los valores de configuración se fusionan con esta precedencia (de mayor a menor):
configsdefault_config a nivel de conjuntoEjemplo:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"defer_loading": true
},
"configs": {
"search_events": {
"enabled": false
}
}
}Resulta en:
search_events: enabled: false (de configs), defer_loading: true (de default_config)enabled: true (valor predeterminado del sistema), defer_loading: true (de default_config)El patrón más simple: habilitar todas las herramientas de un servidor:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp"
}Establece enabled: false como predeterminado, luego habilita explícitamente herramientas específicas:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"default_config": {
"enabled": false
},
"configs": {
"search_events": {
"enabled": true
},
"create_event": {
"enabled": true
}
}
}Habilita todas las herramientas de forma predeterminada, luego deshabilita explícitamente las herramientas no deseadas:
{
"type": "mcp_toolset",
"mcp_server_name": "google-calendar-mcp",
"configs": {
"delete_all_events": {
"enabled": false
},
"share_calendar_publicly": {
"enabled": false
}
}
}Combina la lista de permitidos con configuración personalizada para cada herramienta:
{
"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
}
}
}En este ejemplo:
search_events está habilitado con defer_loading: falselist_events está habilitado con defer_loading: true (heredado de default_config)La API aplica estas reglas de validación:
mcp_server_name en un MCPToolset debe coincidir con un servidor definido en el array mcp_serversmcp_servers debe ser referenciado por exactamente un MCPToolsetconfigs no existe en el servidor MCP, se registra una advertencia en el backend pero no se devuelve ningún error (los servidores MCP pueden tener disponibilidad de herramientas dinámica)Cuando Claude usa herramientas MCP, la respuesta incluirá dos nuevos tipos de bloques de contenido:
{
"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"
}
]
}Puedes conectarte a múltiples servidores MCP incluyendo múltiples definiciones de servidor en mcp_servers y un MCPToolset correspondiente para cada uno en el 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
}
}
]
}Para los servidores MCP que requieren autenticación OAuth, necesitarás obtener un token de acceso. La versión beta del conector MCP admite pasar un parámetro authorization_token en la definición del servidor MCP.
Se espera que los consumidores de la API gestionen el flujo OAuth y obtengan el token de acceso antes de realizar la llamada a la API, así como actualizar el token según sea necesario.
El inspector MCP puede guiarte a través del proceso de obtención de un token de acceso para propósitos de prueba.
Ejecuta el inspector con el siguiente comando. Necesitas tener Node.js instalado en tu máquina.
npx @modelcontextprotocol/inspectorEn la barra lateral izquierda, para "Transport type", selecciona "SSE" o "Streamable HTTP".
Ingresa la URL del servidor MCP.
En el área derecha, haz clic en el botón "Open Auth Settings" después de "Need to configure authentication?".
Haz clic en "Quick OAuth Flow" y autoriza en la pantalla de OAuth.
Sigue los pasos en la sección "OAuth Flow Progress" del inspector y haz clic en "Continue" hasta llegar a "Authentication complete".
Copia el valor de access_token.
Pégalo en el campo authorization_token en la configuración de tu servidor MCP.
Una vez que hayas obtenido un token de acceso usando cualquiera de los flujos OAuth anteriores, puedes usarlo en la configuración de tu servidor MCP:
{
"mcp_servers": [
{
"type": "url",
"url": "https://example-server.modelcontextprotocol.io/sse",
"name": "authenticated-server",
"authorization_token": "YOUR_ACCESS_TOKEN_HERE"
}
]
}Para explicaciones detalladas del flujo OAuth, consulta la sección de Autorización en la especificación MCP.
Si gestionas tu propia conexión de cliente MCP (por ejemplo, con servidores stdio locales, prompts MCP o recursos MCP), el SDK de TypeScript proporciona funciones auxiliares que convierten entre tipos MCP y tipos de la API de Claude. Esto elimina el código de conversión manual cuando se usa el SDK de MCP junto con el SDK de Anthropic.
Estos helpers están disponibles actualmente solo en el SDK de TypeScript.
Usa el parámetro de API mcp_servers cuando tengas servidores remotos accesibles mediante URL y solo necesites soporte de herramientas. Si estás usando el SDK de Agente, las conexiones MCP se gestionan automáticamente. Usa los helpers del lado del cliente cuando necesites servidores locales, prompts, recursos o más control sobre la conexión con el SDK base.
Instala tanto el SDK de Anthropic como el SDK de MCP:
npm install @anthropic-ai/sdk @modelcontextprotocol/sdkImporta los helpers desde el espacio de nombres beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile
} from "@anthropic-ai/sdk/helpers/beta/mcp";| Helper | Descripción |
|---|---|
mcpTools(tools, mcpClient) | Convierte herramientas MCP a herramientas de la API de Claude para usar con client.beta.messages.toolRunner() |
mcpMessages(messages) | Convierte mensajes de prompt MCP al formato de mensaje de la API de Claude |
mcpResourceToContent(resource) | Convierte un recurso MCP a un bloque de contenido de la API de Claude |
mcpResourceToFile(resource) | Convierte un recurso MCP a un objeto de archivo para subir |
Convierte herramientas MCP para usar con el ejecutor de herramientas del SDK, que maneja la ejecución de herramientas automáticamente:
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)
});Convierte mensajes de prompt MCP al formato de mensaje de la API de 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)
});Convierte recursos MCP en bloques de contenido para incluir en mensajes, o en objetos de archivo para subir:
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) });Las funciones de conversión lanzan UnsupportedMCPValueError si un valor MCP no es compatible con la API de Claude. Esto puede ocurrir con tipos de contenido no admitidos, tipos MIME o enlaces de recursos que no son HTTP.
El Conector MCP no está cubierto por los acuerdos ZDR. Los datos intercambiados con servidores MCP, incluidas las definiciones de herramientas y los resultados de ejecución, se retienen de acuerdo con la política estándar de retención de datos de Anthropic.
Para la elegibilidad ZDR en todas las funciones, consulta API y Retención de Datos.
Si estás usando el encabezado beta obsoleto mcp-client-2025-04-04, sigue esta guía para migrar a la nueva versión.
mcp-client-2025-04-04 a mcp-client-2025-11-20tools como objetos MCPToolset, no en la definición del servidor MCPAntes (obsoleto):
{
"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"]
}
}
]
}Después (actual):
{
"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
}
}
}
]
}| Patrón antiguo | Patrón nuevo |
|---|---|
Sin tool_configuration (todas las herramientas habilitadas) | MCPToolset sin default_config ni configs |
tool_configuration.enabled: false | MCPToolset con default_config.enabled: false |
tool_configuration.allowed_tools: [...] | MCPToolset con default_config.enabled: false y herramientas específicas habilitadas en configs |
Esta versión está obsoleta. Por favor, migra a mcp-client-2025-11-20 usando la guía de migración anterior.
La versión anterior del conector MCP incluía la configuración de herramientas directamente en la definición del servidor 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"]
}
}
]
}| Propiedad | Tipo | Descripción |
|---|---|---|
tool_configuration | object | Obsoleto: Usa MCPToolset en el array tools en su lugar |
tool_configuration.enabled | boolean | Obsoleto: Usa default_config.enabled en MCPToolset |
tool_configuration.allowed_tools | array | Obsoleto: Usa el patrón de lista de permitidos con configs en MCPToolset |
Was this page helpful?