Penjelajahan mendalam tentang MCPs, Bagian 1: Apa itu MCP, sih?

Jika Anda mengikuti perkembangan A.I., Anda pasti sudah mendengar tentang Model Context Protocol (MCP). Sejak Anthropic mengumumkan standar baru ini pada November 2024, popularitasnya melonjak pesat. Ada MCP untuk mengirim email, MCP untuk mencari di web, dan MCP yang menjalankan MCP lainnya. MCPs memungkinkan model bahasa besar (LLMs) yang sederhana untuk membuat permintaan pull dan pemesanan penerbangan. Pada bulan Mei, Microsoft bahkan mengumumkan MCP Registry untuk Windows yang memungkinkan aplikasi untuk mengekspos fungsionalitasnya kepada agen AI.
Asyik! Tapi bagaimana? Apa itu MCP? Bagaimana cara menggunakannya? Mengapa hal ini menjadi jauh lebih populer daripada upaya-upaya sebelumnya? Bagaimana cara chatbot melakukan hal-hal di dunia nyata? Dan bagaimana cara Anda membuatnya sendiri?
Ketika kami memutuskan untuk membangun server MCP kami sendiri untuk DeepL API, hal itu tampak menakutkan. Tapi begitu Anda benar-benar memahami bagaimana MCPs bekerja, bagaimana MCPs memungkinkan agen untuk menemukan dan menggunakan alat, dan bagaimana Anda dapat membangun server MCP dasar dengan 10 baris kode, hal itu tidak lagi menakutkan. Dalam seri posting ini, kami akan berusaha untuk mengurai misteri topik ini. Kami akan menjelajahi:
- Apa itu MCP?
- Cara menggunakan MCP dalam klien AI
- Cara membangun server MCP
Ayo kita berangkat!
Apa arti MCP?
MCP merupakan singkatan dari ModelContextProtocol.
"Model"adalah model AI. Ini bisa berupa jenis permukaan AI apa pun, tetapi umumnya dibangun di atas LLM. Di sini, kami akan menyebutnya sebagai agen AI atau asisten AI.
“Kontekstual”merujuk pada konteks di mana agen AI beroperasi. Dalam AI, kita sering membicarakan tentang "jendela konteks", yang merujuk pada semua konteks yang diintegrasikan oleh LLM saat menghasilkan responsnya terhadap suatu prompt - riwayat percakapan, prompt sistem, dan lainnya. Agar MCP dapat berfungsi, permukaan AI memberikan prompt tambahan kepada LLM yang mendasarinya, yang menentukan alat apa yang dapat digunakan dan cara menggunakannya.
"Protokol"adalah kumpulan aturan yang menggambarkan cara dua entitas berkomunikasi melalui jaringan. Salah satu protokol yang Anda gunakan setiap hari adalah HTTP (HyperText Transfer Protocol), yang mengatur cara server web dan klien web berkomunikasi.
Menggabungkan semua ini: "Model Context Protocol " adalah protokol yang menyediakan konteks yang memungkinkan model AI menggunakan alat dan sumber daya eksternal.
MCP adalah standar terbuka yang diciptakan oleh dua insinyur Anthropic. Ini menggunakan JSON-RPC, sebuah protokol populer untuk mendefinisikan panggilan fungsi. Dan terinspirasi oleh Bahasa Server Protocol, yang dibuat oleh Microsoft untuk memisahkan logika penanganan bahasa pemrograman dari IDE.
MCP bukanlah sebuah perangkat lunak, aplikasi, atau API. Tetapi hal ini memberikan akses kepada agen AI ke semua hal tersebut!
Apa yang dilakukan MCP?
LLMs dapat memberikan respons yang cerdas dan bermanfaat terhadap masukan pengguna. Namun, mereka tidak memiliki akses ke layanan eksternal, tidak dapat berkomunikasi dengan perangkat lunak lain, dan tidak memiliki cara untuk mendapatkan informasi terbaru. MCP memberikan kemampuan kepada setiap antarmuka AI untuk mengirim permintaan ke layanan perangkat lunak apa pun dan mendapatkan respons. Hal ini memberikan agen AI cara standar untuk mengakses alat, sumber daya, dan data dari luar.
Tanpa MCP, klien AI hanyalah otak tanpa tubuh, tidak ada cara untuk mengakses dunia luar. Dengan MCP, klien AI dapat menjadi agen!
Siapa yang dapat menggunakan MCP?
Karena MCP adalah standar terbuka, siapa pun dapat mengimplementasikan klien MCP atau server MCP.
Klien dapat berupa aplikasi apa pun yang dibangun di sekitar LLM. Anda dapat menggunakan MCPs dalam aplikasi seperti Claude Desktop, VSCode, Windsurf dan Cursor. Atau Anda dapat menggunakan MCPs dengan agen AI yang telah Anda bangun menggunakan framework seperti LangChain atau CrewAI.
Mengapa MCP menjadi begitu populer?
Salah satu alasannya adalah karena ini adalah standar terbuka. Setiap agen AI dapat mengimplementasikan MCP, dan begitu pula setiap alat. Hal ini membuatnya memiliki daya tarik yang lebih luas dibandingkan dengan solusi untuk produk perusahaan tertentu, seperti OpenAI’s Panggilan fungsi.
Dalam menciptakan solusi universal ini, para pencipta MCP terinspirasi oleh Language Server Protocol (LSP). Sebelum LSP, ketika sebuah IDE ingin mengimplementasikan fitur seperti autocompletion atau syntax highlighting untuk bahasa tertentu, IDE tersebut harus mengembangkan integrasinya sendiri. Hasilnya adalah apa yang para pencipta baru-baru ini sebut sebagai masalah m × n, di mana orang perlu mengimplementasikan layanan bahasa secara terpisah untuk setiap kombinasi IDE/bahasa yang mungkin. Dengan LSP, setiap bahasa pemrograman hanya memerlukan satu perpustakaan integrasi. Dan sebuah IDE yang mendukung LSP dapat mendukung bahasa pemrograman apa pun. Demikian pula, setelah suatu layanan mengimplementasikan server MCP, setiap klien AI yang mendukung MCP dapat menggunakannya. Klien hanya perlu mendukung MCP.
MCP juga fleksibel dalam hal lain. Dapat dijalankan secara lokal atau melalui jaringan. Dan hal ini berasal dari Anthropic, yang sangat dihormati dan yang akan berbagi manfaat dari standar terbuka.
Mengapa agen AI memerlukan protokol standar?
Karena LLMs sangat ahli dalam memahami dan menerapkan informasi, apakah mereka tidak bisa menggunakan layanan perangkat lunak apa pun yang deskripsinya termasuk dalam data latihan mereka? Lagipula, LLMs sudah memahami cara menggunakan banyak API populer, seperti yang akan Anda temukan jika Anda meminta bantuan dari asisten pemrograman seperti Copilot atau Sourcegraph.
Tetapi jika Anda memberikan akses ke semua API dalam data latihan kepada LLM, kekacauan akan terjadi. Bagaimana cara mengetahui API mana yang harus dipanggil dan kapan? Bagaimana cara mendapatkan API key dan kredensial Anda, dan bagaimana cara menggunakan layanan yang memerlukan jenis akses lainnya? Bagaimana jika Anda ingin mengetahui jarak tempuh dari Kansas City ke Des Moines - atau suhu saat ini di Bangkok? Ada banyak cara untuk menemukan informasi ini. Sebagai pengguna, Anda ingin memiliki kendali atas tindakan yang dipilih oleh LLM Anda. Hal ini terutama berlaku ketika sistem tidak hanya mengambil informasi, tetapi juga melakukan tindakan yang memengaruhi dunia, seperti mengirim email atau memesan pizza untuk Anda.
Benar, seorang agen dapat membaca dan memahami spesifikasi OpenAPI tingkat rendah, atau seluruh dokumentasi API, lalu melakukan panggilan API sesuai dengan itu. Namun, MCP memungkinkan pembuat alat untuk mendefinisikan layanan tingkat tinggi yang akan sangat berguna bagi agen AI, mengarahkan agen tersebut ke arah yang bermanfaat. Sampai saat ini, ini adalah bidang di mana manusia masih unggul.
Dengan demikian, ternyata cara terbaik untuk saat ini adalah secara eksplisit mendefinisikan alat dan sumber daya yang dapat digunakan oleh LLM serta cara penggunaannya. MCP melakukannya dengan cara tradisional, secara deterministik — bukan dengan membiarkan LLM melakukan keajaibannya, tetapi melalui kode dan JSON.
Tapi bagaimana LLM dapat menggunakan alat-alat?
Secara mendasar, LLM adalah mesin yang menghasilkan token - token yang manusia temui dalam bentuk teks, gambar, audio, dan sebagainya. Jadi, bagaimana mesin semacam itu bisa memiliki akses ke alat dan sumber daya? Bagaimana sistem tersebut mengetahui bahwa ia memiliki akses tersebut, dan bagaimana ia mengetahui akses mana yang harus digunakan?
Kuncinya adalah, memang, seperti yang ditekankan oleh Maximilian Schwarzmüller, LLMs hanya dapat berkomunikasi dengan dunia luar melalui token. Mereka menerima token sebagai masukan dan menghasilkan token sebagai keluaran. Dan token-token tersebut dapat mencakup entitas yang berarti "Saya ingin menggunakan alat." Jadi, untuk menunjukkan bahwa ia ingin menggunakan alat atau sumber daya, dan untuk benar-benar menggunakannya, LLM menghasilkan token standar yang akan dikenali oleh perangkat lunak di sekitarnya sebagai panggilan alat dan diintercept. Perangkat lunak tersebut kemudian memanggil layanan dan mengembalikan hasilnya ke LLM.
LLM dapat menggunakan token khusus di sini. Namun, biasanya sistem ini hanya menggunakan pemisah dan bahasa tertentu — dengan cara ini, Anda dapat mengintegrasikan kemampuan ini ke dalam model bahasa besar (LLM) yang sudah ada melalui proses penyempurnaan (fine-tuning). Misalnya, Anda dapat menggunakan tag awal dan akhir dalam kurung siku yang mengapit JSON, seperti contoh output agen berikut:
Tentu saja! Saya dapat membuat spreadsheet baru untuk Anda. Tunggu dulu…
[tool-start]
{
"tool": "spreadsheets",
"action": "create"
}
[tool-end]
Inilah yang dilakukan para peneliti dalam makalah Toolformer mereka pada tahun 2023, yang menunjukkan, seperti judulnya, “Model Bahasa Dapat Mengajarkan Diri Mereka Sendiri untuk Menggunakan Alat” Dalam studi ini, para penulis menghasilkan data latihan yang mencakup representasi teks biasa dari panggilan API dan hasilnya. Dengan melakukan penyempurnaan pada LLM menggunakan data tambahan ini, mereka berhasil mengembangkan LLM yang dapat memanggil API-API tersebut untuk menghasilkan respons yang menjanjikan terhadap suatu prompt.
Mereka menggunakan format sederhana:
[function_name(data) → result]
Misalnya, mengetahui bahwa LLMs kesulitan dengan matematika, mereka menyediakan alat Kalkulator. Mereka kemudian memasukkan string seperti ini ke dalam data latihan:
Dari 1.400 peserta, 400 (atau [Calculator(400 / 1400) → 0,29] 29%) lulus ujian.
dan
Nama tersebut berasal dari "la tortuga", kata dalam bahasa Spanyol untuk [MT("tortuga") → kura-kura] kura-kura.
Dengan melakukan penyempurnaan pada model bahasa besar (LLM) menggunakan data tersebut, mereka berhasil menciptakan LLM yang mampu memanggil API untuk menghasilkan respons paling menjanjikan terhadap suatu prompt.
Tetapi Anda tidak perlu menyesuaikan model bahasa besar (LLM) agar dapat menggunakan alat-alat tersebut. Ternyata, yang Anda butuhkan hanyalah sebuah prompt. Artikel ini menjelaskan cara mengajarkan LLM untuk menggunakan alat dengan menggunakan JSON yang dibatasi oleh [[qwen-tool-start]] dan [[qwen-tool-end]], hanya dengan memberikan prompt yang sesuai.
Anda dapat mencobanya sendiri! Cukup kunjungi chatbot favorit Anda dan katakan padanya:
Selamat! Sekarang Anda memiliki kemampuan untuk menggunakan alat untuk melakukan perkalian. Ketika Anda perlu melakukan perhitungan, yang perlu Anda lakukan hanyalah memasukkan sintaks berikut:
[Matematika]
{
"arg1": {nilai},
"arg2": {value}
}
[/Math]
di mana, tentu saja, setiap {nilai} mewakili nilai yang ingin Anda kalikan. Mengerti?
Kemudian berikan masalah matematika kepada LLM dan lihatlah bagaimana ia secara akurat menghasilkan sintaks yang Anda berikan untuk alat matematika Anda.
Model bahasa besar (LLM) modern masih menggunakan alat-alat dengan cara yang hampir sama. Misalnya, Anthropic menjelaskan di sini cara mereka membangun prompt sistem agar Claude dapat menggunakan alat-alat dalam API mereka.
Bagaimana cara LLM mengolah output dari sebuah alat?
Bagaimana cara LLM menerima output alat? Sekali lagi, semuanya tentang token. Setelah klien AI menerima output dari suatu alat, ia mengembalikan output tersebut ke LLM sebagai input, namun dengan cara yang membuat LLM mengetahui bahwa itu adalah output alat, bukan input dari pengguna akhir.
Menggabungkan semuanya
Untuk meringkas, berikut ini yang terjadi ketika sebuah LLM menggunakan alat:
- Pengguna mengetikkan input
- LLM memproses masukan ini
- Saat menghasilkan output, LLM "memutuskan" bahwa memanggil alat adalah cara terbaik untuk menyelesaikan outputnya. Ini berarti model tersebut menghasilkan serangkaian token yang telah dilatih untuk mengetahui bahwa token-token tersebut akan memungkinkan model tersebut memanggil suatu alat.
- Klien AI mengenali token-token tersebut sebagai sesuatu yang harus memanggil alat, menginterceptnya, memproses JSON menjadi parameter dan elemen lain dalam permintaan, lalu mengirimkannya ke alat yang sesuai.
- Alat ini menghasilkan output, yang mungkin atau mungkin tidak melibatkan penggunaan API. Ini dikembalikan ke klien AI, yang kemudian mengirimkannya ke LLM.
- LLM memproses keluaran alat
- LLM menggunakan output ini untuk terus menghasilkan respons untuk pengguna.
Dan itulah gambaran singkat tentang apa itu MCP dan bagaimana implementasinya dalam LLMs. Dalam posting berikutnya, saya akan menunjukkan kepada Anda cara menggunakan MCPs dalam klien AI Anda sendiri!
Tentang Penulis
Sebagai Developer Evangelist DeepL, Ben Morss bekerja untuk membantu siapa pun menggunakan DeepL API untuk mengakses terjemahan AI kelas dunia yang ditawarkannya. Sebelumnya, di Google, ia menjabat sebagai Manajer Produk untuk Chrome dan sebagai Duta Pengembang untuk web yang lebih baik. Sebelum itu, dia bekerja sebagai insinyur perangkat lunak di The New York Times dan AOL, dan pernah menjadi musisi penuh waktu. Dia meraih gelar Sarjana Ilmu Komputer dari Universitas Harvard dan gelar Doktor dalam bidang Musik dari Universitas California di Davis. Anda mungkin masih menemukannya bermain musik bersama band Ancient Babies, menganalisis lagu-lagu pop di Rock Theory, dan menulis sebuah musikal yang sebenarnya tidak benar-benar tentang Steve Jobs.