View a markdown version of this page

Ricevi messaggi di registrazione dal tuo gateway AgentCore - 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à.

Ricevi messaggi di registrazione dal tuo gateway AgentCore

Le destinazioni dei server MCP possono inviare messaggi di registro ai client durante l'esecuzione dello strumento utilizzando il notifications/message metodo. Questi messaggi forniscono visibilità in tempo reale su ciò che sta facendo il server, utile per il debug, il controllo e il monitoraggio del comportamento degli strumenti. AgentCore Gateway inoltra queste notifiche di registro dalle destinazioni del server MCP al client come blocchi di Server-Sent eventi (SSE).

Prerequisiti

Per ricevere messaggi di registrazione dal tuo gateway:

  • Streaming di risposta abilitato: i messaggi di log vengono recapitati come blocchi SSE durante una connessione aperta. Imposta su true in streamingConfiguration.enableResponseStreaming quello del tuo gateway. protocolConfiguration.mcp

  • Tipo di destinazione del server MCP: i messaggi di registro provengono da destinazioni del server MCP.

  • Il client invia l'Acceptintestazione: il client deve inviare Accept: application/json, text/event-stream in modo che il gateway possa restituire una risposta in streaming (SSE).

Livelli di log

MCP definisce i seguenti livelli di log, in ordine crescente di gravità:

Livello Description

debug

Informazioni diagnostiche dettagliate per la risoluzione dei problemi.

info

Messaggi informativi generali sul normale funzionamento.

notice

Eventi normali ma significativi.

warning

Situazioni potenzialmente dannose che non impediscono il funzionamento.

error

Condizioni di errore che hanno impedito un'operazione specifica.

critical

Condizioni critiche che richiedono attenzione immediata.

alert

L'azione deve essere intrapresa immediatamente.

emergency

Il sistema è inutilizzabile.

Come funzionano i messaggi di registrazione

Quando un server di destinazione MCP emette un segnale notifications/message durante l'esecuzione dello strumento, il gateway lo inoltra al client come evento SSE. Ogni messaggio di registro include:

  • level— Il livello di gravità del messaggio.

  • logger— Nome opzionale che identifica il componente sorgente.

  • data— Il contenuto del registro (stringa o oggetto strutturato).

I messaggi di registro sono informativi e non richiedono una risposta da parte del client. Vengono forniti insieme ad altri eventi SSE, ad esempio le notifiche sullo stato di avanzamento e il risultato finale dello strumento.

Esempi di codice

Esempio
curl (2025-11-25 and earlier)

Chiama uno strumento e ricevi messaggi di registro nello stream SSE. Imposta l'MCP-Protocol-Versionintestazione su una versione supportata dal tuo gateway.

curl -N -X POST \ https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "MCP-Protocol-Version: 2025-11-25" \ -d '{ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "deployService", "arguments": { "serviceName": "my-api", "environment": "staging" } } }'

Il gateway restituisce un flusso SSE con messaggi di registro seguiti dal risultato finale:

event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Starting deployment of my-api to staging"}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Building container image..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"warning","logger":"deploy-service","data":"Deprecated configuration detected in service manifest"}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Deployment complete"}} event: message data: {"jsonrpc":"2.0","id":"tool-call-1","result":{"content":[{"type":"text","text":"Successfully deployed my-api to staging environment."}]}}
curl (2026-07-28)

Nella versione2026-07-28, il client accetta i messaggi di registro per ogni richiesta impostando l'impostazione io.modelcontextprotocol/logLevel _meta (l'logging/setLeveloperazione viene ritirata in questa versione). Il server invia notifications/message solo al livello richiesto o superiore. Includi anche le intestazioni Mcp-Method e i Mcp-Name metadati della richiesta e i campi della versione. _meta L'intestazione deve corrispondere. MCP-Protocol-Version _meta.io.modelcontextprotocol/protocolVersion Il tuo gateway supportedVersions deve includere2026-07-28.

curl -N -X POST \ https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "MCP-Protocol-Version: 2026-07-28" \ -H "Mcp-Method: tools/call" \ -H "Mcp-Name: deployService" \ -d '{ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "deployService", "arguments": { "serviceName": "my-api", "environment": "staging" }, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": { "name": "my-agent", "version": "1.0.0" }, "io.modelcontextprotocol/clientCapabilities": {}, "io.modelcontextprotocol/logLevel": "info" } } }'

