Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Contratto di protocollo MCP
Comprendi i requisiti per l'implementazione del Model Context Protocol (MCP) in modo che gli agenti possano chiamare strumenti e server di agenti.
Per esempio di codice, vedi Distribuire i server MCP in Runtime. AgentCore
Argomenti
Requisiti di implementazione del protocollo
Il server MCP deve implementare questi requisiti di protocollo specifici:
-
Trasporto: è richiesto il Streamable-http trasporto. Per impostazione predefinita, utilizza la modalità stateless (
stateless_http=True) per la compatibilità con la gestione delle sessioni e il bilanciamento AWS del carico. -
Gestione delle sessioni: la piattaforma aggiunge automaticamente l'
Mcp-Session-Idintestazione per l'isolamento della sessione. In modalità stateless, i server devono supportare il funzionamento senza stato in modo da non rifiutare l'intestazione generata dalla piattaforma.Mcp-Session-Id
Suggerimento
Amazon Bedrock supporta AgentCore anche server MCP con stato (stateless_http=False) che abilitano funzionalità come l'elicitazione (interazioni utente multi-turno) e il campionamento (contenuti). LLM-generated Per le versioni del protocollo MCP 2025-11-25 e precedenti, è necessaria la modalità stateful per l'elicitazione e il campionamento, poiché il server fornisce queste richieste in una sessione aperta. Per le versioni successive, l'elicitazione 2026-07-28 e il campionamento utilizzano il pattern MRTR (Multi Round-Trip Request), che non richiede la modalità stateful. Per ulteriori informazioni su MRTR, vedere Richieste multiple di andata e ritorno nella documentazione del Model Context Protocol.
La modalità Steful trasmette lo stato all'interno di una sessione MCP su più richieste. Un server MCP senza stato mantiene lo stato in un archivio di backup gestito dall'applicazione, ad esempio un database. Utilizza handle di stato espliciti per fare riferimento a tale stato. Il server restituisce un identificatore di stato in un risultato dello strumento e il client lo trasmette alle successive chiamate allo strumento per accedere all'archivio. Per ulteriori informazioni sugli handle di stato espliciti, vedere gli handle di stato espliciti
Gestione delle sessioni MCP e persistenza delle microVM
Il Model Context Protocol (MCP) utilizza l'Mcp-Session-Idintestazione per gestire lo stato della sessione e le richieste di instradamento. Per le specifiche MCP, vedere MCP Streamable HTTP Transport.
MicroVM Stickiness: Amazon Bedrock AgentCore utilizza l'Mcp-Session-Idintestazione per indirizzare le richieste alla stessa istanza MicroVM. I clienti devono acquisire il risultato Mcp-Session-Id restituito nella risposta e includerlo in tutte le richieste successive per garantire l'affinità della sessione. Senza un ID di sessione coerente, ogni richiesta può essere indirizzata a una nuova MicroVM, il che può comportare una latenza aggiuntiva dovuta agli avviamenti a freddo.
MCP senza stato (): stateless_http=True
-
La piattaforma genera
Mcp-Session-Ide lo include nella richiesta al server MCP. -
Il server MCP deve accettare l'ID di sessione fornito dalla piattaforma (non rifiutarlo).
-
La piattaforma restituisce lo stesso
Mcp-Session-Idal client nella risposta. -
Il client deve includere questo ID di sessione in tutte le richieste successive di affinità MicroVM.
Stateful MCP (): stateless_http=False
-
Il client invia la richiesta di inizializzazione senza un'intestazione.
Mcp-Session-Id -
La piattaforma restituisce
Mcp-Session-Idla risposta. -
Il cliente deve includerlo
Mcp-Session-Idin tutte le richieste successive sia per lo stato della sessione che per l'affinità con MicroVM.
Per maggiori dettagli sulla gestione delle sessioni MCP con stato, consulta le specifiche di gestione delle sessioni MCP. https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#session-management
Nota
In entrambe le modalità, Amazon Bedrock restituisce AgentCore sempre un'Mcp-Session-Idintestazione ai clienti. Acquisisci e riutilizza sempre questa intestazione per prestazioni ottimali.
Requisiti del contenitore
Il server MCP deve essere distribuito come applicazione containerizzata che soddisfi le seguenti specifiche:
-
Host:
0.0.0.0 -
Porta:
8000- Porta standard per la comunicazione con il server MCP (diversa dal protocollo HTTP) -
Piattaforma: contenitore ARM64 - Necessario per la compatibilità con l'ambiente di runtime AWS Amazon Bedrock AgentCore
Requisiti del percorso
/mcp - POST
Scopo
Riceve messaggi RPC MCP e li elabora tramite le funzionalità dello strumento dell'agente, trasmissione completa del payload delle InvokeAgentRuntime API con messaggi RPC MCP standard
Formato di risposta
JSON-RPC request/response formato basato, che supporta sia i tipi di contenuto application/json di risposta che text/event-stream quelli di risposta
Casi d'uso
L'/mcpendpoint serve a diversi scopi chiave:
-
Richiamo e gestione degli strumenti
-
Rilevamento delle capacità degli agenti
-
Accesso e manipolazione delle risorse
-
Multi-step flussi di lavoro degli agenti
Gestione degli errori
I server MCP restituiscono gli errori come risposte di errore standard JSON-RPC 2.0. La maggior parte degli errori viene registrata nell' JSON-RPC erroroggetto con un codice di stato HTTP 200, come richiesto dalla specifica MCP. Solo gli errori di autenticazione, autorizzazione e richiesta a livello di protocollo utilizzano codici di stato HTTP diversi da 200. La tabella seguente associa ogni eccezione di runtime al relativo codice JSON-RPC di errore, codice di stato HTTP e messaggio. Alcune eccezioni condividono un codice JSON-RPC di errore ma restituiscono messaggi diversi, quindi sono elencate come righe separate.
| JSON-RPC Codice di errore | Eccezione di runtime | Codice di errore HTTP | Messaggio di errore |
|---|---|---|---|
|
-32001 |
UnauthorizedException |
401 |
Errore di autenticazione - Credenziali non valide |
|
-32002 |
AccessDeniedException |
403 |
Errore di autorizzazione - Autorizzazioni insufficienti |
|
-32003 |
ThrottlingException |
200 |
Limite di frequenza superato: troppe richieste |
|
-32003 |
ServiceQuotaExceededException |
200 |
Limite di frequenza superato: troppe richieste |
|
-32004 |
ResourceNotFoundException |
200 |
Risorsa non trovata - La risorsa richiesta non esiste |
|
-32005 |
ConflictException |
200 |
Conflitto di risorse: la risorsa esiste già |
|
-32005 |
RetryableConflictException |
200 |
Operazione della sessione in corso, riprova |
|
-32006 |
ValidationException |
200 |
Errore di convalida - Dati della richiesta non validi |
|
-32010 |
RuntimeClientError |
200 |
Errore di esecuzione dello strumento: controlla i CloudWatch log per ulteriori informazioni |
|
-32011 |
McpRequestUnacceptableException |
406 |
Errore di intestazione di accettazione: il protocollo MCP richiede l'intestazione Accept:, -stream application/json text/event |
|
-32603 |
Qualsiasi altra eccezione |
200 |
Errore interno - Errore del server |
ConflictExceptioned RetryableConflictException entrambi utilizzano il codice di JSON-RPC errore -32005 (HTTP 200) ma si distinguono per il messaggio. Il servizio restituisce RetryableConflictException (Session operation in progress, please retry) quando una seconda operazione è indirizzata a una sessione mentre il servizio esegue il provisioning o la disattivazione di tale sessione. Poiché MCP restituisce HTTP 200 con l'errore nel JSON-RPC corpo, il chiamante deve ispezionare il corpo della risposta e riprovare con un breve backoff esponenziale: i client MCP non lo riprovano automaticamente.
Esempio di risposta all'errore:
{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }
Risposte di autenticazione OAuth
OAuth-configured gli agenti seguono gli standard di autenticazione RFC 6749 (OAuth 2.0).
401 - Autorizzazione negata
Restituito quando l'intestazione di autorizzazione è mancante o vuota.
La risposta include l' WWW-Authenticate intestazione:
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 gli agenti restituiscono HTTP 403 con un ACCESS_DENIED errore e non includono WWW-Authenticate le intestazioni.