🔌 Apa itu MCP?
The Model Context Protocol (MCP) adalah standar terbuka yang diterbitkan oleh Anthropic pada Desember 2024 yang mendefinisikan antarmuka universal untuk menghubungkan model AI ke alat eksternal, sumber data, dan layanan. Sebelum MCP, setiap integrasi AI adalah implementasi kustom dan sekali pakai. MCP menstandarisasi cara klien AI berkomunikasi dengan kapabilitas eksternal — sehingga satu integrasi berfungsi dengan sistem AI yang kompatibel mana pun.
MCP adalah protokol klien-server: Klien MCP adalah sistem AI (seperti Claude, Cursor, VS Code dengan Copilot) yang ingin menggunakan kapabilitas eksternal. Server MCP adalah layanan yang mengekspos kapabilitas tersebut (GitHub, database, sistem file, browser web) melalui API yang distandarisasi yang dapat digunakan oleh klien MCP mana pun.
🔋 Metafora USB-C
Sebelum USB-C, setiap perangkat memiliki konektor kepemilikan sendiri — pengisi daya ponsel tidak bekerja dengan laptop, kabel display tidak bekerja dengan perangkat penyimpanan. USB-C menyelesaikan ini dengan satu standar universal: satu port, satu kabel, tak terhitung perangkat.
Integrasi AI sebelum MCP mengalami kekacauan yang sama. Menghubungkan Claude ke GitHub membutuhkan kode kustom. Menghubungkan GPT-4 ke API GitHub yang sama membutuhkan kode kustom yang berbeda. Menambah alat baru berarti membangun ulang integrasi dari awal untuk setiap platform AI.
MCP adalah USB-C untuk AI. Satu standar:
- Bangun server MCP sekali — klien MCP mana pun dapat menggunakannya
- Adopsi model AI baru — server MCP Anda yang ada langsung bekerja
- Ekosistem server MCP tumbuh terpisah dari pengembangan model AI
⚙️ Cara Kerja MCP
MCP menggunakan protokol JSON-RPC 2.0 di atas lapisan transport (stdio untuk server lokal, HTTP/SSE untuk server jarak jauh). Komunikasi mengikuti siklus hidup inisialisasi, penemuan kapabilitas, dan penanganan permintaan.
Tiga primitif inti
| Primitive | Apa yang diekspos | Example |
|---|---|---|
| Tools | Fungsi yang dapat dipanggil AI (dikendalikan model) | search_github_issues, run_sql_query, send_email |
| Resources | Data yang dapat dibaca AI (dikendalikan aplikasi) | file:///workspace/src, db://customers/schema |
| Prompts | Template prompt yang dapat digunakan kembali (dikendalikan pengguna) | code-review, summarize-pr, explain-error |
Alur komunikasi
- Inisialisasi: Klien terhubung ke server, bertukar versi protokol dan kapabilitas
- Penemuan: Klien meminta daftar alat, sumber daya, dan prompt yang tersedia
- Pemanggilan: Model AI memutuskan untuk memanggil alat; klien mengirim permintaan ke server
- Pengembalian: Server mengeksekusi aksi dan mengembalikan hasil terstruktur ke klien
- Lanjutan: Model AI menggabungkan hasil dan melanjutkan penalaran
Opsi transport
| Transport | Paling cocok untuk | Notes |
|---|---|---|
| stdio | Alat lokal, integrasi CLI | Klien meluncurkan server sebagai subprocess; pengaturan paling sederhana |
| HTTP + SSE | Layanan jarak jauh/cloud, tim bersama | Server berjalan secara independen; mendukung header auth |
| WebSocket | Bidirectional real-time (draft) | Diusulkan untuk kasus penggunaan streaming |
🔄 MCP vs Function Calling
Function calling (penggunaan alat) adalah fitur bawaan di API AI tertentu — OpenAI, Anthropic, Google — yang memungkinkan Anda mendefinisikan fungsi kustom yang dapat dipanggil model. MCP adalah lapisan di atas atau di samping function calling yang menstandarisasi bagaimana fungsi-fungsi itu ditemukan dan dihubungkan.
| Function Calling | MCP | |
|---|---|---|
| Scope | Spesifik API, per permintaan | Lintas platform, standar |
| Discovery | Tertanam langsung dalam panggilan API Anda | Dinamis — server mengiklankan kapabilitas |
| Portability | Terikat ke satu penyedia AI | Bekerja dengan klien yang kompatibel MCP mana pun |
| Resources | Tidak distandarisasi | Primitif kelas satu (file, DB, URI) |
| Paling cocok untuk | Kasus penggunaan sederhana, satu penyedia | Sistem produksi multi-alat, multi-model |
Dalam praktiknya, server MCP sering menggunakan function calling secara internal — MCP menyediakan lapisan penemuan dan koneksi, sementara function calling menangani pemanggilan LLM-ke-alat yang sebenarnya.
🏢 Siapa yang Mendukung MCP
Adopsi MCP telah tumbuh pesat sejak peluncurannya pada Desember 2024. Per April 2026, ekosistem mencakup:
Klien AI dengan dukungan MCP
- Claude (Anthropic) — dukungan MCP native di Claude.ai dan Claude Code
- Cursor — server MCP untuk bantuan AI yang paham kode
- VS Code (GitHub Copilot) — integrasi MCP dalam mode agen
- Windsurf (Codeium) — dukungan server MCP
- Continue.dev — asisten IDE open-source dengan MCP
Server MCP populer
- Filesystem — baca/tulis file lokal (resmi Anthropic)
- GitHub — repos, PR, isu, pencarian kode
- PostgreSQL / SQLite — kueri database dan eksplorasi skema
- Brave Search / Exa — pencarian web tanpa API key
- Puppeteer / Playwright — otomasi browser
- Slack / Linear / Notion — integrasi alat produktivitas
🚀 Memulai dengan MCP
Opsi 1: Gunakan server MCP yang ada (5 menit)
Cara tercepat untuk merasakan MCP adalah menggunakan Claude Desktop dengan server pra-bangun. Sunting konfigurasi Claude Desktop Anda di ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
} Opsi 2: Bangun server MCP (30 menit)
SDK resmi tersedia untuk TypeScript, Python, dan Kotlin:
// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "my-server", version: "1.0.0" });
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "get_weather",
description: "Get current weather for a city",
inputSchema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
const { city } = request.params.arguments;
// ... fetch weather data
return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});
const transport = new StdioServerTransport();
await server.connect(transport); 🔐 Pertimbangan Keamanan MCP
Kekuatan MCP — memberi model AI akses ke alat, file, dan layanan — juga memperkenalkan risiko keamanan yang harus dirancang oleh pengembang.
| Risk | Description | Mitigation |
|---|---|---|
| Prompt injection melalui MCP | Konten berbahaya dalam hasil alat memanipulasi AI | Saring output alat; gunakan model penalaran dan aksi yang terpisah |
| Server dengan hak berlebih | Server MCP memiliki izin lebih daripada yang diperlukan | Prinsip hak paling sedikit; buat baca-saja bila memungkinkan |
| Confused deputy | AI bertindak atas nama penyerang tanpa kesadaran pengguna | Konfirmasi HITL untuk aksi destruktif/tidak dapat diubah |
| Rantai pasokan server | Server MCP pihak ketiga yang berbahaya mengekfiltrasi data | Gunakan hanya server tepercaya dan diaudit; tinjau kode server |
Untuk pembahasan lebih mendalam tentang kerentanan keamanan AI — termasuk bagaimana prompt injection dapat dimanfaatkan melalui hasil alat MCP — lihat panduan kami: Penjelasan Prompt Injection.