Putting an MCP Server Inside a Laravel App
Agen AI membutuhkan lebih dari sekadar UI hasil scraping. Mereka membutuhkan cara untuk memanggil alat (tool) tertentu dengan izin yang tepat. Inilah yang dilakukan oleh Model Context Protocol (MCP).
Baru-baru ini, saya mengintegrasikan server MCP secara langsung ke dalam aplikasi Laravel. Saya ingin membagikan keputusan arsitektural dalam membangunnya secara aman.
The Receptionist Metaphor Bayangkan aplikasi Anda sebagai sebuah gedung perkantoran.
- UI web adalah lobi untuk manusia.
- REST API adalah pintu masuk staf untuk sistem.
- Server MCP adalah meja resepsionis untuk agen AI.
Agen menunjukkan ID dan meminta tugas tertentu. Resepsionis tidak memberikan kunci gedung kepada mereka. Mereka memeriksa izin, melakukan satu tugas, dan mengembalikan jawaban yang terstruktur.
Key Design Decisions
Use a single endpoint Jangan membuat banyak rute untuk alat yang berbeda. Gunakan satu endpoint
/mcp. Protokol ini menangani penemuan alat (tool discovery) secara otomatis. Satu permukaan (surface) tunggal lebih mudah untuk diamankan dan didokumentasikan.Support dual authentication Pemanggil yang berbeda membutuhkan metode keamanan yang berbeda:
- Pemanggil pihak pertama (seperti alat CLI) menggunakan token akses pribadi Sanctum.
- Agen pihak ketiga (bertindak atas nama pengguna) menggunakan OAuth 2.1.
Gunakan resolver bergaya driver untuk menangani keduanya. Kode alat hanya perlu peduli pada pengguna yang terautentikasi, bukan bagaimana mereka masuk (login).
Enforce existing RBAC Autentikasi hanya membuktikan siapa pemanggilnya. Anda tetap harus memeriksa apa yang dapat mereka lakukan. Setiap alat harus dipetakan ke kemampuan (ability) yang sudah ada. Jika seorang pengguna tidak dapat melihat peserta di UI web, mereka juga tidak boleh dapat melakukannya melalui MCP.
Limit data output Jangan pernah mengembalikan model database secara penuh. Perlakukan output MCP seperti API publik. Kembalikan hanya field spesifik yang dibutuhkan agen. Hal ini mencegah kebocoran data yang tidak disengaja.
Testing for Security Pengujian Anda harus membuktikan bahwa sistem gagal dengan benar. Uji bahwa:
- Pengguna yang tidak berwenang menerima error 403 Forbidden.
- Pengguna yang berwenang hanya menerima field yang diizinkan.
Rangkaian pengujian (test suite) yang baik adalah pertahanan terbaik Anda terhadap kebocoran data saat menggunakan agen otonom.
Summary Untuk membangun server MCP yang bertanggung jawab, ikuti tiga aturan ini:
- Autentikasi setiap pemanggil menggunakan skema yang tepat.
- Otorisasi setiap alat menggunakan model izin Anda yang sudah ada.
- Perlakukan setiap output alat sebagai sumber daya publik yang terbatas.
