Tim protokol MCP merilis versi baru pada 28 Juli 2026 yang menghapus sesi pada tingkat protokol dan memaksa setiap permintaan menjadi stateless. Jika Anda menjalankan klien, server, atau agen MCP, Anda harus menulis ulang kode yang mengasumsikan ID sesi yang persisten—atau Anda akan menghadapi masalah routing yang rusak, cache miss, dan pekerjaan latar belakang yang tidak terkendali.

Mengapa perubahan ini penting

MCP sebelumnya memerlukan handshake yang menghasilkan pengenal sesi (session identifier). Layanan downstream mengandalkan ID tersebut untuk mengasumsikan bahwa serangkaian permintaan akan mengenai proses yang sama, memungkinkan load balancer menggunakan sticky routing, dan untuk menyimpan data per sesi di dalam memori. Rilis bulan Juli mengganti model tersebut dengan alur request-response murni. Sebuah server kini dapat ditambahkan atau dihapus tanpa perlu khawatir tentang sesi yang hilang. Protokol tidak lagi mempertahankan konteks; aplikasilah yang harus melakukannya.

Tim yang tetap menggunakan kode berbasis sesi akan melihat permintaan melompat ke instansi yang salah, cache miss, dan pekerjaan latar belakang yang menumpuk. Tim yang mengadopsi pola stateless dapat menjalankan MCP di balik load balancer non-sticky dan mendapatkan observabilitas yang lebih ketat di seluruh rantai permintaan.

Apa yang sebenarnya berbeda

  • Siklus hidup protokol – Handshake dan ID sesi dihilangkan. Setiap permintaan harus membawa semua informasi yang dibutuhkan server; tidak ada jaminan bahwa permintaan lanjutan akan mendarat di proses yang sama.
  • Routing HTTP – Gateway sekarang membaca dua header baru, Mcp-Method dan Mcp-Name, untuk memutuskan ke mana permintaan akan diteruskan. Routing berbasis session-cookie tidak lagi berfungsi.
  • Caching – Spesifikasi menambahkan bidang ttlMs (time-to-live dalam milidetik) dan cacheScope untuk pembacaan. Anda memutuskan apakah data usang (stale) dapat diterima dan mengonfigurasi cache sesuai kebutuhan.
  • Observabilitas – Blok _meta sekarang mengharapkan payload W3C Trace Context, yang memungkinkan sistem tracing menyatukan gateway edge, tooling, dan pekerjaan backend ke dalam satu trace end-to-end yang utuh.
  • Komposisi – Ekstensi telah diformalkan; kapabilitas baru dapat ditambahkan tanpa menyentuh spesifikasi inti, mendorong arsitektur bergaya plug-in.
  • Pekerjaan berdurasi lama – Request/response sederhana tidak lagi cukup untuk tugas yang berjalan selama menit atau jam. Protokol sekarang mendefinisikan objek Task untuk pekerjaan asinkron, lengkap dengan kontrol siklus hidup.

Risiko yang tersembunyi dalam kode lama

Audit cepat sering kali mengungkap pola yang mengasumsikan adanya statefulness:

  • Map di dalam memori yang menggunakan kunci ID sesi.
  • Load balancer yang dikonfigurasi untuk sticky sessions.
  • Rutinitas startup yang memuat data per sesi ke dalam memori lokal.
  • Logika pembersihan yang menghapus data bisnis saat sesi berakhir.

Jika ada dari hal-hal ini yang tetap ada setelah migrasi, sistem akan kehilangan data atau kebocoran sumber daya saat beban tinggi.

Daftar periksa migrasi yang konkret

1. Inventarisasi asumsi saat ini

Petakan setiap tempat di mana kode Anda menyentuh ID sesi, aturan sticky-routing, atau cache lokal proses. Dokumentasikan komponen mana yang bergantung pada masing-masing hal tersebut.

2. Buat identitas menjadi eksplisit

Tambahkan tenant ID, run ID, dan user ID ke setiap payload atau header permintaan. Perlakukan pengenal ini sebagai sumber kebenaran (source of truth) untuk otorisasi dan partisi data.

3. Perbarui konfigurasi routing

Ganti routing berbasis sesi dengan aturan yang membaca Mcp-Method dan Mcp-Name. Uji logika gateway baru dengan deployment minimal dua instansi di balik load balancer non-sticky.

4. Refaktor logika caching

Beralihlah ke bidang ttlMs dan cacheScope yang baru. Jalankan uji performa untuk melihat bagaimana nilai TTL yang berbeda memengaruhi tingkat hit (hit rates) dan persyaratan kesegaran data.

Aktifkan tracing end-to-end: Isi blok _meta dengan header W3C Trace Context. Verifikasi bahwa trace sekarang mengalir dari gateway edge melalui layanan backend Anda tanpa celah.

Adopsi model Task untuk pekerjaan asinkron: Tentukan siapa yang boleh membuat tugas, tetapkan runtime maksimum, dan terapkan batas antrean. Tambahkan kebijakan pembatalan dan pengulangan (retry) yang eksplisit, serta batasi apa yang dapat dilakukan agen saat tugas sedang tertunda.

Tinjau catatan rilis SDK dan pustaka klien sebelum 28 Juli.

Jalankan regression suite yang menargetkan jalur kegagalan: Selain pengujian jalur sukses (happy-path), masukkan header yang hilang, tugas yang kedaluwarsa, dan direktif cache yang malformed. Pastikan sistem mengalami degradasi secara anggun (gracefully).

Apa yang perlu diperhatikan selanjutnya

Tim yang bermigrasi dengan aman akan menguji batasan-batasannya, bukan hanya jalur sukses. Setiap deployment produksi yang masih mengharapkan ID sesi setelah 28 Juli mungkin gagal berinteroperasi dengan server MCP yang baru.