Penanganan Error Server MCP: Apa yang Saya Pelajari

Saya pikir saya sudah selesai setelah server MCP saya berjalan untuk pertama kalinya. Ia mengembalikan daftar tool. Ia memanggil sebuah tool. Saya merasa berhasil.

Saya salah.

Menjalankan server MCP di lingkungan produksi mengajarkan saya bahwa tutorial biasanya hanya fokus pada skenario ideal (happy path). Mereka mengabaikan apa yang terjadi saat terjadi kesalahan. Inilah yang saya pelajari saat membangun server untuk basis pengetahuan saya yang berdurasi 1.800 jam.

  • Selalu kembalikan konten untuk hasil yang kosong Sebagian besar klien akan macet (hang) saat menerima respons kosong. Jika pencarian Anda tidak menemukan apa pun, jangan mengembalikan nilai kosong. Kembalikan pesan teks. Beritahu pengguna mengapa tidak ada hasil dan berapa banyak item yang ada di database Anda.

  • Kelola awal koneksi yang lambat Saya melakukan hosting di tier gratis yang bisa masuk ke mode tidur (sleep). Saat bangun, butuh waktu 15 detik. Banyak klien MCP mengalami timeout sebelum itu. • Kirim header lebih awal untuk menjaga koneksi tetap hidup. • Tetapkan batas keras pada ukuran respons. Potong (truncate) hasil yang besar agar tidak terkena batas timeout.

  • Berhenti membangun JSON secara manual Satu tanda kutip ganda yang tidak di-escape dalam sebuah judul merusak seluruh respons JSON saya. Klien terputus tanpa pesan error. Gunakan framework seperti Jackson untuk menangani serialisasi. Biarkan library yang mengelola proses escaping untuk Anda.

  • Antisipasi autentikasi yang tidak konsisten Klien yang berbeda menangani API key dengan cara yang berbeda. Beberapa menggunakan header. Beberapa menggunakan query parameter. Beberapa tidak menggunakan keduanya. • Dukung berbagai cara untuk mengirim kunci (keys). • Selalu kembalikan body error JSON yang tepat jika autentikasi gagal.

  • Tetapkan Content-Length secara eksplisit Beberapa klien kesulitan dengan chunked encoding. Jika respons Anda terpotong, berhentilah menggunakan kompresi. Hitung ukuran respons Anda sebelumnya dan tetapkan header Content-Length secara eksplisit.

Kelebihan: • Privasi: Hanya cuplikan relevan yang dikirim ke AI. • Interoperabilitas: Server dapat bekerja di berbagai klien yang berbeda. • Kesederhanaan: Server saya hanya terdiri dari 150 baris kode.

Kekurangan: • Ekosistem yang masih muda: Dokumentasi melewatkan banyak kasus ekstrem (edge cases). • Hosting: Anda harus mengelola endpoint dan cold start Anda sendiri. • Evolusi: Protokolnya sering berubah.

MCP mengubah catatan saya yang tidak terpakai menjadi alat yang berguna. Ini membuat data saya tersedia sehingga AI dapat melakukan pekerjaan beratnya.

Apakah Anda pernah membangun server MCP? Error apa yang Anda hadapi? Beritahu saya di kolom komentar.

Sumber: https://dev.to/kevinten10/mcp-server-error-handling-what-i-learned-building-a-production-mcp-server-for-my-1800-hour-1pha

Komunitas belajar opsional: https://t.me/GyaanSetuAi