Claude Platform Docs
MessagesMCP

Conector MCP

Conéctate a servidores MCP remotos directamente desde la API de Messages sin un cliente MCP, y permite, bloquea o configura herramientas individuales.

La función de conector de Model Context Protocol (MCP) de Claude te permite conectarte a servidores MCP remotos directamente desde la API de Messages sin un cliente MCP separado.

Características principales

  • Integración directa con la API: Conéctate a servidores MCP sin implementar un cliente MCP
  • Soporte para llamadas a herramientas: Accede a herramientas MCP a través de la API de Messages
  • Configuración flexible de herramientas: Habilita todas las herramientas, permite herramientas específicas mediante una lista de permitidos (allowlist) o bloquea herramientas no deseadas mediante una lista de bloqueados (denylist)
  • Configuración por herramienta: Configura herramientas individuales con ajustes personalizados
  • Autenticación OAuth: Soporte para tokens Bearer de OAuth para servidores autenticados
  • Múltiples servidores: Conéctate a múltiples servidores MCP en una sola solicitud

Cuándo Claude usa herramientas MCP

Una vez que un servidor MCP está conectado, Claude llama a sus herramientas cuando la solicitud del usuario corresponde a la capacidad descrita de una herramienta, ya sea explícitamente ("busca en Jira los bugs abiertos") o implícitamente ("¿qué está bloqueando el lanzamiento?" con un servidor de Jira conectado).

Claude no llama a una herramienta MCP para preguntas de conocimiento general sobre un servicio conectado. Preguntar "¿cómo funcionan las bases de datos de Notion?" con un servidor de Notion conectado se responde directamente; preguntar "¿qué hay en mi base de datos Projects?" activa la herramienta.

Puedes orientar la disposición de Claude a llamar herramientas MCP a través de tu "system prompt" (indicación del sistema). Consulta Cuándo Claude usa herramientas para obtener orientación general y ejemplos de redacción.

Limitaciones

  • Del conjunto de funciones de la especificación de MCP, actualmente solo se admiten las llamadas a herramientas.
  • El servidor debe estar expuesto públicamente a través de HTTP (admite tanto los transportes Streamable HTTP como SSE). Los servidores STDIO locales no se pueden conectar directamente.

Uso del conector MCP en la API de Messages

El conector MCP usa dos componentes:

  1. Definición del servidor MCP (array mcp_servers): Define los detalles de conexión del servidor (URL, autenticación)
  2. Conjunto de herramientas MCP (array tools): Configura qué herramientas habilitar y cómo configurarlas

Ejemplo básico

Este ejemplo habilita todas las herramientas de un servidor MCP con la configuración predeterminada:

client = anthropic.Anthropic()

response = client.beta.messages.create(
    model="claude-opus-5",
    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)

Configuración del servidor 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"
}

Descripciones de los campos

PropiedadTipoRequeridoDescripción
typestringActualmente solo se admite "url".
urlstringLa URL del servidor MCP. Debe comenzar con https://.
namestringUn identificador único para este servidor MCP. Debe ser referenciado por exactamente un MCPToolset en el array tools.
authorization_tokenstringNoToken de autorización OAuth si el servidor MCP lo requiere. Consulta Autenticación para saber cómo obtener uno, o la especificación de MCP para los detalles del protocolo.

Configuración del conjunto de herramientas MCP

El MCPToolset se encuentra en el array tools y configura qué herramientas del servidor MCP están habilitadas y cómo deben configurarse.

Estructura básica

{
  "type": "mcp_toolset",
  "mcp_server_name": "example-mcp",
  "default_config": {
    "enabled": true,
    "defer_loading": false
  },
  "configs": {
    "specific_tool_name": {
      "enabled": true,
      "defer_loading": true
    }
  }
}

Descripciones de los campos

