Model Context Protocol (MCP): “USB-C”-nya LLM untuk RAG & Agentic AI

← Kembali ke Blogs

Model Context Protocol (MCP): “USB-C”-nya LLM untuk RAG & Agentic AI

Ditulis olehkukuhtw·
0 unik hari ini 3 unik 7 hari 21 unik 30 hari 236 total unik
Model Context Protocol (MCP): “USB-C”-nya LLM untuk RAG & Agentic AI
Iklan

Lo pernah kepikiran nggak sih, gimana sih caranya bikin AI kayak ChatGPT nggak cuma pinter ngomong, tapi juga bisa "nyolok" langsung ke berbagai sumber data dan tool tanpa ribet bikin integrasi satu-satu? Nah, ini dia yang lagi hot banget dibahas: Model Context Protocol alias MCP. MCP ini intinya adalah standar terbuka yang bikin LLM (Large Language Model) bisa nyambung mulus ke berbagai data dan layanan, kayak USB-C buat smartphone lo—satu colokan, banyak fungsi.


Biar makin paham, yuk kita kulik MCP dari berbagai sisi, mulai dari definisi, perbandingan sama RAG, arsitektur, sampai contoh kode yang bisa lo coba langsung!


Pendahuluan: kenapa MCP rame dibahas?
LLM sekarang tuh udah makin pintar dan canggih gila. Tapi masalahnya, kalau datanya cuma ngumpul di silo alias terkotak-kotak, ya LLM cuma pintar tanpa konteks yang dalam. Jadi susah banget buat aplikasi yang butuh data real-time atau action otomatis. Makanya Anthropic ngenalin MCP sebagai standar terbuka yang bikin LLM gampang "nyolok" ke berbagai sumber data dan tools tanpa harus bikin integrasi khusus satu-satu. Jadi, masalah M × N (banyak model, banyak data/tool) bisa berubah jadi M + N yang jauh lebih simpel.


Definisi singkat ala “USB-C untuk AI”
Kalau lo pernah nyolok USB-C di laptop atau HP, pasti tau betapa praktisnya satu kabel itu bisa dipakai buat transfer data, nge-charge, sambungin ke monitor, dan lain-lain. Nah, MCP itu ibarat "USB-C port" buat aplikasi AI. OpenAI Agents SDK bilang MCP bundling cara buat discover tool, call function, dan stream hasilnya. Jadi LLM bisa langsung tarik info atau ngeksekusi aksi dari berbagai tools secara terpadu tanpa ribet.


MCP vs. Retrieval-Augmented Generation (RAG)
MCP dan RAG sama-sama ngasih "otak tambahan" ke LLM, tapi fokus dan cara kerjanya beda banget:

  • RAG: fokus ke retrieval. Biasanya embed data jadi vector, lalu cari di vector DB, baru sisipin ke prompt biar LLM punya konteks tambahan. Cocok buat Q&A dokumen, knowledge base, atau enterprise search.
  • MCP: fokus ke tooling dan action. LLM bisa “menyuruh” server buat ngelakuin sesuatu, misal query SQL, update tiket, kirim email, dll. Cocok buat workflow agentic seperti otomatisasi operasional, DevOps bot, CRM assistant. MCP bisa real-time dan bahkan write-back.

Kalau RAG itu kayak ngasih LLM otak buat baca dan ngerti dokumen, MCP itu kayak ngasih tangan buat beraksi langsung. Keduanya bisa dipakai barengan biar LLM nggak cuma cerdas tapi juga produktif.


Arsitektur inti MCP
Secara garis besar, MCP punya 4 komponen utama:

  • MCP Host: aplikasi AI yang jadi "otak", misal chatbot di IDE, web, atau WhatsApp.
  • MCP Client: library di host yang buka koneksi ke MCP server.
  • MCP Server: program ringan yang daftar tools dan resource seperti REST API, DB, filesystem, layanan SaaS.
  • Transport: tiga mode resmi buat komunikasi, yaitu stdio (sub-process lokal), HTTP + Server-Sent Events (SSE), dan Streamable HTTP (bi-directional streaming).

Di awal proses, MCP client manggil fungsi list_tools() buat kasih tahu LLM tools apa aja yang tersedia beserta schema fungsinya. Saat inference, LLM bisa panggil call_tool() yang dijalankan server. Ada juga cache opsional buat ngurangin latency kalau perlu.


Cara kerja MCP + RAG dalam satu alur
Bayangin lo tanya chatbot: "Berapa sisa stok SKU A dan tolong restock kalau di bawah 10?" Berikut alur kerjanya:

  • LLM di host mikir, oh ini butuh data inventori dari tool get_stock dan mungkin aksi lewat order_stock.
  • MCP Client langsung manggil MCP Server ERP buat get_stock(SKU A).
  • Server balikin data qty=4.
  • LLM lihat stok kurang dari 10, lalu minta server buat order stock baru lewat order_stock(SKU A, quantity=100).
  • Server konfirmasi aksi berhasil, LLM generate jawaban lengkap plus detail langkah yang sudah dijalankan.

