Langsung ke konten
Tutorial

MCP SSE tidak digunakan lagi: bermigrasi ke HTTP Streamable sebelum server Anda rusak

| 8 min read

Transportasi MCP SSE mencapai akhir masa pakainya pada tanggal 1 April 2026. Bermigrasi ke HTTP yang Dapat Dialirkan dengan pengendali tanpa kewarganegaraan, instance baru per permintaan, dan jalur resume sesi; kode untuk Pekerja Node, Python, dan Cloudflare.

Data center with network switches representing stateless MCP transport
Photo by Taylor Vick on Unsplash

Transportasi Peristiwa Terkirim Server MCP mencapai akhir masa pakainya pada 1 April 2026. Pustaka klien masih mengirimkan dukungan SSE untuk kompatibilitas ke belakang, tetapi versi minor berikutnya dari protokol dasar menghapusnya, dan registri MCP publik sekarang menolak listingan baru khusus SSE. Jika server MCP Anda masih menjawab /sse Dan /messages, Anda memiliki jendela migrasi, bukan jendela selamanya.

SSE membuka satu koneksi TCP per klien. Dua salinan server MCP Anda berada di belakang beban penyeimbang menghasilkan sesi otak terpisah; penskalaan horizontal paling membutuhkan perutean yang lengket penyeimbang beban yang dikelola tidak dapat berekspresi dengan jelas. HTTP yang dapat dialirkan menggunakan respons permintaan standar siklus dengan aliran opsional yang dapat dilanjutkan, yang berarti setiap instance dapat menjawab permintaan apa pun dan setiap CDN di dunia sudah mengetahui cara melakukan cache dan merutekannya.

Berikut jalur migrasi lengkap: kode server sebelum dan sesudah, pola penyimpanan data alat stateful, implementasi Cloudflare Workers, setara dengan FastAPI, dan a .well-known file metadata sehingga klien dapat menemukan server Anda tanpa membuka a koneksi terlebih dahulu.

Langkah 1: Hapus pengendali SSE

Kode lama terlihat seperti ini. Dua rute, peta sesi yang disimpan dalam memori proses, dan transportasi yang membuat respons tetap terbuka hingga klien terputus:

Setiap masalah dengan SSE muncul di cuplikan itu. Itu transports Peta hanya terlihat oleh satu proses; restart server dan setiap sesi terbuka mati; skala secara horizontal dan separuh klien Anda mengunjungi server yang belum pernah mendengarnya. Robek.

Langkah 2: Instal HTTP yang Dapat Dialirkan

Penangan baru lebih kecil. Satu rute menjawab GET dan POST; setiap permintaan muncul kembali pasangan server dan transportasi; pengumpul sampah membersihkan ketika respons ditutup:

Tiga kunci penting. sessionIdGenerator: undefined memilih keluar dari sesi menyematkan demikian transportasi sepenuhnya tanpa kewarganegaraan. enableJsonResponse: true mengembalikan satu JSON body untuk alat yang tidak menghasilkan kemajuan, yang menjaga jalur tetap cepat dan dapat di-cache. Itu res.on("close") pembersihan mencegah kebocoran soket pada pemutusan klien awal.

Langkah 3: Pindahkan status sesi dari memori proses

Pengendali tanpa kewarganegaraan bukan berarti produk tanpa kewarganegaraan. Alat yang sudah berjalan lama masih perlu dilaporkan kemajuan di beberapa permintaan. Letakkan status itu di Redis, Objek Tahan Lama, DynamoDB, atau Postgres; membacanya saat masuk, menulisnya saat keluar:

Itu Mcp-Session-Id header, jika ada, mengidentifikasi sesi logis; pawangnya menggunakannya sebagai kunci penyimpanan data. A Last-Event-Id header dari klien memungkinkan transport melanjutkan aliran setelah terputus tanpa memulai ulang panggilan alat. Kedua header tersebut opsional; alat tanpa kewarganegaraan dapat mengabaikannya sepenuhnya.

Langkah 4: Terapkan tanpa server