PropiedadTipoRequeridoDescripción
typestringDebe ser "mcp_toolset".
mcp_server_namestringDebe coincidir con un nombre de servidor definido en el array mcp_servers.
default_configobjectNoConfiguración predeterminada aplicada a todas las herramientas de este conjunto. Las configuraciones individuales de herramientas en configs anulan estos valores predeterminados.
configsobjectNoAnulaciones de configuración por herramienta. Las claves son nombres de herramientas, los valores son objetos de configuración.
cache_controlobjectNoConfiguración del punto de interrupción de caché de almacenamiento en caché de prompts para este conjunto de herramientas.

Opciones de configuración de herramientas

Cada herramienta (ya sea configurada en default_config o en configs) admite los siguientes campos:

PropiedadTipoPredeterminadoDescripción
enabledbooleantrueSi esta herramienta está habilitada.
defer_loadingbooleanfalseSi es true, la descripción de la herramienta no se envía al modelo inicialmente. Se usa con la herramienta de búsqueda de herramientas.

Para ver el directorio completo de herramientas proporcionadas por Anthropic y propiedades opcionales como defer_loading, consulta la Referencia de herramientas. Para buscar en conjuntos grandes de herramientas, consulta la herramienta de búsqueda de herramientas.

Combinación de configuraciones

Los valores de configuración se combinan con esta precedencia (de mayor a menor):

  1. Ajustes específicos de la herramienta en configs
  2. default_config a nivel de conjunto
  3. Valores predeterminados del sistema

Ejemplo:

{
  "type": "mcp_toolset",
  "mcp_server_name": "google-calendar-mcp",
  "default_config": {
    "defer_loading": true
  },
  "configs": {
    "search_events": {
      "enabled": false
    }
  }
}

Da como resultado:

  • search_events: enabled: false (de configs), defer_loading: true (de default_config)
  • Todas las demás herramientas: enabled: true (predeterminado del sistema), defer_loading: true (de default_config)

Patrones de configuración comunes

Habilitar todas las herramientas con la configuración predeterminada

El patrón más simple: habilitar todas las herramientas de un servidor:

{
  "type": "mcp_toolset",
  "mcp_server_name": "google-calendar-mcp"
}

Lista de permitidos: habilitar solo herramientas específicas

Establece enabled: false como valor predeterminado y 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
    }
  }
}

Lista de bloqueados: deshabilitar herramientas específicas

Habilita todas las herramientas de forma predeterminada y luego deshabilita explícitamente las herramientas no deseadas. Se recomienda bloquear las herramientas de escritura o destructivas al crear asistentes de solo lectura, o cuando quieras un paso de confirmación humana antes de los cambios de estado:

{
  "type": "mcp_toolset",
  "mcp_server_name": "google-calendar-mcp",
  "configs": {
    "delete_all_events": {
      "enabled": false
    },
    "share_calendar_publicly": {
      "enabled": false
    }
  }
}

Mixto: lista de permitidos con configuración por herramienta

Combina la lista de permitidos con una 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: false
  • list_events está habilitada con defer_loading: true (heredado de default_config)
  • Todas las demás herramientas están deshabilitadas

Reglas de validación

La API aplica estas reglas de validación:

  • El servidor debe existir: El mcp_server_name en un MCPToolset debe coincidir con un servidor definido en el array mcp_servers
  • El servidor debe usarse: Cada servidor MCP definido en mcp_servers debe ser referenciado por exactamente un MCPToolset
  • Conjunto de herramientas único por servidor: Cada servidor MCP solo puede ser referenciado por un MCPToolset
  • Nombres de herramientas desconocidos: Si un nombre de herramienta en configs 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 dinámica de herramientas)

Tipos de contenido de respuesta

Cuando Claude usa herramientas MCP, la respuesta incluye dos nuevos tipos de bloques de contenido:

Bloque de uso de herramienta MCP

{
  "type": "mcp_tool_use",
  "id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
  "name": "echo",
  "server_name": "example-mcp",
  "input": { "param1": "value1", "param2": "value2" }
}

Bloque de resultado de herramienta MCP

{
  "type": "mcp_tool_result",
  "tool_use_id": "mcptoolu_014Q35RayjACSWkSj4X2yov1",
  "is_error": false,
  "content": [
    {
      "type": "text",
      "text": "Hello"
    }
  ]
}