Kalau butuh konteks dokumen atau SOP yang panjang, host bisa tetep jalanin RAG buat tarik paragraf relevan dan sisipin ke prompt. Jadi retrieval dan action bisa jalan barengan mulus.


Tech-stack pendukung MCP (end-to-end)
Ini daftar lapisan teknologi beserta contoh stack yang biasa dipake buat implementasi MCP:

  • LLM: OpenAI GPT-4o, Claude 3.5, Gemini 1.5, Azure OpenAI (harus support function-calling)
  • MCP Client/SDK: openai-agents-python, fastmcp (Python), @modelcontextprotocol/client (TypeScript). Bertugas handle koneksi, streaming, retry, dan autentikasi.
  • MCP Server libs: fastmcp, mcp-server-filesystem, mcp-server-postgres, merge-mcp. Buat expose tools/resources via stdio/SSE.
  • Vector DB (opsional buat RAG): Pinecone, Qdrant, Weaviate, PGVector. Dipakai buat semantic search kalau perlu retrieval.
  • Data source: Postgres/MySQL, MongoDB, Google Drive, GitHub, Slack, internal REST/GraphQL. Bisa di-wrap jadi MCP server atau diakses lewat connector yang ada.
  • Orkestrasi/Agent-framework: LangChain, LlamaIndex, CrewAI, Chainlit. Banyak yang udah punya adaptor MCP.
  • Infra: Docker, Kubernetes, Fly.io, Serverless, VPN/Tunnel lokal. Penting buat keamanan dan scaling.
  • Security: OAuth 2.0, mTLS, JWT, ACL per-tool. MCP mendukung granular permission di level server.

Contoh kode “Hello MCP” (Python)
Ini contoh sederhana buat bikin MCP server yang expose dua fungsi: baca semua karyawan dan hapus karyawan.

from fastmcp import MCPServer, Resource, Tool
import aiosqlite, asyncio

# Resource: baca semua karyawan
async def all_employees():
    async with aiosqlite.connect("emp.db") as db:
        rows = await db.execute_fetchall("SELECT * FROM employees")
        return [dict(row) for row in rows]

# Tool: hapus karyawan
async def delete_employee(id:int):
    async with aiosqlite.connect("emp.db") as db:
        await db.execute("DELETE FROM employees WHERE id=?", (id,))
        await db.commit()
        return {"status":"deleted"}

srv = MCPServer()
srv.register_resource(Resource("get_all_employees", all_employees))
srv.register_tool(Tool("delete_employee", delete_employee))

if __name__ == "__main__":
    asyncio.run(srv.run())

Server ini bisa langsung "di-discover" oleh ChatGPT atau Claude lewat stdio dan muncul sebagai fungsi tanpa perlu nulis OpenAPI spec sama sekali. Keren kan?


Best practice integrasi MCP + RAG
Biar integrasi lo makin mantap, perhatikan ini:

  • Pisahkan concerns: Pakai MCP buat operasi mutasi atau real-time, RAG buat long-tail dokumentasi yang butuh retrieval semantic.
  • Schema design: Jelaskan parameter fungsi di server dengan eksplisit supaya model nggak gampang halu (hallucinate).
  • Granular ACL: Batasi tools yang bisa dipakai berdasarkan role user supaya aman.
  • Rate-limit & observability: Aktifkan tracing bawaan SDK biar gampang debug dan audit aktivitas.
  • Zero-shot vs system prompt: Jelaskan di instruksi kapan model boleh manggil tool dan hindari tool-spamming supaya efisien.

Kesimpulan
MCP adalah solusi keren yang memecahkan masalah integrasi data dan tool yang selama ini ribet karena harus bikin adapter satu-satu. Dengan MCP, AI punya "port universal" yang bikin integrasi jadi praktis, efisien, dan scalable. Kalau digabung sama RAG, kita dapet LLM yang nggak cuma jago ngobrol tapi juga langsung terhubung ke data nyata dan bisa bertindak otomatis. Cocok banget buat chatbot customer service, dashboard internal, agen DevOps, dan lain-lain. Dengan tech-stack yang open source dan mudah diakses, developer di Indonesia bisa langsung gas bikin solusi AI context-aware kelas enterprise.

Selamat ngoprek dan semoga artikel ini jadi peta jalan buat proyek LLM + RAG lo selanjutnya! 🚀

Summary Interaktif

