View a markdown version of this page

Contratto di protocollo MCP - Fondamento Amazon AgentCore

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

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 nella documentazione del Model Context Protocol. Per ulteriori informazioni sui server MCP con stato, vedere Funzionalità del server MCP con stato.

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-Id e 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-Id al 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-Id la risposta.

  • Il cliente deve includerlo Mcp-Session-Id in 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). Quando manca l'autenticazione, il servizio restituisce una risposta 401 Unauthorized con un' WWW-Authenticate intestazione (per RFC 7235), che consente ai client di scoprire gli endpoint del server di autorizzazione tramite l'API. GetRuntimeProtectedResourceMetadata

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.