Meletakkan Pelayan MCP di Dalam Aplikasi Laravel
Ejen AI memerlukan lebih daripada sekadar UI yang di-scrape. Mereka memerlukan cara untuk memanggil alatan khusus dengan kebenaran yang betul. Inilah yang dilakukan oleh Model Context Protocol (MCP).
Baru-baru ini, saya telah menyepadukan pelayan MCP secara terus ke dalam aplikasi Laravel. Saya ingin berkongsi keputusan seni bina untuk membina ini dengan selamat.
Metafora Resepsionis Bayangkan aplikasi anda sebagai sebuah bangunan pejabat.
- UI web adalah lobi untuk manusia.
- REST API adalah pintu masuk kakitangan untuk sistem.
- Pelayan MCP adalah meja resepsionis untuk ejen AI.
Ejen menunjukkan ID dan meminta tugasan khusus. Resepsionis tidak memberikan mereka kunci bangunan. Mereka menyemak kebenaran, melaksanakan satu tugasan, dan mengembalikan jawapan yang berstruktur.
Keputusan Reka Bentuk Utama
Gunakan satu endpoint Jangan cipta banyak laluan (routes) untuk alatan yang berbeza. Gunakan satu endpoint
/mcp. Protokol tersebut mengendalikan penemuan alatan secara automatik. Satu permukaan tunggal adalah lebih mudah untuk dikawal selia dan didokumentasikan.Sokong pengesahan dwi-kaedah Pemanggil yang berbeza memerlukan kaedah keselamatan yang berbeza:
- Pemanggil pihak pertama (seperti alatan CLI) menggunakan token akses peribadi Sanctum.
- Ejen pihak ketiga (bertindak bagi pihak pengguna) menggunakan OAuth 2.1.
Gunakan penyelesai (resolver) gaya pemacu (driver-style) untuk mengendalikan kedua-duanya. Kod alatan hanya perlu mengambil tahu tentang pengguna yang telah disahkan, bukan bagaimana mereka log masuk.
Laksanakan RBAC sedia ada Pengesahan (Authentication) hanya membuktikan siapa pemanggil tersebut. Anda masih perlu menyemak apa yang boleh mereka lakukan. Setiap alatan harus dipetakan kepada keupayaan (ability) yang sedia ada. Jika pengguna tidak boleh melihat peserta dalam UI web, mereka tidak sepatutnya boleh melakukannya melalui MCP.
Hadkan output data Jangan sekali-kali mengembalikan model pangkalan data yang lengkap. Anggap output MCP seperti API awam. Hanya kembalikan medan (fields) khusus yang diperlukan oleh ejen. Ini dapat mengelakkan kebocoran data yang tidak disengajakan.
Pengujian untuk Keselamatan Ujian anda mesti membuktikan bahawa sistem gagal dengan betul. Uji bahawa:
- Pengguna yang tidak diberi kebenaran menerima ralat 403 Forbidden.
- Pengguna yang diberi kebenaran hanya menerima medan yang dibenarkan.
Set ujian yang baik adalah pertahanan terbaik anda terhadap kebocoran data apabila menggunakan ejen autonomi.
Ringkasan Untuk membina pelayan MCP yang bertanggungjawab, ikuti tiga peraturan ini:
- Sahkan (Authenticate) setiap pemanggil menggunakan skema yang betul.
- Berikan kebenaran (Authorize) pada setiap alatan menggunakan model kebenaran sedia ada anda.
- Anggap setiap output alatan sebagai sumber awam yang terhad.
