View a markdown version of this page

Menerima pemberitahuan kemajuan dari AgentCore gateway Anda - Batu Dasar Amazon AgentCore

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerima pemberitahuan kemajuan dari AgentCore gateway Anda

Pemberitahuan kemajuan memungkinkan target server MCP melaporkan kemajuan tambahan pada panggilan alat yang berjalan lama. Ketika panggilan alat membutuhkan waktu untuk diselesaikan, server dapat mengirim notifications/progress peristiwa untuk memberi tahu klien tentang status operasi. AgentCore Gateway meneruskan notifikasi ini dari target server MCP ke klien Anda sebagai potongan Ev Server-Sent ents (SSE).

Prasyarat

Untuk menerima pemberitahuan kemajuan dari gateway Anda:

  • Streaming respons diaktifkan — Pemberitahuan kemajuan dikirimkan sebagai potongan SSE selama koneksi terbuka. Set streamingConfiguration.enableResponseStreaming el ke true dalam gateway AndaprotocolConfiguration.mcp.

  • Jenis target server MCP — Pemberitahuan kemajuan berasal dari target server MCP.

  • Klien mengirim Accept header — Klien harus mengirim Accept: application/json, text/event-stream sehingga gateway dapat mengembalikan respons streaming (SSE).

Cara kerja notifikasi kemajuan

Ketika klien membuat tools/call permintaan dengan progressToken parameter permintaan, target server MCP dapat mengirim notifications/progress peristiwa selama eksekusi. Gateway meneruskan peristiwa ini ke klien sebagai potongan SSE sebelum hasil alat akhir.

Setiap pemberitahuan kemajuan meliputi:

  • progressToken— Cocokkan dengan token yang disediakan dalam permintaan asli.

  • progress— Nilai kemajuan saat ini (numerik).

  • total— Nilai total opsional yang menunjukkan target penyelesaian.

  • message— Deskripsi opsional yang dapat dibaca manusia tentang status saat ini.

Sampel Kode

contoh
curl (2025-11-25 and earlier)

Panggil alat dengan token kemajuan. Atur MCP-Protocol-Version header ke versi yang didukung gateway Anda.

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": "analyzeDataset", "arguments": { "datasetId": "ds-12345" }, "_meta": { "progressToken": "progress-1" } } }'

Gateway mengembalikan aliran SSE dengan pemberitahuan kemajuan diikuti oleh hasil akhir:

event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":1,"total":4,"message":"Loading dataset..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":2,"total":4,"message":"Running analysis..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":3,"total":4,"message":"Generating report..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":4,"total":4,"message":"Complete"}} event: message data: {"jsonrpc":"2.0","id":"tool-call-1","result":{"content":[{"type":"text","text":"Analysis complete. Found 3 anomalies in dataset ds-12345."}]}}
curl (2026-07-28)

Pada versi2026-07-28, sertakan Mcp-Method header dan Mcp-Name request-metadata dan bidang _meta versi di badan. Tet progressToken ap masuk _meta untuk memilih pemberitahuan kemajuan. MCP-Protocol-VersionHeader harus cocok_meta.io.modelcontextprotocol/protocolVersion. Gateway Anda supportedVersions harus disertakan2026-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: analyzeDataset" \ -d '{ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "analyzeDataset", "arguments": { "datasetId": "ds-12345" }, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": { "name": "my-agent", "version": "1.0.0" }, "io.modelcontextprotocol/clientCapabilities": {}, "progressToken": "progress-1" } } }'

Gateway mengembalikan aliran SSE dengan pemberitahuan kemajuan diikuti oleh hasil akhir:

event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":1,"total":4,"message":"Loading dataset..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":2,"total":4,"message":"Running analysis..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":3,"total":4,"message":"Generating report..."}} event: message data: {"jsonrpc":"2.0","method":"notifications/progress","params":{"progressToken":"progress-1","progress":4,"total":4,"message":"Complete"}} event: message data: {"jsonrpc":"2.0","id":"tool-call-1","result":{"content":[{"type":"text","text":"Analysis complete. Found 3 anomalies in dataset ds-12345."}]}}
Python requests package (2025-11-25 and earlier)

Atur MCP-Protocol-Version header ke versi yang didukung gateway Anda.

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 with progress token (streaming response) response = requests.post(gateway_url, headers=headers, json={ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "analyzeDataset", "arguments": {"datasetId": "ds-12345"}, "_meta": {"progressToken": "progress-1"} } }, stream=True) # Process SSE events client = sseclient.SSEClient(response) for event in client.events(): data = json.loads(event.data) if data.get("method") == "notifications/progress": params = data["params"] print(f"Progress: {params['progress']}/{params.get('total', '?')} - {params.get('message', '')}") elif "result" in data: print(f"Tool result: {data['result']}") break
Python requests package (2026-07-28)

Pada versi2026-07-28, tambahkanMCP-Protocol-Version,Mcp-Method, dan Mcp-Name header, dan sertakan bidang _meta versi dalam badan permintaan. Tet progressToken ap masuk _meta untuk memilih pemberitahuan kemajuan. Gateway Anda supportedVersions harus disertakan2026-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": "analyzeDataset" } # Call tool with progress token (streaming response) response = requests.post(gateway_url, headers=headers, json={ "jsonrpc": "2.0", "id": "tool-call-1", "method": "tools/call", "params": { "name": "analyzeDataset", "arguments": {"datasetId": "ds-12345"}, "_meta": { "io.modelcontextprotocol/protocolVersion": "2026-07-28", "io.modelcontextprotocol/clientInfo": {"name": "my-agent", "version": "1.0.0"}, "io.modelcontextprotocol/clientCapabilities": {}, "progressToken": "progress-1" } } }, stream=True) # Process SSE events client = sseclient.SSEClient(response) for event in client.events(): data = json.loads(event.data) if data.get("method") == "notifications/progress": params = data["params"] print(f"Progress: {params['progress']}/{params.get('total', '?')} - {params.get('message', '')}") 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 progress_handler(progress_token, progress, total, message=None): """Handle progress notifications.""" print(f"[{progress}/{total}] {message or ''}") async def use_progress(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, progress_handler=progress_handler ) as session: await session.initialize() # Call tool with progress token - notifications handled by callback result = await session.call_tool( name="analyzeDataset", arguments={"datasetId": "ds-12345"} ) print(f"Tool result: {result}") return result asyncio.run(use_progress( 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 progress notifications automatically with mcp_client: agent = Agent(tools=mcp_client.list_tools_sync()) response = agent("Analyze dataset ds-12345") print(response)