View a markdown version of this page

Contrato de protocolo MCP - Base amazónica AgentCore

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Contrato de protocolo MCP

Comprenda los requisitos para implementar el Protocolo de contexto modelo (MCP) para que los agentes puedan llamar a las herramientas y a los servidores de agentes.

Para ver un ejemplo de código, consulte Implementar servidores MCP en AgentCore tiempo de ejecución.

Requisitos de implementación del protocolo

Su servidor MCP debe implementar estos requisitos de protocolo específicos:

  • Transporte: se requiere Streamable-http transporte. De forma predeterminada, utilice el modo sin estado (stateless_http=True) para garantizar la compatibilidad con AWS la administración de sesiones y el equilibrio de carga.

  • Administración de sesiones: la plataforma agrega automáticamente el Mcp-Session-Id encabezado para el aislamiento de la sesión. En el modo sin estado, los servidores deben admitir el funcionamiento sin estado para no rechazar el encabezado generado Mcp-Session-Id por la plataforma.

sugerencia

Amazon Bedrock AgentCore también admite servidores MCP con estado (stateless_http=False) que permiten funciones como la obtención (interacciones de usuario en varios turnos) y el muestreo (contenido). LLM-generated En la versión del protocolo MCP 2025-11-25 y en las anteriores, se requiere el modo con estado para la obtención y el muestreo, ya que el servidor entrega estas solicitudes en una sesión abierta. En las versiones 2026-07-28 anteriores, la elicitación y el muestreo utilizan el patrón de solicitudes de ida y vuelta múltiples (MRTR), que no requiere el modo con estado. Para obtener más información sobre el MRTR, consulte las solicitudes de ida y vuelta múltiples en la documentación del Model Context Protocol.

El modo con estado transmite el estado de una sesión MCP a través de varias solicitudes. Un servidor MCP sin estado mantiene el estado en un almacén de respaldo que administra la aplicación, como una base de datos. Utiliza identificadores de estado explícitos para hacer referencia a ese estado. El servidor devuelve un identificador de estado en el resultado de una herramienta y el cliente lo devuelve en llamadas posteriores a la herramienta para ingresar al almacén. Para obtener más información sobre los identificadores de estado explícitos, consulte los identificadores de estado explícitos en la documentación del Model Context Protocol. Para obtener más información sobre los servidores MCP con estado, consulte las funciones del servidor MCP con estado.

Administración de sesiones MCP y capacidad de almacenamiento de microVM

El protocolo de contexto modelo (MCP) usa el Mcp-Session-Id encabezado para administrar el estado de la sesión y enrutar las solicitudes. Para ver la especificación MCP, consulte MCP Streamable HTTP Transport.

Resistencia de la microVM: Amazon Bedrock AgentCore usa el Mcp-Session-Id encabezado para dirigir las solicitudes a la misma instancia de microVM. Los clientes deben capturar la información Mcp-Session-Id devuelta en la respuesta e incluirla en todas las solicitudes posteriores para garantizar la afinidad de la sesión. Sin un identificador de sesión coherente, cada solicitud puede enrutarse a una microVM nueva, lo que puede provocar una latencia adicional debido a los arranques en frío.

MCP sin estado (): stateless_http=True

  • La plataforma lo genera Mcp-Session-Id y lo incluye en la solicitud a su servidor MCP.

  • Su servidor MCP debe aceptar el ID de sesión proporcionado por la plataforma (no lo rechace).

  • La plataforma devuelve lo mismo Mcp-Session-Id al cliente en la respuesta.

  • El cliente debe incluir este identificador de sesión en todas las solicitudes posteriores de afinidad con microVM.

MCP con estado (): stateless_http=False

  • El cliente envía la solicitud de inicialización sin un encabezado. Mcp-Session-Id

  • La plataforma devuelve Mcp-Session-Id la respuesta.

  • El cliente debe incluir esta información Mcp-Session-Id en todas las solicitudes posteriores, tanto por lo que respecta al estado de la sesión como a la afinidad por la microVM.

Para obtener más información sobre la administración de sesiones MCP con estado, consulte la especificación de administración de sesiones MCP.

nota

En ambos modos, Amazon Bedrock AgentCore siempre devuelve un Mcp-Session-Id encabezado a los clientes. Capture y reutilice siempre este encabezado para obtener un rendimiento óptimo.

