Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Contrat de protocole MCP
Comprenez les exigences relatives à la mise en œuvre du protocole MCP (Model Context Protocol) afin que les agents puissent appeler des outils et des serveurs d'agents.
Pour un exemple de code, voir Déployer des serveurs MCP dans AgentCore Runtime.
Rubriques
Exigences de mise en œuvre du protocole
Votre serveur MCP doit implémenter ces exigences de protocole spécifiques :
-
Transport : Streamable-http le transport est obligatoire. Par défaut, utilisez le mode stateless (
stateless_http=True) pour des raisons de compatibilité avec AWS la gestion des sessions et l'équilibrage de charge. -
Gestion des sessions : la plateforme ajoute automatiquement un
Mcp-Session-Iden-tête pour isoler les sessions. En mode sans état, les serveurs doivent prendre en charge le fonctionnement sans état afin de ne pas rejeter l'en-tête généré parMcp-Session-Idla plate-forme.
Astuce
Amazon Bedrock prend AgentCore également en charge les serveurs MCP dynamiques (stateless_http=False) qui activent des fonctionnalités telles que l'élicitation (interactions multi-tours entre les utilisateurs) et l'échantillonnage (contenu). LLM-generated Pour les versions du protocole MCP 2025-11-25 et les versions antérieures, le mode statique est requis pour l'élicitation et l'échantillonnage, car le serveur transmet ces demandes via une session ouverte. Pour les versions 2026-07-28 et les versions ultérieures, l'élicitation et l'échantillonnage utilisent le modèle MRTR (Multi Aller-Trip Requests), qui ne nécessite pas de mode dynamique. Pour plus d'informations sur le MRTR, consultez la section Demandes aller-retour multiples
Le mode Stateful transmet l'état au sein d'une session MCP sur plusieurs requêtes. Un serveur MCP sans état conserve l'état dans un magasin de sauvegarde géré par votre application, tel qu'une base de données. Il utilise des descripteurs d'état explicites pour référencer cet état. Le serveur renvoie un identifiant d'état dans le résultat d'un outil, et le client le renvoie lors d'appels ultérieurs à l'outil pour accéder au magasin. Pour plus d'informations sur les descripteurs d'état explicites, consultez les descripteurs d'état explicites
Gestion des sessions MCP et adhérence des microVM
Le protocole MCP (Model Context Protocol) utilise l'Mcp-Session-Iden-tête pour gérer l'état des sessions et les demandes de routage. Pour la spécification MCP, voir MCP Streamable HTTP Transport.
Stickiness de la microVM : Amazon Bedrock AgentCore utilise l'Mcp-Session-Iden-tête pour acheminer les demandes vers la même instance de microVM. Les clients doivent saisir les informations Mcp-Session-Id renvoyées dans la réponse et les inclure dans toutes les demandes suivantes afin de garantir l'affinité de session. Sans identifiant de session cohérent, chaque demande peut être acheminée vers une nouvelle microVM, ce qui peut entraîner une latence supplémentaire en raison des démarrages à froid.
MCP apatride () stateless_http=True :
-
La plateforme génère le
Mcp-Session-Idet l'inclut dans la demande adressée à votre serveur MCP. -
Votre serveur MCP doit accepter l'identifiant de session fourni par la plateforme (ne le rejetez pas).
-
La plateforme renvoie la même chose
Mcp-Session-Idau client dans la réponse. -
Le client doit inclure cet ID de session dans toutes les demandes d'affinité microVM ultérieures.
MCP dynamique () stateless_http=False :
-
Le client envoie la demande d'initialisation sans
Mcp-Session-Iden-tête. -
La plateforme revient
Mcp-Session-Iddans la réponse. -
Le client doit l'inclure
Mcp-Session-Iddans toutes les demandes suivantes concernant à la fois l'état de la session et l'affinité avec la microVM.
Pour plus de détails sur la gestion dynamique des sessions MCP, consultez la spécification de gestion des sessions MCP.
Note
Dans les deux modes, Amazon Bedrock renvoie AgentCore toujours un Mcp-Session-Id en-tête aux clients. Capturez et réutilisez toujours cet en-tête pour des performances optimales.
Exigences relatives aux conteneurs
Votre serveur MCP doit être déployé en tant qu'application conteneurisée répondant aux spécifications suivantes :
-
Hôte :
0.0.0.0 -
Port :
8000- Port standard pour la communication avec le serveur MCP (différent du protocole HTTP) -
Plateforme : conteneur ARM64 - Requis pour des raisons de compatibilité avec l'environnement d' AWS exécution Amazon Bedrock AgentCore
Exigences relatives au chemin
/mcp - POSTE
Objectif
Reçoit les messages MCP RPC et les traite via les fonctionnalités de l'outil de votre agent, transmission complète de la charge utile de l'InvokeAgentRuntimeAPI avec les messages MCP RPC standard
Format de réponse
JSON-RPC request/response format basé, supportant à la fois les types application/json de contenu et text/event-stream en tant que réponse
Cas d’utilisation
Le /mcp point de terminaison répond à plusieurs objectifs principaux :
-
Invocation et gestion des outils
-
Découverte des capacités des agents
-
Accès aux ressources et manipulation
-
Multi-step flux de travail des agents
Gestion des erreurs
Les serveurs MCP renvoient des erreurs sous forme de réponses d'erreur standard JSON-RPC 2.0. La plupart des erreurs sont contenues dans l' JSON-RPC errorobjet avec un code d'état HTTP 200, comme l'exige la spécification MCP. Seules les erreurs d'authentification, d'autorisation et de demande au niveau du protocole utilisent des codes d'état HTTP autres que 200. Le tableau suivant associe chaque exception d'exécution à son code JSON-RPC d'erreur, à son code d'état HTTP et à son message. Certaines exceptions partagent un code JSON-RPC d'erreur mais renvoient des messages différents. Elles sont donc répertoriées sur des lignes distinctes.
| JSON-RPC Code d'erreur | Exception d'exécution | Code d'erreur HTTP | Message d’erreur |
|---|---|---|---|
|
-32001 |
UnauthorizedException |
401 |
Erreur d'authentification - Informations d'identification non valides |
|
-32002 |
AccessDeniedException |
403 |
Erreur d'autorisation : autorisations insuffisantes |
|
-32003 |
ThrottlingException |
200 |
Limite de débit dépassée - Trop de demandes |
|
-32003 |
ServiceQuotaExceededException |
200 |
Limite de débit dépassée - Trop de demandes |
|
-32004 |
ResourceNotFoundException |
200 |
Ressource introuvable - La ressource demandée n'existe pas |
|
-32005 |
ConflictException |
200 |
Conflit de ressources - La ressource existe déjà |
|
-32005 |
RetryableConflictException |
200 |
Fonctionnement de la session en cours, veuillez réessayer |
|
-32006 |
ValidationException |
200 |
Erreur de validation - Données de demande non valides |
|
-32010 |
RuntimeClientError |
200 |
Erreur d'exécution de l'outil - Veuillez consulter vos CloudWatch journaux pour plus d'informations |
|
-3 2011 |
McpRequestUnacceptableException |
406 |
Erreur d'acceptation de l'en-tête : le protocole MCP nécessite l'en-tête Accept : application/json, text/event -stream |
|
-32603 |
Toute autre exception |
200 |
Erreur interne - Erreur du serveur |
ConflictExceptionet RetryableConflictException les deux utilisent un code JSON-RPC d'erreur -32005 (HTTP 200) mais se distinguent par leur message. Le service return RetryableConflictException (Session operation in progress, please retry) lorsqu'une deuxième opération cible une session pendant que le service provisionne ou supprime cette session. Comme MCP renvoie HTTP 200 avec l'erreur dans le JSON-RPC corps, l'appelant doit inspecter le corps de la réponse et réessayer avec un court délai exponentiel. Les clients MCP ne réessayent pas automatiquement.
Exemple de réponse d'erreur :
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }
Réponses d'authentification OAuth
OAuth-configured les agents suivent les normes d'authentification RFC 6749 (OAuth 2.0).
401 Accès non autorisé
Renvoyé lorsque l'en-tête Authorization est manquant ou vide.
La réponse inclut un WWW-Authenticate en-tête :
WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
Note
SigV4-configured les agents renvoient HTTP 403 avec une ACCESS_DENIED erreur et n'incluent pas d'WWW-Authenticateen-têtes.