HTTP yang dapat dialirkan membuka kunci hal yang diblokir SSE: menjalankan server MCP di Cloudflare Workers, AWS Lambda, Fungsi Vercel, atau Mesin Terbang. Berikut server Cloudflare Workers selengkapnya di 40 baris, mengenai titik akhir Pencarian IP Botoi sebagai salah satu alat contoh:

Tidak ada peta sesi, tidak ada pengatur waktu di latar belakang, tidak ada ping yang tetap hidup. Pekerja berputar sesuai permintaan, menjawab permintaan tersebut, dan dimatikan. Satu Pekerja menangani sejumlah klien paralel karena ada tidak ada keadaan bersama yang bisa berubah. Cold start untuk server MCP pada jam Pekerja di bawah 5 ms untuk sebagian besar permukaan alat; di Lambda suhunya dingin 50 hingga 200 ms.

Langkah 5: Migrasi Python dengan FastAPI

Server Python mendapatkan bentuk yang sama. Pengendali FastAPI membuat server MCP per permintaan dan delegasi ke transportasi:

Polanya sama di semua bahasa: bangun server per permintaan, serahkan permintaan HTTP ke transportasi, kembalikan apa pun yang dihasilkan transportasi tersebut. Waktu proses bahasa berbeda-beda; arsitektur tidak.

Langkah 6: Publikasikan kartu server untuk penemuan

Salah satu celah yang ditutup oleh peta jalan tahun 2026 adalah penemuan tanpa koneksi. Registri dan crawler biasanya memerlukan jabat tangan langsung untuk mempelajari apa yang dilakukan server Anda. Sajikan dokumen JSON di /.well-known/mcp/server-card.json dan klien dapat mempelajari URL transportasi, skema otentikasi, dan kemampuan yang ditetapkan sebelum terhubung:

Ini adalah bagian yang memungkinkan platform agen mengindeks server Anda tanpa menyelidikinya. Auth0 untuk Agen, Cloudflare Agent Cloud, dan registri publik MCP semuanya menggunakan format ini; tambahkan itu sekali dan server Anda menjadi dapat didaftar.

Verifikasi migrasi

Sebelum Anda membalik DNS, jalankan inspektur atau lakukan curl pada titik akhir baru. Permukaan pertama a UI dengan setiap alat dan sumber daya terekspos; yang kedua mengonfirmasi format kabel sudah benar:

Sukses tools/list respons dengan katalog alat lengkap Anda berarti servernya hidup. Jika responsnya kembali sebagai text/event-stream ketika Anda mengharapkan JSON, itu transportasi punya enableJsonResponse dengan disabilitas; membalik bendera.

Jaga agar kedua transportasi tetap berjalan di jalur yang berbeda selama seminggu setelah peralihan Anda: /sse sebagai pendengar lama, /mcp sebagai yang baru. Keluarkan baris log setiap waktu klien terhubung /sse dengan agen penggunanya. Saat log menjadi sunyi, Anda dapat menghapus handler lama. Sebagian besar perpustakaan klien mengirimkan dukungan HTTP Streamable Desember 2025 dan Februari 2026; mengharapkan ekor panjang dari instalasi Cursor dan Claude Desktop yang lama.

Apa yang tetap sama, apa yang berubah

Kekhawatiran transportasi SSE HTTP yang dapat dialirkan
Model koneksi Satu berumur panjang per klien Permintaan-respons, aliran opsional
Penyeimbangan beban Sesi yang sulit diperlukan Setiap contoh menjawab permintaan apa pun
Status sesi Memori dalam proses Datastore mengetikkan ID sesi
Cocok tanpa server Diblokir oleh batas durasi koneksi Warga asli
Streaming kemajuan Bawaan Ikut serta melalui header Terima
Penemuan Jabat tangan langsung /.well-known/mcp/server-card.json
Pemanggilan alat JSON-RPC melalui frame SSE JSON-RPC melalui badan HTTP

