La característica del conector del Protocolo de Contexto de Modelo (MCP) de Claude te permite conectarte a servidores MCP remotos directamente desde la API de Mensajes sin necesidad de un cliente MCP separado.
Versión actual: Esta característica requiere el encabezado beta: "anthropic-beta": "mcp-client-2025-11-20"
La versión anterior (mcp-client-2025-04-04) está deprecada. Consulta la documentación de la versión deprecada a continuación.
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 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 de herramientas individuales 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 del 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 utiliza con Herramienta de búsqueda de herramientas. |
Los valores de configuración se fusionan con esta precedencia (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: habilita 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 lista blanca 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á habilitada con defer_loading: falselist_events está habilitada con defer_loading: true (heredada 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 de backend pero no se devuelve ningún error (los servidores MCP pueden tener disponibilidad de herramientas dinámica)Cuando Claude utiliza 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 servidores MCP que requieren autenticación OAuth, necesitarás obtener un token de acceso. El beta del conector MCP admite pasar un parámetro authorization_token en la definición del servidor MCP.
Se espera que los consumidores de API manejen el flujo OAuth y obtengan el token de acceso antes de hacer 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 a la izquierda, para "Tipo de transporte", selecciona "SSE" o "HTTP transmisible".
Ingresa la URL del servidor MCP.
En el área derecha, haz clic en el botón "Abrir configuración de autenticación" después de "¿Necesitas configurar la autenticación?".
Haz clic en "Flujo OAuth rápido" y autoriza en la pantalla de OAuth.
Sigue los pasos en la sección "Progreso del flujo OAuth" del inspector y haz clic en "Continuar" hasta que llegues a "Autenticación completada".
Copia el valor de access_token.
Pégalo en el campo authorization_token en tu configuración del servidor MCP.
Una vez que hayas obtenido un token de acceso usando cualquiera de los flujos de OAuth anteriores, puedes usarlo en tu configuración del 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 de OAuth, consulta la sección de autorización en la especificación MCP.
Si administras tu propia conexión de cliente MCP (por ejemplo, con servidores stdio locales, indicaciones MCP o recursos MCP), el SDK de TypeScript proporciona funciones auxiliares que convierten entre tipos MCP y tipos de 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 ayudantes están disponibles actualmente solo en el SDK de TypeScript.
Usa el parámetro de API mcp_servers cuando tengas servidores remotos accesibles a través de URL y solo necesites soporte de herramientas. Si estás usando el SDK de agente, las conexiones MCP se administran automáticamente. Usa los ayudantes del lado del cliente cuando necesites servidores locales, indicaciones, 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 ayudantes desde el espacio de nombres beta:
import {
mcpTools,
mcpMessages,
mcpResourceToContent,
mcpResourceToFile,
} from '@anthropic-ai/sdk/helpers/beta/mcp';| Ayudante | Descripción |
|---|---|
mcpTools(tools, mcpClient) | Convierte herramientas MCP a herramientas de API de Claude para usar con client.beta.messages.toolRunner() |
mcpMessages(messages) | Convierte mensajes de indicación MCP al formato de mensaje de API de Claude |
mcpResourceToContent(resource) | Convierte un recurso MCP a un bloque de contenido de API de Claude |
mcpResourceToFile(resource) | Convierte un recurso MCP a un objeto de archivo para cargar |
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-5',
max_tokens: 1024,
messages: [{ role: 'user', content: 'What tools do you have available?' }],
tools: mcpTools(tools, mcpClient),
});Convierte mensajes de indicación MCP al formato de mensaje de 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-5',
max_tokens: 1024,
messages: mcpMessages(messages),
});Convierte recursos MCP en bloques de contenido para incluir en mensajes, o en objetos de archivo para cargar:
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-5',
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 compatibles, tipos MIME o enlaces de recursos que no sean HTTP.
Si estás usando el encabezado beta deprecado 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 (deprecado):
{
"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 o 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á deprecada. 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 | Deprecado: Usa MCPToolset en el array tools en su lugar |
tool_configuration.enabled | boolean | Deprecado: Usa default_config.enabled en MCPToolset |
tool_configuration.allowed_tools | array | Deprecado: Usa patrón de lista blanca con configs en MCPToolset |
Was this page helpful?