Múltiples servidores MCP

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-5",
  "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
      }
    }
  ]
}

Con muchas herramientas disponibles, Claude selecciona basándose en los nombres y descripciones de las herramientas. Las descripciones de herramientas claras y específicas mejoran la precisión de la selección. Para conjuntos grandes de herramientas (docenas de herramientas en varios servidores), considera habilitar defer_loading con la herramienta de búsqueda de herramientas para que solo se muestren las herramientas relevantes por consulta.

Autenticación

Para los servidores MCP que requieren autenticación OAuth, necesitarás obtener un token de acceso. La 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 manejen el flujo OAuth y obtengan el token de acceso antes de realizar la llamada a la API, y que actualicen el token según sea necesario.

Obtener un token de acceso para pruebas

El inspector de MCP puede guiarte a través del proceso de obtención de un token de acceso con fines de prueba.

  1. Ejecuta el inspector con el siguiente comando. Necesitas tener Node.js instalado en tu máquina.

    npx @modelcontextprotocol/inspector
  2. En la barra lateral izquierda, para Transport type, selecciona SSE o Streamable HTTP.

  3. Ingresa la URL del servidor MCP.

  4. En el área derecha, haz clic en Open Auth Settings después de Need to configure authentication?.

  5. Haz clic en Quick OAuth Flow y autoriza en la pantalla de OAuth.

  6. Sigue los pasos en la sección OAuth Flow Progress del inspector y haz clic en Continue hasta llegar a Authentication complete.

  7. Copia el valor de access_token.

  8. Pégalo en el campo authorization_token de la configuración de tu servidor MCP.

Uso del token de acceso

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 de MCP.

Helpers de MCP del lado del cliente

Si administras tu propia conexión de cliente MCP (por ejemplo, con servidores stdio locales, prompts de MCP o recursos de MCP), los SDK proporcionan funciones auxiliares (helpers) que convierten entre tipos de MCP y tipos de la API de Claude. Esto elimina el código de conversión manual al usar un SDK de MCP para tu lenguaje (por ejemplo, el SDK de MCP para TypeScript) junto con el SDK de Anthropic.

Instalación

Instala tanto el SDK de Anthropic como el SDK de MCP:

Los helpers de MCP están incluidos en el extra mcp, que requiere Python 3.10 o posterior:

pip install "anthropic[mcp]"

Helpers disponibles

Importa los helpers para tu lenguaje:

from anthropic.lib.tools.mcp import (
    async_mcp_tool,
    mcp_message,
    mcp_resource_to_content,
    mcp_resource_to_file,
)

Los nombres de los helpers y sus firmas exactas siguen las convenciones de cada lenguaje; esta tabla muestra las formas de TypeScript:

HelperDescripción
mcpTools(tools, mcpClient)Convierte herramientas MCP en herramientas de la API de Claude para usar con client.beta.messages.toolRunner()
mcpMessages(messages)Convierte mensajes de prompts de MCP al formato de mensajes de la API de Claude
mcpResourceToContent(resource)Convierte un recurso de MCP en un bloque de contenido de la API de Claude
mcpResourceToFile(resource)Convierte un recurso de MCP en un objeto de archivo para cargar

Usar herramientas MCP

Convierte herramientas MCP para usarlas con el ejecutor de herramientas del SDK, que maneja la ejecución de herramientas automáticamente:

from anthropic.lib.tools.mcp import async_mcp_tool
from mcp import ClientSession
from mcp.client.stdio import StdioServerParameters, stdio_client

client = AsyncAnthropic()


async def main() -> None:
    # Conectarse a un servidor MCP
    server_params = StdioServerParameters(command="mcp-server")
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as mcp_client:
            await mcp_client.initialize()

            # Listar las herramientas y convertirlas para la API de Claude
            tools_result = await mcp_client.list_tools()
            runner = client.beta.messages.tool_runner(
                model="claude-opus-5",
                max_tokens=1024,
                messages=[
                    {"role": "user", "content": "What tools do you have available?"},
                ],
                tools=[async_mcp_tool(tool, mcp_client) for tool in tools_result.tools],
            )

            final_message = await runner.until_done()
            print(final_message)