Poin-poin penting

  • SSE tidak digunakan lagi, bukan dihapus. Klien masih menerimanya hingga tahun 2026, tetapi baru server dan daftar registri memerlukan HTTP yang Dapat Dialiri.
  • Bangun baru sesuai permintaan. Tidak ada peta sesi dalam proses; biarkan server keberatan hidup hanya selama RPC berlangsung.
  • Dorong status ke datastore. Redis, Objek Tahan Lama, atau Postgres diketik pada Mcp-Session-Id tajuk.
  • Tanpa server kembali hadir. Pekerja Cloudflare, Lambda, Vercel Fungsi; tidak satupun dari mereka mendukung SSE yang berumur panjang dengan baik.
  • Publikasikan kartu server. /.well-known/mcp/server-card.json membuat server Anda dapat ditemukan tanpa koneksi.

Server MCP Botoi dikirimkan pada HTTP yang Dapat Dialiri di api.botoi.com/mcp dengan 49 alat pilihan di seluruh pencarian IP, validasi email, DNS, hashing, penandatanganan JWT, dan QR generasi. Sumbernya berlisensi MIT dan mencerminkan pola di atas; membaca dokumen pengaturan untuk Konfigurasi Claude Desktop, Claude Code, Cursor, VS Code, dan Windsurf.

FAQ

Apakah MCP SSE dihapus atau tidak digunakan lagi?
Tidak digunakan lagi mulai 1 April 2026; dukungan runtime masih ada di perpustakaan klien untuk kompatibilitas mundur, namun server MCP baru dan daftar registri memerlukan HTTP yang Dapat Dialiri. Peta jalan 2026 menghapus SSE dari protokol dasar sepenuhnya pada versi minor berikutnya; mulai migrasi Anda sekarang, bukan saat penghapusan.
Mengapa MCP menghapus SSE?
SSE membuka satu koneksi TCP per klien dan membuat penskalaan horizontal menjadi sulit. Dua server SSE identik di belakang penyeimbang beban round-robin menghasilkan sesi otak terpisah: status alat yang disimpan di server A tidak terlihat oleh server B. HTTP yang dapat dialirkan menggunakan siklus respons-permintaan singkat dengan aliran opsional yang dapat dilanjutkan, sehingga penyeimbang beban dan CDN merutekan setiap permintaan tanpa menyematkan klien ke sebuah instance.
Apa itu instance-per-permintaan baru?
Setiap permintaan yang masuk membuat objek server MCP baru, menangani RPC, dan membuang instance tersebut. Tidak ada status dalam memori di antara permintaan. Status yang perlu dipertahankan (token kemajuan, sesi alat) berada di penyimpanan data yang dibaca oleh pengendali saat masuk dan ditulis saat keluar. Hal ini memungkinkan Anda menjalankan server yang sama pada platform tanpa server seperti Cloudflare Workers atau AWS Lambda tanpa batas durasi koneksi 15 menit.
Apakah saya masih memerlukan WebSockets untuk keluaran alat streaming?
Tidak. HTTP yang dapat dialirkan menyertakan aliran gaya SSE opsional di dalam respons POST standar untuk alat yang memberikan hasil parsial. Perbedaan dari SSE lama adalah aliran berada di dalam satu permintaan HTTP dan diakhiri dengan pemanggilan alat. Anda tidak membiarkan soket tetap terbuka di antara panggilan alat.
Bagaimana cara menguji server HTTP Streamable secara lokal?
Gunakan inspektur MCP resmi (npx @modelcontextprotocol/inspector) yang sekarang dapat menggunakan kedua transportasi. Atau melengkungkan titik akhir dengan isi JSON-RPC dan header Accept: text/event-stream; Anda akan melihat respons JSON tunggal atau aliran peristiwa bergantung pada apakah alat tersebut menghasilkan kemajuan. Resume sesi dapat diuji dengan header Mcp-Session-Id dan Last-Event-Id.

Mulai membangun dengan botoi

150+ endpoint API untuk pencarian, pemrosesan teks, pembuatan gambar, dan utilitas developer. Paket gratis, tanpa kartu kredit.