Jawaban:
Model Context Protocol (MCP) adalah standar terbuka yang memungkinkan Large Language Model (LLM) untuk terhubung secara mulus ke berbagai sumber data dan layanan tanpa perlu integrasi satu per satu. MCP dianggap seperti 'USB-C untuk AI' karena menyediakan satu port universal yang bisa digunakan untuk berbagai fungsi seperti discover tool, memanggil fungsi, dan streaming hasil secara terpadu, mirip dengan bagaimana USB-C menggabungkan banyak fungsi dalam satu kabel.

Jawaban:
Perbedaan utama antara MCP dan RAG terletak pada fokus dan cara kerja mereka. RAG fokus pada retrieval data dengan mengubah data menjadi vector dan mencari konteks tambahan untuk LLM melalui vector database, cocok untuk Q&A dokumen dan knowledge base. Sedangkan MCP fokus pada tooling dan action, memungkinkan LLM untuk memerintahkan server melakukan tindakan seperti query database, update tiket, atau mengirim email, mendukung workflow otomatisasi dan operasi real-time.

Jawaban:
Empat komponen utama dalam arsitektur MCP adalah: 1) MCP Host: aplikasi AI yang berperan sebagai 'otak', seperti chatbot di IDE atau WhatsApp. 2) MCP Client: library yang berjalan di host untuk membuka koneksi ke MCP Server. 3) MCP Server: program ringan yang mendaftarkan tools dan resource seperti REST API, database, filesystem, atau layanan SaaS. 4) Transport: media komunikasi yang resmi didukung, yaitu stdio (sub-process lokal), HTTP dengan Server-Sent Events (SSE), dan Streamable HTTP (bi-directional streaming).

Jawaban:
Dalam contoh alur kerja MCP, ketika LLM menerima pertanyaan tentang sisa stok SKU dan restock jika kurang dari 10, LLM di host mengidentifikasi tool yang dibutuhkan seperti 'get_stock' dan 'order_stock'. MCP Client memanggil MCP Server untuk mengeksekusi 'get_stock' dan menerima hasil kuantitas. Jika stok kurang dari 10, LLM meminta server melakukan 'order_stock' untuk menambah stok. Server mengonfirmasi aksi berhasil, dan LLM menghasilkan jawaban lengkap yang mencakup hasil dan langkah yang dijalankan. Jika perlu konteks dokumen, RAG juga dijalankan bersamaan.

Jawaban:
Tech-stack pendukung MCP meliputi: LLM seperti OpenAI GPT-4o, Claude 3.5, Gemini 1.5; MCP Client/SDK seperti openai-agents-python, fastmcp, @modelcontextprotocol/client; MCP Server libraries seperti fastmcp, mcp-server-filesystem, mcp-server-postgres; Vector DB opsional seperti Pinecone, Qdrant, Weaviate; data source seperti Postgres, MongoDB, Google Drive, GitHub; orkestrasi/agent-framework seperti LangChain, LlamaIndex; infrastruktur seperti Docker, Kubernetes, serverless; serta keamanan dengan OAuth 2.0, mTLS, JWT, dan ACL per tool.

Jawaban:
Contoh kode Python menggunakan fastmcp membuat MCP server dengan dua fungsi. Fungsi 'all_employees' membaca semua data karyawan dari database SQLite secara asynchronous, mengembalikan daftar karyawan. Fungsi 'delete_employee' menghapus karyawan berdasarkan ID dari database dan mengembalikan status 'deleted'. Kedua fungsi didaftarkan ke MCPServer sebagai Resource dan Tool. Server dapat dijalankan dengan asyncio dan dapat langsung di-discover oleh ChatGPT atau Claude lewat stdio tanpa perlu OpenAPI spec.

Jawaban:
Best practice integrasi MCP dan RAG meliputi: memisahkan concerns dengan memakai MCP untuk operasi mutasi atau real-time dan RAG untuk retrieval semantic dokumentasi; mendesain schema fungsi server dengan jelas agar model tidak hallucinate; menerapkan granular ACL untuk membatasi akses tools sesuai peran pengguna; mengaktifkan rate-limit dan observability seperti tracing untuk debugging dan audit; serta mengatur instruksi agar model menggunakan tool secara efisien dan menghindari tool-spamming.

Jawaban:
MCP dianggap solusi efisien dan scalable karena mengubah problem integrasi dari skema M × N (banyak model dan banyak data/tools harus diintegrasi satu-satu) menjadi M + N yang jauh lebih sederhana. Dengan standar terbuka ini, AI dapat terhubung ke berbagai sumber data dan layanan dengan satu protokol universal tanpa perlu adapter khusus, memungkinkan integrasi praktis, efisien, dan mudah diskalakan. Kombinasi MCP dengan RAG membuat LLM tidak hanya pintar berbicara tapi juga mampu mengambil tindakan otomatis berdasarkan data real-time.
Artikel lain dari penulis ini
Iklan