Model Context Protocol (MCP) adalah standar terbuka yang dibuat oleh Anthropic yang mendefinisikan bagaimana model AI berkomunikasi dengan tools eksternal, sumber data, dan layanan. Anggap saja ini sebagai "USB-C untuk AI" - konektor universal yang memungkinkan agen AI mana pun berkomunikasi dengan tools apa pun melalui antarmuka yang terstandarisasi.
Sejak peluncurannya, MCP telah melampaui 97 juta unduhan SDK bulanan dan telah diadopsi oleh setiap penyedia AI utama: Anthropic, OpenAI, Google, Microsoft, dan Amazon. Dalam panduan ini, kita akan menjelajahi semua yang perlu Anda ketahui untuk membangun dengan MCP.
Mengapa MCP Ada
Sebelum MCP, setiap aplikasi AI harus membangun integrasi khusus untuk setiap tools yang ingin digunakan. Ingin AI Anda membaca file? Tulis kode khusus. Kueri database? Lebih banyak kode khusus. Posting ke Slack? Integrasi lain lagi.
Ini menciptakan masalah N×M: N aplikasi AI masing-masing membutuhkan M integrasi khusus, yang mengakibatkan duplikasi usaha dan ekosistem yang terfragmentasi.
MCP menyelesaikan ini dengan satu protokol yang dapat digunakan klien AI mana pun untuk berkomunikasi dengan server MCP mana pun:
Konsep Inti
MCP memiliki tiga primitif fundamental:
1. Tools
Tools adalah fungsi yang dapat dipanggil AI. Mereka merepresentasikan aksi seperti "buat file", "kueri database", atau "kirim pesan". Setiap tool memiliki nama, deskripsi, dan JSON Schema untuk parameternya.
{ name: "create_issue", description: "Create a new GitHub issue", inputSchema: { type: "object", properties: { title: { type: "string", description: "Issue title" }, body: { type: "string", description: "Issue body" }, repo: { type: "string", description: "Repository name" } }, required: ["title", "repo"] } }
2. Resources
Resources adalah data yang dapat dibaca AI. Mereka merepresentasikan file, catatan database, respons API, atau sumber data lainnya. Resources diidentifikasi melalui URI.
{ uri: "file:///Users/dev/project/README.md", name: "Project README", mimeType: "text/markdown" }
3. Prompts
Prompts adalah template yang dapat digunakan kembali yang membantu menyusun interaksi. Mereka dapat menyertakan parameter dinamis dan berguna untuk menstandarisasi alur kerja umum.
{ name: "code_review", description: "Review code changes for quality and security", arguments: [ { name: "diff", description: "The code diff to review", required: true } ] }
Arsitektur
MCP mengikuti arsitektur klien-server:
- Host: Aplikasi AI (Claude Desktop, Cursor, aplikasi kustom Anda)
- Client: Mempertahankan koneksi 1:1 dengan server MCP
- Server: Mengekspos tools, resources, dan prompts ke klien
- Transport: Komunikasi terjadi melalui JSON-RPC 2.0 via stdio (lokal) atau Server-Sent Events (remote)
Membangun Server MCP
Mari kita bangun server MCP praktis yang berinteraksi dengan daftar tugas yang disimpan dalam file JSON.
Setup
mkdir mcp-todo-server && cd mcp-todo-server npm init -y npm install @modelcontextprotocol/sdk zod
Implementasi Server
// src/index.ts import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import fs from "fs"; const TODO_FILE = "./todos.json"; function readTodos(): { id: number; text: string; done: boolean }[] { if (!fs.existsSync(TODO_FILE)) return []; return JSON.parse(fs.readFileSync(TODO_FILE, "utf-8")); } function writeTodos(todos: { id: number; text: string; done: boolean }[]) { fs.writeFileSync(TODO_FILE, JSON.stringify(todos, null, 2)); } const server = new McpServer({ name: "todo-server", version: "1.0.0", }); // Tool: Add a todo server.tool( "add_todo", "Add a new todo item", { text: z.string().describe("The todo text") }, async ({ text }) => { const todos = readTodos(); const newTodo = { id: Date.now(), text, done: false }; todos.push(newTodo); writeTodos(todos); return { content: [{ type: "text", text: `Added: "${text}"` }] }; } ); // Tool: List todos server.tool( "list_todos", "List all todo items", {}, async () => { const todos = readTodos(); const list = todos .map((t) => `${t.done ? "✅" : "⬜"} [${t.id}] ${t.text}`) .join("\n"); return { content: [{ type: "text", text: list || "No todos yet." }] }; } ); // Tool: Complete a todo server.tool( "complete_todo", "Mark a todo as completed", { id: z.number().describe("The todo ID to complete") }, async ({ id }) => { const todos = readTodos(); const todo = todos.find((t) => t.id === id); if (!todo) return { content: [{ type: "text", text: "Todo not found." }] }; todo.done = true; writeTodos(todos); return { content: [{ type: "text", text: `Completed: "${todo.text}"` }] }; } ); // Resource: Current todos as a readable resource server.resource( "todos://list", "Current todo list", async () => ({ contents: [{ uri: "todos://list", mimeType: "application/json", text: JSON.stringify(readTodos(), null, 2), }], }) ); // Start the server const transport = new StdioServerTransport(); await server.connect(transport);
Konfigurasi
Untuk menggunakan server ini dengan Claude Desktop, tambahkan ke konfigurasi Anda:
{ "mcpServers": { "todo": { "command": "npx", "args": ["tsx", "/path/to/mcp-todo-server/src/index.ts"] } } }
Membangun Klien MCP
Anda juga dapat membangun klien kustom yang terhubung ke server MCP mana pun:
import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; const transport = new StdioClientTransport({ command: "npx", args: ["tsx", "./src/index.ts"], }); const client = new Client({ name: "my-client", version: "1.0.0" }); await client.connect(transport); // List available tools const { tools } = await client.listTools(); console.log("Available tools:", tools.map((t) => t.name)); // Call a tool const result = await client.callTool({ name: "add_todo", arguments: { text: "Write MCP blog post" }, }); console.log(result);
Server MCP Populer
Ekosistem MCP telah berkembang pesat. Berikut beberapa server paling populer:
| Server | Deskripsi | Kasus Penggunaan |
|---|---|---|
| GitHub | Buat issue, PR, kelola repo | Alur kerja pengembangan |
| Slack | Kirim pesan, kelola channel | Komunikasi tim |
| PostgreSQL | Kueri dan kelola database | Akses data |
| Filesystem | Baca, tulis, dan cari file | Pengembangan lokal |
| Puppeteer | Otomasi browser dan scraping | Pengujian web |
| Sentry | Pemantauan error dan debugging | Dukungan produksi |
| Supabase | Database, auth, penyimpanan | Operasi backend |
MCP vs A2A (Agent-to-Agent)
Sementara MCP menangani komunikasi agen-ke-tools, protokol A2A (Agent-to-Agent) dari Google menangani komunikasi agen-ke-agen. Keduanya saling melengkapi:
- MCP: Bagaimana agen AI menggunakan tools (integrasi vertikal)
- A2A: Bagaimana agen AI berkolaborasi satu sama lain (integrasi horizontal)
Praktik Terbaik
- Jaga server tetap fokus: Satu server per domain (server GitHub, server Slack, dll.). Jangan bangun server monolitik.
- Validasi input dengan Zod: Selalu validasi input tools dengan schema yang tepat.
- Tangani error dengan baik: Kembalikan pesan error yang bermakna, bukan stack trace.
- Gunakan resources untuk data read-only: Jika AI hanya perlu membaca data, ekspos sebagai resource bukan tool.
- Tambahkan deskripsi yang tepat: Deskripsi tools dan parameter yang baik membantu AI memahami kapan dan bagaimana menggunakan setiap tool.
- Uji dengan MCP Inspector: Gunakan
npx @modelcontextprotocol/inspectoruntuk menguji server Anda secara interaktif.
Memulai
# Create a new MCP server from template npx @modelcontextprotocol/create-server my-server # Test with the MCP Inspector npx @modelcontextprotocol/inspector npx tsx ./src/index.ts
Kesimpulan
MCP telah menjadi standar de facto untuk penggunaan tools AI pada tahun 2026. Baik Anda membangun agen AI kustom, memperluas Claude Code, atau membuat integrasi untuk platform yang sudah ada, memahami MCP sangat penting. Protokol ini cukup sederhana untuk dipelajari dalam satu sore tetapi cukup kuat untuk membangun alur kerja AI tingkat produksi.
Langkah selanjutnya:
- Jelajahi Spesifikasi MCP
- Telusuri server MCP yang ada untuk inspirasi
- Bangun server pertama Anda dengan TypeScript atau Python SDK
- Uji dengan Claude Desktop atau MCP Inspector