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.
Temas
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-Idencabezado 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 generadoMcp-Session-Idpor 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
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
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-Idy 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-Idal 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-Idla respuesta. -
El cliente debe incluir esta información
Mcp-Session-Iden 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).
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.