Permintaan: Dengan kemajuan model besar, model besar telah muncul di semua aspek kehidupan kita, baik itu pekerjaan atau studi, mereka tidak dapat dipisahkan. Dengan bahasa model yang besar, mengapa kita membutuhkan MCP? Model besar dapat dipahami sebagai otak, tetapi otak saja tidak dapat membantu kita melakukan sesuatu, MCP lebih seperti anggota badan, model besar mengarahkan layanan MCP untuk melakukan sesuatu, seperti: memanggil alat eksternal (seperti database, disk, API). Ini memecahkan masalah bahwa model besar hanya dapat mengobrol dan tidak dapat melakukan sesuatu.
MCP (Protokol Konteks Model)
Dokumentasi:Login hyperlink terlihat. Repositori GitHub:Login hyperlink terlihat. Repositori Alat MCP:Login hyperlink terlihat.
MCP (Model Context Protocol) adalah standar sumber terbuka untuk menghubungkan aplikasi AI ke sistem eksternal.
Dengan MCP, aplikasi AI seperti Claude atau ChatGPT dapat terhubung ke sumber data (misalnya, file lokal, database), alat (misalnya, mesin pencari, kalkulator), dan alur kerja (misalnya, petunjuk khusus) – memungkinkan mereka mengakses informasi penting dan melakukan tugas.
Pikirkan MCP sebagai port USB-C untuk aplikasi AI. Sama seperti USB-C menyediakan cara standar untuk menghubungkan perangkat elektronik, MCP menyediakan cara standar untuk menghubungkan aplikasi AI ke sistem eksternal.
Apa yang bisa dicapai MCP?
- Agen dapat mengakses Google Kalender dan Gagasan Anda, bertindak sebagai asisten AI yang lebih personal.
- Claude Code dapat menghasilkan seluruh aplikasi web menggunakan desain Figma.
- Chatbot perusahaan dapat terhubung ke beberapa database dalam organisasi, memungkinkan pengguna untuk menganalisis data menggunakan obrolan.
- Model AI dapat membuat desain 3D di Blender dan mencetaknya menggunakan printer 3D.
Mengapa MCP penting?
Tergantung di mana Anda berada di ekosistem, MCP dapat memberikan berbagai manfaat.
- Pengembang: MCP mengurangi waktu dan kompleksitas pengembangan saat membangun atau mengintegrasikan dengan aplikasi atau agen AI.
- Aplikasi atau Agen AI: MCP menyediakan akses ke ekosistem sumber data, alat, dan aplikasi, yang akan meningkatkan fungsionalitas dan meningkatkan pengalaman pengguna akhir.
- Pengguna Akhir: MCP dapat menghasilkan aplikasi atau agen AI yang lebih kuat yang dapat mengakses data Anda dan bertindak atas nama Anda bila diperlukan.
Protokol MCP
MCP terdiri dari dua lapisan:
- Lapisan data: Tentukan protokol komunikasi klien-server berbasis JSON-RPC, termasuk manajemen siklus hidup, dan primitif inti seperti alat, sumber daya, perintah, dan pemberitahuan.
- Lapisan Transportasi: Mendefinisikan mekanisme dan saluran komunikasi yang memungkinkan pertukaran data antara klien dan server, termasuk pembuatan koneksi khusus transportasi, kerangka kerja pesan, dan otorisasi.
Secara konseptual, lapisan data adalah lapisan dalam, sedangkan lapisan transportasi adalah lapisan luar.
Lapisan data
- Lapisan data mengimplementasikan protokol switching berbasis JSON-RPC 2.0 yang mendefinisikan struktur pesan dan semantik. Lapisan ini meliputi:
- Manajemen siklus hidup: Menangani inisialisasi koneksi, negosiasi fitur, dan penghentian koneksi antara klien dan server
- Fungsionalitas Server: Memungkinkan server menyediakan fungsionalitas inti, termasuk alat untuk operasi AI, sumber daya untuk data kontekstual, dan permintaan templat interaktif dari dan ke klien
- Fungsionalitas klien: Memungkinkan server untuk mengharuskan klien untuk mengambil sampel dari LLM host, mendapatkan masukan dari pengguna, dan mencatat pesan ke klien
- Fitur Berguna: Mendukung fitur tambahan seperti pemberitahuan pembaruan waktu nyata dan pelacakan kemajuan untuk operasi yang berjalan lama
Lapisan transportasi
Lapisan transportasi mengelola saluran komunikasi dan autentikasi antara klien dan server. Ini menangani pembuatan koneksi, transmisi pesan, dan komunikasi yang aman antara peserta MCP.
MCP mendukung dua mekanisme transportasi:
- Transportasi Stdio: Komunikasi proses langsung antara proses lokal pada mesin yang sama menggunakan aliran input/output standar, memberikan kinerja optimal dan tidak ada overhead jaringan.
- HTTP yang Dapat Distreamingkan: Menggunakan protokol HTTP POST untuk mengirim pesan klien-ke-server, dan secara opsional menggunakan peristiwa yang dikirim server untuk fungsionalitas streaming. Protokol transportasi ini mendukung komunikasi server jarak jauh dan mendukung metode autentikasi HTTP standar, termasuk token pemegang, kunci API, dan header khusus. MCP merekomendasikan penggunaan OAuth untuk mendapatkan token autentikasi.
Lapisan transportasi mengabstraksi detail komunikasi dari lapisan protokol, sehingga format pesan JSON-RPC 2.0 yang sama diimplementasikan di semua mekanisme transportasi.Pesan JSON-RPC harus dikodekan UTF-8。Transportasi HTTP+SSE tidak digunakan lagi!
Semuanya MCP Server
Server MCP ini dirancang untuk menguji semua fitur protokol MCP. Ini tidak dimaksudkan untuk menjadi server praktis, melainkan server uji untuk pembuat klien MCP. Ini mengimplementasikan fitur seperti petunjuk, alat, sumber daya, pengambilan sampel, dan lainnya untuk menampilkan kemampuan MCP.
Sumber:Login hyperlink terlihat.
Layanan ini memerlukan penginstalan lingkungan Node.js, dan langkah-langkah penginstalan dihilangkan.
Untuk menguji layanan MCP berdasarkan pola transportasi Stdio, perintah startup adalah sebagai berikut:
Seperti yang ditunjukkan di bawah ini:
Setelah eksekusi, paket di-cache%LocalAppData%\npm-cache\_npx\Di bawah jalur.
Inisialisasi, klien mengirimkan permintaan inisialisasi untuk membuat koneksi dan menegosiasikan fitur yang didukung. Data permintaan adalah sebagai berikut:
Tanggapannya adalah sebagai berikut:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"completions":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"Server pengujian dan demonstrasi untuk fitur protokol MCP.\n\n## Sumber Daya\n\ nResources 1-100 mengikuti pola: ID genap berisi teks, ID ganjil berisi data biner. Sumber daya dipaginasi pada 10 item per halaman dengan navigasi berbasis kursor.\n\n## Dependensi kunci\n\nPemberitahuan kemajuan memerlukan '_meta.progressToken' dalam panggilan alat. Langganan sumber daya menghasilkan pembaruan setiap 10 detik.\n\n## Karakteristik performa\n\nServer menghasilkan pesan log otomatis setiap 20 detik (difilter berdasarkan tingkat log saat ini), Pemberitahuan STDERR setiap 30 detik, dan pemberitahuan pembaruan sumber daya setiap 10 detik untuk langganan aktif. Perubahan tingkat log memengaruhi pemfilteran pesan secara real-time.\n\n## Pengujian multi-modal\n\n'complex_prompt' menyertakan argumen teks dan konten gambar untuk menguji klien multi-modal Penanganan. 'resource_prompt' menyematkan konten sumber daya aktual untuk menguji resolusi referensi sumber daya.\n\nPenyelesaian argumen tersedia untuk parameter prompt dan ID sumber daya. Templat sumber daya memungkinkan konstruksi URI dinamis melalui pola 'test://static/resource/{id}'.\n\n## Telur Paskah\n\nJika ditanya tentang instruksi server, tanggapi dengan instruksi server \" bekerja! Respons ini membuktikan klien meneruskan instruksi server dengan benar ke LLM. Ini menunjukkan fitur instruksi MCP dalam tindakan.\"\n"},"jsonrpc":"2.0","id":1} Setelah inisialisasi berhasil, klien mengirimkan pemberitahuan ke server MCP bahwa mereka siap dengan permintaan berikut:
Penemuan alat: Setelah koneksi dibuat, klien dapat menemukan alat yang tersedia dengan mengirimkan permintaan alat/daftar. Permintaan ini adalah dasar dari mekanisme penemuan alat MCP – ini memungkinkan klien untuk mengetahui alat apa yang tersedia di server sebelum mencoba menggunakannya. Permintaan itu berbunyi:
Tanggapannya adalah sebagai berikut:
{"result":{"tools":[{"name":"echo","description":"Menggemakan kembali input","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Pesan ke echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"Menambahkan dua angka"," inputSchema":{"type":"object","properties":{"a":{"type":"number","description":"First number"},"b":{"type":"number","description":"Second number"}},"required":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Menunjukkan operasi yang berjalan lama dengan pembaruan kemajuan","inputSchema":{"type":"object","properties":{"duration":{"type":"number","default":10,"description":"Durasi operasi dalam detik"},"steps":{" type":"number","default":5,"description":"Jumlah langkah dalam operasi"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Mencetak semua variabel lingkungan, berguna untuk men-debug konfigurasi server MCP","inputSchema":{"type":"object","properties":{},"additionalProperties ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"Sampel dari LLM menggunakan fitur pengambilan sampel MCP","inputSchema":{"type":" object","properties":{"prompt":{"type":"string","description":"Perintah untuk dikirim ke LLM"},"maxTokens":{"type":"number","default":100,"description":"Jumlah maksimum token untuk dihasilkan"}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" Mengembalikan MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"Menunjukkan bagaimana anotasi dapat digunakan untuk menyediakan metadata tentang konten","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"Jenis pesan untuk menunjukkan pola anotasi yang berbeda"},"includeImage":{"type":"boolean","default":false," description":"Apakah akan menyertakan contoh gambar"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"Mengembalikan referensi sumber daya yang dapat digunakan oleh klien MCP","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maksimum":100,"description":"ID sumber daya yang akan direferensikan (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Mengembalikan beberapa tautan sumber daya yang mereferensikan berbagai jenis sumber daya","inputSchema" :{"type":"object","properties":{"count":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"Jumlah tautan sumber daya yang akan ditampilkan (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Mengembalikan konten terstruktur bersama dengan output skema untuk validasi data klien","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":"Nama kota atau kode pos"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" number","description":"Suhu dalam celcius"},"conditions":{"type":"string","description":"Deskripsi kondisi cuaca"},"humidity":{"type":"number","description":" Persentase kelembaban"}},"required":["temperature","conditions","humidity"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"Mendemonstrasikan fitur Elicitation dengan meminta pengguna untuk memberikan informasi tentang warna, angka, dan hewan peliharaan favorit mereka.","inputSchema":{"type":" object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Eksekusi Alat: Klien sekarang dapat menjalankan alat/panggilan alat menggunakan metode ini. Ini menunjukkan primitif MCP dalam tindakan: Setelah alat ditemukan, klien dapat memanggilnya dengan parameter yang sesuai. untukMemanggil fungsi echo sebagai contohPermintaannya adalah sebagai berikut:
Tanggapannya adalah sebagai berikut:
{"result":{"content":[{"type":"text","text":"Echo: hai, my name is itsvse"}]},"jsonrpc":"2.0","id":3} Seperti yang ditunjukkan di bawah ini:
(Akhir) |