View a markdown version of this page

Kontrak protokol MCP - Batu Dasar Amazon AgentCore

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

Kontrak protokol MCP

Memahami persyaratan untuk menerapkan Model Context Protocol (MCP) sehingga agen dapat memanggil alat dan server agen.

Misalnya kode, lihat Menye barkan server MCP di AgentCore Runtime.

Persyaratan implementasi protokol

Server MCP Anda harus menerapkan persyaratan protokol khusus ini:

  • Transpor tasi: Streamable-http transportasi diperlukan. Secara default, gunakan stateless mode (stateless_http=True) untuk kompatibilitas dengan manajemen AWS sesi dan penyeimbangan beban.

  • Manajemen S esi: Platform secara otomatis menambahkan Mcp-Session-Id header untuk isolasi sesi. Dalam mode stateless, server harus mendukung operasi stateless agar tidak menolak header yang dihasilkan Mcp-Session-Id platform.

Tip

Amazon Bedrock AgentCore juga mendukung server MCP stateful (stateless_http=False) yang memungkinkan kemampuan seperti elicitation (interaksi pengguna multi-turn) dan sampling (konten). LLM-generated Untuk versi protokol MCP 2025-11-25 dan sebelumnya, mode stateful diperlukan untuk elicitation dan sampling, karena server mengirimkan permintaan ini melalui sesi terbuka. Untuk versi 2026-07-28 dan yang lebih baru, elisitasi dan pengambilan sampel menggunakan pola permintaan multi pulang pergi (MRTR), yang tidak memerlukan mode stateful. Untuk informasi selengkapnya tentang MRTR, lihat Permintaan multi pulang-pergi dalam dokumentasi Model Context Protocol.

Mode stateful membawa status dalam sesi MCP di beberapa permintaan. Server MCP stateless menyimpan status di penyimpanan cadangan yang dikelola aplikasi Anda, seperti database. Ini menggunakan pegangan status eksplisit untuk mereferensikan status itu. Server mengembalikan pengidentifikasi status dalam hasil alat, dan klien meneruskannya kembali pada panggilan alat nanti untuk memasukkan kunci ke toko. Untuk informasi selengkapnya tentang penanganan status eksplisit, lihat pegangan status eksplisit dalam dokumentasi Model Context Protocol. Untuk informasi selengkapnya tentang server MCP stateful, lihat Fitur server MCP berstatus.

Manajemen sesi MCP dan kelengketan microVM

Model Context Protocol (MCP) menggunakan Mcp-Session-Id header untuk mengelola status sesi dan permintaan rute. Untuk spesifikasi MCP, lihat Transportasi HTTP Stream able MCP.

MicroVM Stickiness: Amazon Bedrock AgentCore menggunakan Mcp-Session-Id header untuk merutekan permintaan ke instance microVM yang sama. Klien harus menangkap yang Mcp-Session-Id dikembalikan dalam respons dan memasukkannya ke dalam semua permintaan berikutnya untuk memastikan afinitas sesi. Tanpa ID sesi yang konsisten, setiap permintaan dapat dialihkan ke microVM baru, yang dapat mengakibatkan latensi tambahan karena cold start.

MCP tanpa kewarganegaraan (): stateless_http=True

  • Platform menghasilkan Mcp-Session-Id dan memasukkannya dalam permintaan ke server MCP Anda.

  • Server MCP Anda harus menerima ID sesi yang disediakan platform (jangan menolaknya).

  • Platform mengembalikan hal yang sama Mcp-Session-Id kepada klien dalam tanggapan.

  • Klien harus menyertakan ID sesi ini di semua permintaan selanjutnya untuk afinitas microVM.

MCP yang berkeadaan (): stateless_http=False

  • Klien mengirimkan permintaan inisialisasi tanpa Mcp-Session-Id header.

  • Platform kembali Mcp-Session-Id dalam tanggapan.

  • Klien harus menyertakan ini Mcp-Session-Id dalam semua permintaan berikutnya untuk status sesi dan afinitas microVM.

Untuk detail selengkapnya tentang manajemen sesi MCP stateful, lihat spesifikasi manajemen sesi MCP.

catatan

Dalam kedua mode, Amazon Bedrock AgentCore selalu mengembalikan Mcp-Session-Id header ke klien. Selalu tangkap dan gunakan kembali header ini untuk kinerja optimal.

Persyaratan kontainer