asyncio.run(main())

Usar prompts de MCP

Convierte mensajes de prompts de MCP al formato de mensajes de la API de Claude:

from anthropic.lib.tools.mcp import mcp_message

prompt = await mcp_client.get_prompt(name="my-prompt")
response = await client.beta.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    messages=[mcp_message(message) for message in prompt.messages],
)

print(response)

Usar recursos de MCP

Convierte recursos de MCP en bloques de contenido para incluir en mensajes, o en objetos de archivo para cargar:

from anthropic.lib.tools.mcp import (
    mcp_resource_to_content,
    mcp_resource_to_file,
)

# Como bloque de contenido en un mensaje
resource = await mcp_client.read_resource(uri="file:///path/to/doc.txt")
response = await client.beta.messages.create(
    model="claude-opus-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                mcp_resource_to_content(resource),
                {"type": "text", "text": "Summarize this document"},
            ],
        }
    ],
)
print(response)

# Como carga de archivo
file_resource = await mcp_client.read_resource(
    uri="file:///path/to/data.json",
)
uploaded = await client.files.upload(
    file=mcp_resource_to_file(file_resource),
)
print(uploaded.id)

Manejo de errores

Las funciones de conversión lanzan UnsupportedMCPValueError si un valor de MCP no es compatible con la API de Claude (en Go, los helpers devuelven un UnsupportedValueError; en Java y C#, lanzan AnthropicInvalidDataException). Esto puede ocurrir con tipos de contenido, tipos MIME o enlaces de recursos no compatibles (resuelve los enlaces de recursos con tu cliente MCP antes de convertir).

Solicitudes por lotes

Puedes incluir mcp_servers en solicitudes de la API de Message Batches. Las llamadas a herramientas MCP a través de la API de Batches tienen el mismo precio que las de las solicitudes normales de la API de Messages.

Retención de datos

El conector MCP no está cubierto por los acuerdos de ZDR. Los datos intercambiados con los 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 conocer la elegibilidad de ZDR en todas las funciones, consulta API y retención de datos.

Guía de migración

Si estás usando el encabezado beta obsoleto mcp-client-2025-04-04, sigue esta guía para migrar a la nueva versión.

Cambios principales

  1. Nuevo encabezado beta: Cambia de mcp-client-2025-04-04 a mcp-client-2025-11-20
  2. La configuración de herramientas se movió: La configuración de herramientas ahora se encuentra en el array tools como objetos MCPToolset, no en la definición del servidor MCP
  3. Configuración más flexible: El nuevo patrón admite listas de permitidos, listas de bloqueados y configuración por herramienta

Pasos de migración

Antes (obsoleto):

{
  "model": "claude-opus-5",
  "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-5",
  "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
        }
      }
    }
  ]
}

Patrones de migración comunes

Patrón anteriorPatrón nuevo
Sin tool_configuration (todas las herramientas habilitadas)MCPToolset sin default_config ni configs
tool_configuration.enabled: falseMCPToolset con default_config.enabled: false
tool_configuration.allowed_tools: [...]MCPToolset con default_config.enabled: false y herramientas específicas habilitadas en configs

Versión obsoleta: mcp-client-2025-04-04

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"]
      }
    }
  ]
}

Descripciones de campos obsoletos

PropiedadTipoDescripción
tool_configurationobjectObsoleto: Usa MCPToolset en el array tools en su lugar
tool_configuration.enabledbooleanObsoleto: Usa default_config.enabled en MCPToolset
tool_configuration.allowed_toolsarrayObsoleto: Usa el patrón de lista de permitidos con configs en MCPToolset

Compatibility

Supported platforms
  • Claude APIBeta
  • Claude Platform on AWSBeta
  • Microsoft FoundryBeta

Was this page helpful?