Requisitos de contenedores

Su servidor MCP debe implementarse como una aplicación en contenedores que cumpla con estas especificaciones:

  • Host: 0.0.0.0

  • Puerto: 8000 - Puerto estándar para la comunicación con el servidor MCP (diferente del protocolo HTTP)

  • Plataforma: contenedor ARM64: necesario para la compatibilidad con el entorno de ejecución de AWS Amazon Bedrock AgentCore

Requisitos de ruta

/mcp - POST

Finalidad

Recibe los mensajes RPC de MCP y los procesa a través de las herramientas de su agente. Transfiere completamente la carga útil de la InvokeAgentRuntime API con los mensajes RPC de MCP estándar

Formato de las respuestas

JSON-RPC request/response formato basado, compatible con ambos tipos de contenido y como respuesta application/json text/event-stream

Casos de uso

El /mcp punto final cumple varios propósitos clave:

  • Invocación y administración de herramientas

  • Descubrimiento de capacidades de agentes

  • Acceso y manipulación de recursos

  • Multi-step flujos de trabajo de agentes

Gestión de errores

Los servidores MCP devuelven los errores como respuestas de error estándar JSON-RPC 2.0. La mayoría de los errores se almacenan en el JSON-RPC error objeto con un código de estado HTTP 200, tal como exige la especificación MCP. Solo los errores de autenticación, autorización y solicitud a nivel de protocolo utilizan códigos de estado HTTP distintos de los 200. La siguiente tabla asigna cada excepción de tiempo de ejecución a su código de JSON-RPC error, código de estado HTTP y mensaje. Algunas excepciones comparten un código de JSON-RPC error pero devuelven mensajes diferentes, por lo que aparecen en filas independientes.

JSON-RPC Código de error Excepción de ejecución Código de error HTTP Mensaje de error

-32001

UnauthorizedException

401

Error de autenticación: credenciales no válidas

-32002

AccessDeniedException

403

Error de autorización: permisos insuficientes

-32003

ThrottlingException

200

Se ha superado el límite de velocidad: demasiadas solicitudes

-32003

ServiceQuotaExceededException

200

Se ha superado el límite de velocidad: demasiadas solicitudes

-32004

ResourceNotFoundException

200

Recurso no encontrado: el recurso solicitado no existe

-32005

ConflictException

200

Conflicto de recursos: el recurso ya existe

-32005

RetryableConflictException

200

La sesión está en curso, inténtelo de nuevo

-32006

ValidationException

200

Error de validación: datos de solicitud no válidos

-32010

RuntimeClientError

200

Error de ejecución de la herramienta: compruebe sus CloudWatch registros para obtener más información

-32011

McpRequestUnacceptableException

406

Error de aceptación de encabezado: el protocolo MCP requiere aceptar el encabezado: application/json, text/event -stream

-32603

¿Alguna otra excepción

200

Error interno: error del servidor

ConflictExceptiony RetryableConflictException ambos utilizan JSON-RPC un código de error -32005 (HTTP 200) pero se distinguen por su mensaje. El servicio devuelve RetryableConflictException (Session operation in progress, please retry) cuando una segunda operación apunta a una sesión mientras el servicio está aprovisionando o cancelando esa sesión. Como MCP devuelve el HTTP 200 con el error en el JSON-RPC cuerpo, la persona que llama debe inspeccionar el cuerpo de la respuesta y volver a intentarlo con un breve retraso exponencial; los clientes de MCP no lo reintentan automáticamente.

Ejemplo de respuesta de error:

{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }

Respuestas de autenticación de OAuth

OAuth-configured los agentes siguen los estándares de autenticación RFC 6749 (OAuth 2.0). Cuando falta la autenticación, el servicio devuelve una respuesta no autorizada 401 con un WWW-Authenticate encabezado (según la RFC 7235), lo que permite a los clientes descubrir los puntos finales del servidor de autorización a través de la API. GetRuntimeProtectedResourceMetadata

401 sin autorización

Se devuelve cuando el encabezado de autorización falta o está vacío.

La respuesta incluye WWW-Authenticate el encabezado:

WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
nota

SigV4-configured los agentes devuelven el HTTP 403 con un ACCESS_DENIED error y no incluyen WWW-Authenticate los encabezados.