Server MCP Anda harus digunakan sebagai aplikasi kontainer yang memenuhi spesifikasi berikut:

  • Tuan rumah: 0.0.0.0

  • Port: 8000 - Port standar untuk komunikasi server MCP (berbeda dari protokol HTTP)

  • Platform: wadah ARM64 - Diperlukan untuk kompatibilitas dengan lingkungan AWS runtime Amazon Bedrock AgentCore

Persyaratan jalur

/mcp - POSTING

Tujuan

Menerima pesan MCP RPC dan memprosesnya melalui kemampuan alat agen Anda, menyelesaikan pass-through payload InvokeAgentRuntime API dengan pesan MCP RPC standar

Format tanggapan

JSON-RPC request/response format berbasis, mendukung keduanya application/json dan text/event-stream sebagai tipe konten respons

Kasus penggunaan

T /mcp itik akhir melayani beberapa tujuan utama:

  • Pemanggilan dan manajemen alat

  • Penemuan kemampuan agen

  • Akses dan manipulasi sumber daya

  • Multi-step alur kerja agen

Penanganan kesalahan

Server MCP mengembalikan kesalahan sebagai respons kesalahan JSON-RPC 2.0 standar. Sebagian besar kesalahan dibawa dalam JSON-RPC error objek dengan kode status HTTP 200, seperti yang dipersyaratkan oleh spesifikasi MCP. Hanya kesalahan otentikasi, otorisasi, dan permintaan tingkat protokol yang menggunakan kode status HTTP non-200. Tabel berikut memetakan setiap pengecualian runtime ke kode JSON-RPC kesalahan, kode status HTTP, dan pesan. Beberapa pengecualian berbagi kode JSON-RPC kesalahan tetapi mengembalikan pesan yang berbeda, sehingga mereka terdaftar sebagai baris terpisah.

JSON-RPC Kode Kesalahan Pengecualian Runtime Kode Kesalahan HTTP Pesan Kesalahan

-32001

UnauthorizedException

401

Kesalahan otentikasi - KredenSIAL tidak valid

-32002

AccessDeniedException

403

Kesalahan otorisasi - Izin tidak memadai

-32003

ThrottlingException

200

Batas tarif terlampaui - Terlalu banyak permintaan

-32003

ServiceQuotaExceededException

200

Batas tarif terlampaui - Terlalu banyak permintaan

-32004

ResourceNotFoundException

200

Sumber daya tidak ditemukan - Sumber daya yang diminta tidak ada

-32005

ConflictException

200

Konflik sumber daya - Sumber daya sudah ada

-32005

RetryableConflictException

200

Operasi sesi sedang berlangsung, silakan coba lagi

-32006

ValidationException

200

Kesalahan validasi - Data permintaan tidak valid

-32010

RuntimeClientError

200

Kesalahan eksekusi alat - Silakan periksa CloudWatch log Anda untuk informasi lebih lanjut

-32011

McpRequestUnacceptableException

406

Terima Kesalahan Header - Protokol MCP membutuhkan header Terima: application/json, text/event -stream

-32603

Pengecualian lainnya

200

Kesalahan internal - Kesalahan server

ConflictExceptiondan RetryableConflictException keduanya menggunakan kode JSON-RPC kesalahan -32005 (HTTP 200) tetapi dibedakan oleh pesan mereka. Layanan mengembalikan RetryableConflictException (Session operation in progress, please retry) ketika operasi kedua menargetkan sesi saat layanan menyediakan atau menghancurkan sesi itu. Karena MCP mengembalikan HTTP 200 dengan kesalahan dalam JSON-RPC tubuh, pemanggil harus memeriksa badan respons dan mencoba lagi dengan backoff eksponensial pendek — klien MCP tidak mencobanya ulang secara otomatis.

Contoh respons kesalahan:

{ "jsonrpc": "2.0", "id": "req-001", "error": { "code": -32005, "message": "Session operation in progress, please retry" } }

Tanggapan otentikasi OAuth

OAuth-configured agen mengikuti standar otentikasi RFC 6749 (OAuth 2.0). Ketika otentikasi hilang, layanan mengembalikan respons 401 Tidak Sah dengan WWW-Authenticate header (per RFC 7235), memungkinkan klien menemukan titik akhir server otorisasi melalui API. GetRuntimeProtectedResourceMetadata

401 Tidak sah

Dikembalikan ketika header Otorisasi hilang atau kosong.

Tanggapan termasuk WWW-Authenticate header:

WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
catatan

SigV4-configured agen mengembalikan HTTP 403 dengan ACCESS_DENIED kesalahan dan tidak menyertakan WWW-Authenticate header.