Il gateway restituisce un flusso SSE con messaggi di registro seguiti dal risultato finale:

event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Starting deployment of my-api to staging"}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Building container image..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"warning","logger":"deploy-service","data":"Deprecated configuration detected in service manifest"}} event: message data: {"jsonrpc":"2.0","method":"notifications/message","params":{"level":"info","logger":"deploy-service","data":"Deployment complete"}} event: message data: {"jsonrpc":"2.0","id":"tool-call-1","result":{"content":[{"type":"text","text":"Successfully deployed my-api to staging environment."}]}}
Python requests package (2025-11-25 and earlier)

Imposta l'MCP-Protocol-Versionintestazione su una versione supportata dal tuo gateway.

import requests import json import sseclient gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp" headers = { "Content-Type": "application/json", "Accept": "application/json, text/event-stream", "Authorization": "Bearer YOUR_ACCESS_TOKEN", "MCP-Protocol-Version": "2025-11-25" } # Call tool (streaming response) response = requests.post(gateway_url, headers=headers, json={ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "deployService", "arguments": {"serviceName": "my-api", "environment": "staging"} } }, stream=True) # Process SSE events client = sseclient.SSEClient(response) for event in client.events(): data = json.loads(event.data) if data.get("method") == "notifications/message": params = data["params"] print(f"[{params['level'].upper()}] {params.get('logger', '')}: {params['data']}") elif "result" in data: print(f"Tool result: {data['result']}") break
Python requests package (2026-07-28)

A seconda della versione2026-07-28, attiva i messaggi di registro impostando l'impostazione io.modelcontextprotocol/logLevel _meta (l'logging/setLeveloperazione viene ritirata in questa versione). Aggiungete anche le Mcp-Name intestazioni MCP-Protocol-VersionMcp-Method, e i campi relativi alla _meta versione. Il tuo gateway supportedVersions deve includere2026-07-28.

import requests import json import sseclient gateway_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp" headers = { "Content-Type": "application/json", "Accept": "application/json, text/event-stream", "Authorization": "Bearer YOUR_ACCESS_TOKEN", "MCP-Protocol-Version": "2026-07-28", "Mcp-Method": "tools/call", "Mcp-Name": "deployService" } # Call tool (streaming response) response = requests.post(gateway_url, headers=headers, json={ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "deployService", "arguments": {"serviceName": "my-api", "environment": "staging"}, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": {"name": "my-agent", "version": "1.0.0"}, "io.modelcontextprotocol/clientCapabilities": {}, "io.modelcontextprotocol/logLevel": "info" } } }, stream=True) # Process SSE events client = sseclient.SSEClient(response) for event in client.events(): data = json.loads(event.data) if data.get("method") == "notifications/message": params = data["params"] print(f"[{params['level'].upper()}] {params.get('logger', '')}: {params['data']}") elif "result" in data: print(f"Tool result: {data['result']}") break
MCP Client
from mcp import ClientSession from mcp.client.streamable_http import streamablehttp_client import asyncio async def log_handler(level, logger, data): """Handle log messages from the server.""" print(f"[{level.upper()}] {logger or 'server'}: {data}") async def use_logging(url, token): headers = {"Authorization": f"Bearer {token}"} async with streamablehttp_client(url=url, headers=headers) as ( read_stream, write_stream, _ ): async with ClientSession( read_stream, write_stream, logging_handler=log_handler ) as session: await session.initialize() # Call tool - log messages handled by callback result = await session.call_tool( name="deployService", arguments={"serviceName": "my-api", "environment": "staging"} ) print(f"Tool result: {result}") return result asyncio.run(use_logging( url="https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp", token="YOUR_ACCESS_TOKEN" ))
Strands MCP Client
from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient mcp_url = "https://mygateway-abcdefghij.gateway.bedrock-agentcore.us-west-2.amazonaws.com/mcp" access_token = "YOUR_ACCESS_TOKEN" mcp_client = MCPClient( lambda: streamablehttp_client( mcp_url, headers={"Authorization": f"Bearer {access_token}"} ) ) # Strands handles streaming and log messages automatically with mcp_client: agent = Agent(tools=mcp_client.list_tools_sync()) response = agent("Deploy my-api to staging") print(response)