
Model Context Protocol (MCP) adalah standar terbuka yang memberikan cara universal bagi model AI untuk terhubung ke alat eksternal, sumber data, dan layanan. Alih-alih menulis kode integrasi kustom untuk setiap kombinasi model-alat, Anda cukup menulis satu server MCP dan setiap model yang kompatibel dapat menggunakannya. Anthropic menciptakan MCP pada akhir 2024, Linux Foundation kini mengaturnya, dan OpenAI, Google, serta seluruh ekosistem AI agentic telah mengadopsinya. Berikut adalah segala hal yang perlu Anda ketahui untuk memahami, membangun, dan men-deploy MCP.
MCP Sekilas
Jika Anda ingin versi ringkas sebelum menyelami detail sepanjang 6.000 kata, inilah intisarinya.
| Atribut | Detail |
|---|---|
| Nama Lengkap | Model Context Protocol (MCP) |
| Dibuat Oleh | Anthropic (Nov 2024), kini diatur oleh Linux Foundation / AAIF (Des 2025) |
| Fungsi | Standar universal untuk menghubungkan model AI ke alat, data, dan layanan |
| Masalah yang Diatasi | Menghilangkan integrasi kustom M x N, seperti USB-C untuk AI |
| Primitif Inti | Tools (Alat), Resources (Sumber Daya), Prompts, dan Sampling |
| Transport | stdio (pengembangan lokal), Streamable HTTP (produksi) |
| Autentikasi | OAuth 2.1 (wajib untuk transport HTTP) |
| SDK | Python (FastMCP), TypeScript, Java, Kotlin, C# |
| Ukuran Ekosistem | 10.000+ server aktif (menurut Linux Foundation, Des 2025) |
| Pengadopsi Utama | Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf |
| Status Spesifikasi | Standar terbuka, terus berkembang (peta jalan 2026 sedang berlangsung) |
| Paling Cocok Untuk | Agen AI yang perlu berinteraksi dengan alat dan data dunia nyata |
Sekarang mari kita uraikan masing-masing poin tersebut, dimulai dengan apa itu MCP sebenarnya dan masalah yang membuatnya diperlukan.
Apa Itu Model Context Protocol?
Model Context Protocol adalah protokol terbuka berbasis JSON-RPC yang menstandarisasi cara model AI menemukan dan berinteraksi dengan alat serta data eksternal. Anggap saja ini sebagai HTTP untuk integrasi AI, sebuah bahasa bersama yang dapat digunakan oleh model apa pun dan alat apa pun.
Anda mungkin pernah mendengar analogi USB-C, dan itu berguna sampai batas tertentu: sebelum USB-C, setiap perangkat membutuhkan kabelnya sendiri. MCP melakukan hal yang sama untuk AI, tetapi analogi ini kurang menggambarkan kemampuannya. USB-C hanya membawa data dan daya. MCP membawa definisi alat, pola akses data, templat prompt yang dapat digunakan kembali, dan bahkan memungkinkan server meminta penyelesaian (completion) dari model. Ini adalah protokol yang lebih kaya daripada yang disarankan oleh metafora kabel.
Masalah M x N yang Diatasi MCP
Tanpa MCP, menghubungkan M model ke N alat memerlukan integrasi kustom sebanyak M x N. Katakanlah Anda mendukung 5 LLM (Claude, GPT-4, Gemini, Llama, Mistral) dan perlu mengakses 10 alat (GitHub, Postgres, Slack, Jira, dan seterusnya). Itu berarti 50 lapisan integrasi khusus, masing-masing dengan autentikasi, penanganan error, dan format data tersendiri.
Dengan MCP, setiap model mengimplementasikan protokol klien MCP sekali, dan setiap alat mengimplementasikan server MCP sekali. Sekarang jumlahnya menjadi 5 + 10 = 15 implementasi, bukan 50. Menambahkan model baru? Model tersebut langsung berfungsi dengan semua 10 alat. Menambahkan alat baru? Semua 5 model dapat menggunakannya.
Sejarah Singkat MCP
Anthropic merilis MCP sebagai open-source pada November 2024 bersamaan dengan SDK untuk Python dan TypeScript serta konektor untuk Claude Desktop. Adopsi berjalan cepat. OpenAI menambahkan dukungan MCP ke ChatGPT pada Maret 2025. Google menyusul untuk Gemini pada April 2025. Pada Desember 2025, Anthropic mendonasikan MCP ke Agentic AI Foundation (AAIF) baru milik Linux Foundation, yang didirikan bersama Block dan OpenAI, menjadikan MCP sebagai standar netral vendor dengan tata kelola lintas industri.
Apa yang BUKAN merupakan MCP:
- Bukan model atau kerangka kerja AI (ini adalah protokol, seperti HTTP)
- Bukan pengganti LangChain atau LlamaIndex (mereka adalah lapisan orkestrasi; MCP berada di bawahnya)
- Tidak terbatas pada Anthropic atau Claude (dirancang agar netral terhadap model)
- Bukan sama dengan function calling (akan dibahas lebih lanjut di bagian perbandingan)
Cara Kerja MCP: Pendalaman Arsitektur
MCP memiliki tiga peran, dan mencampuradukkannya adalah kesalahan pemula yang paling umum. Mari kita perjelas perbedaannya.
<!-- IMAGE: Diagram arsitektur MCP yang menunjukkan peran host, klien, server dengan contoh nyata seperti Claude Desktop, GitHub MCP Server, Postgres MCP Server -->Host, Klien, dan Server, Apa Bedanya?
| Komponen | Peran | Contoh | Fungsi |
|---|---|---|---|
| Host | Aplikasi yang berinteraksi dengan pengguna | Claude Desktop, Cursor, VS Code | Menyediakan UI, mengelola instance klien |
| Klien | Penanganan protokol di dalam host | Terintegrasi dalam aplikasi host | Menjaga koneksi 1:1 dengan satu server MCP |
| Server | Mengekspos alat dan data melalui MCP | Server GitHub, server Postgres, server Slack | Membungkus API/data eksternal dalam endpoint yang kompatibel dengan MCP |
Berikut contoh konkretnya: Anda meminta Claude Desktop untuk memeriksa pull request GitHub Anda yang terbuka. Claude Desktop adalah host. Klien MCP bawaannya membuka koneksi ke server MCP GitHub. Server memanggil API GitHub, mengambil PR Anda, dan mengembalikan hasilnya ke klien, yang kemudian menyerahkannya ke model.
Satu host dapat menjalankan beberapa klien, masing-masing terhubung ke server yang berbeda. Begitulah cara Claude Desktop dapat mengakses GitHub, database Postgres Anda, dan Slack secara bersamaan—tiga server MCP terpisah, tiga koneksi klien terpisah, satu host.
Aliran Pesan (JSON-RPC 2.0)
Semua komunikasi MCP menggunakan JSON-RPC 2.0, protokol permintaan/respons yang ringan. Berikut tampilan pertukaran tools/list di jaringan:
// Client request: "What tools do you have?"
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}
// Server response: one tool available
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "get_weather",
"description": "Get current weather for a city",
"inputSchema": {
"type": "object",
"properties": {
"city": { "type": "string" }
},
"required": ["city"]
}
}
]
}
}Model membaca definisi alat ini, memutuskan kapan harus memanggilnya berdasarkan permintaan pengguna, dan klien mengirimkan permintaan tools/call kembali ke server dengan argumen yang sesuai.
Siklus Hidup Koneksi
Setiap sesi MCP mengikuti siklus hidup yang sama:
- Inisialisasi, klien mengirim kemampuan, server merespons dengan kemampuannya sendiri
- Negosiasi kemampuan, kedua pihak menyepakati fitur yang didukung (alat, sumber daya, prompt, sampling)
- Siap, koneksi aktif; permintaan mengalir dua arah
- Permintaan/respons,
tools/call,resources/read, dll. - Penutupan, pemutusan koneksi yang bersih
Handshake ini memastikan kompatibilitas masa depan. Jika server menambahkan primitif baru, klien lama akan mengabaikannya dengan baik alih-alih crash.
Primitif MCP: Alat, Sumber Daya, Prompt, dan Sampling
MCP mendefinisikan empat primitif, dan memahami siapa yang mengendalikan masing-masingnya adalah kunci untuk merancang server MCP yang baik.
| Primitif | Siapa yang Mengendalikan | Arah | Contoh | Kasus Penggunaan |
|---|---|---|---|---|
| Tools | Model memutuskan kapan memanggil | Klien -> Server | create_github_issue | Tindakan yang diambil AI secara otonom |
| Resources | Aplikasi/pengguna memilih | Klien -> Server | file://project/README.md | Data yang dilampirkan ke konteks |
| Prompts | Pengguna memicu | Klien -> Server | Templat code_review | Pola interaksi yang dapat digunakan kembali |
| Sampling | Server meminta penyelesaian | Server -> Klien | Server meminta model untuk merangkum | Loop agentic di mana server menggunakan LLM |
Tools (Dikendalikan Model)
Tools adalah fungsi yang dapat dipanggil oleh model. Server mendeklarasikannya dengan nama, deskripsi, dan definisi input JSON Schema. Model membaca definisi ini, dan ketika permintaan pengguna memerlukannya, model memutuskan untuk memanggil alat tersebut.
// Client sends tools/call request
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": { "city": "Berlin" }
}
}Jika Anda pernah menggunakan function calling OpenAI, tools akan terasa familier, tetapi distandarisasi di setiap model yang kompatibel dengan MCP.
Resources (Dikendalikan Aplikasi)
Resources adalah endpoint data baca-saja. Berbeda dengan tools, model tidak memutuskan untuk mengambil resource sendiri, aplikasi host atau pengguna secara eksplisit melampirkan resources ke konteks percakapan. Anggap saja seperti endpoint GET: postgres://mydb/users/schema, file://docs/api-reference.md.
Resources mendukung langganan melalui resources/subscribe, sehingga klien dapat diberi tahu ketika data berubah.
Prompts (Dikendalikan Pengguna)
Prompts adalah templat yang dapat digunakan kembali yang diekspos oleh server MCP. Prompt code_review mungkin menerima jalur file dan menghasilkan permintaan tinjauan terstruktur. Pengguna (atau UI host) memicu prompts secara eksplisit, prompts tidak dipanggil otomatis oleh model.
Sampling (Diinisiasi Server), Lanjutan
Ini adalah primitif yang sering dilewatkan oleh sebagian besar panduan. Sampling memungkinkan server meminta klien untuk menghasilkan penyelesaian menggunakan LLM. Ini membalikkan aliran biasa: alih-alih model memanggil alat, alat memanggil model.
Mengapa? Loop agentic. Bayangkan server MCP yang memproses tiket dukungan. Ia membaca tiket (sebuah resource), menggunakan sampling/createMessage untuk meminta ringkasan dari model, lalu menggunakan ringkasan tersebut untuk merutekan tiket melalui alat. Server mengoordinasikan alur kerja multi-langkah menggunakan kecerdasan model.
Sampling dibatasi oleh aplikasi host, pengguna harus menyetujuinya, dan host mengontrol apa yang dapat diminta oleh server. Ini mencegah loop tak terkendali dan mempertahankan pengawasan manusia.
Bangun Server MCP Pertama Anda: Python dan TypeScript Berdampingan
Cukup teori. Mari kita bangun server MCP yang berfungsi yang mengekspos alat get_weather. Saya akan menampilkan versi Python dan TypeScript sehingga Anda dapat membandingkan pengalaman developer dan memilih stack yang sesuai dengan proyek Anda.
Python dengan FastMCP
FastMCP adalah SDK Python tingkat tinggi resmi. Ini menangani semua plumbing protokol sehingga Anda dapat fokus pada logika alat Anda.
# Install FastMCP
pip install fastmcp# weather_server.py
from fastmcp import FastMCP
mcp = FastMCP("Weather Server")
@mcp.tool()
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
# In production, call a real weather API here
weather_data = {
"Berlin": "Cloudy, 12°C",
"Tokyo": "Sunny, 22°C",
"New York": "Rainy, 8°C",
}
return weather_data.get(city, f"No data for {city}")
if __name__ == "__main__":
mcp.run()Hanya itu -- 15 baris. FastMCP menyimpulkan skema input alat dari hint tipe Python dan docstring. Tidak ada boilerplate JSON Schema.
TypeScript dengan SDK Resmi
TypeScript SDK (@modelcontextprotocol/sdk) sedikit lebih eksplisit tetapi memberi Anda kontrol penuh atas definisi skema.
# Install the SDK and Zod for schema validation
npm install @modelcontextprotocol/sdk zod// weather-server.ts
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "Weather Server",
version: "1.0.0",
});
server.tool(
"get_weather",
"Get the current weather for a city",
{ city: z.string() },
async ({ city }) => {
const weatherData: Record<string, string> = {
Berlin: "Cloudy, 12°C",
Tokyo: "Sunny, 22°C",
"New York": "Rainy, 8°C",
};
return {
content: [
{ type: "text", text: weatherData[city] ?? `No data for ${city}` },
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Versi TypeScript menggunakan skema Zod alih-alih hint tipe, dan mengembalikan blok konten terstruktur. Lebih verbose, tetapi keamanan tipenya sangat baik.
Hubungkan ke Claude Desktop
Untuk menghubungkan salah satu server ke Claude Desktop, tambahkan ke claude_desktop_config.json Anda:
{
"mcpServers": {
"weather-python": {
"command": "python",
"args": ["weather_server.py"],
"cwd": "/path/to/your/project"
},
"weather-typescript": {
"command": "npx",
"args": ["tsx", "weather-server.ts"],
"cwd": "/path/to/your/project"
}
}
}Mulai ulang Claude Desktop, dan kedua server cuaca muncul di daftar alat. Tanyakan "Bagaimana cuaca di Berlin?" dan model akan memanggil alat get_weather Anda secara otomatis.
Uji dengan MCP Inspector
Sebelum menghubungkan server Anda ke host, uji secara terisolasi dengan MCP Inspector:
npx @modelcontextprotocol/inspector python weather_server.pyInspector membuka UI browser di mana Anda dapat melihat alat yang ditemukan, memanggilnya secara manual, dan memeriksa pesan JSON-RPC yang bolak-balik. Ini adalah alat debugging terbaik dalam ekosistem MCP, gunakan sejak dini dan sesering mungkin.
Transport MCP: stdio untuk Dev, Streamable HTTP untuk Produksi
Pesan MCP membutuhkan cara untuk bepergian antara klien dan server. Itulah lapisan transport, dan memilih yang tepat sangat penting.
| Transport | Kasus Penggunaan | Kelebihan | Kekurangan | Status |
|---|---|---|---|---|
| stdio | Pengembangan lokal, alat pribadi | Tanpa konfigurasi, sederhana, cepat | Hanya mesin yang sama | Aktif |
| Streamable HTTP | Produksi, server jarak jauh, multi-pengguna | Bekerja melalui jaringan, mendukung streaming via SSE, ramah stateless | Memerlukan server HTTP, butuh autentikasi | Aktif (spek 2025) |
| HTTP+SSE (lama) | Transport jarak jauh warisan | Adalah opsi jarak jauh asli | Digantikan oleh Streamable HTTP | Usang |
stdio bekerja dengan memunculkan server MCP sebagai subproses dan berkomunikasi melalui stdin/stdout. Inilah yang Anda gunakan dalam tutorial di atas, tanpa port, tanpa TLS, tanpa autentikasi. Sempurna untuk pengembangan dan alat lokal satu pengguna.
Streamable HTTP adalah transport produksi, ditambahkan dalam pembaruan spesifikasi 2025. Klien mengirimkan permintaan HTTP POST standar ke server. Server dapat merespons secara sinkron atau membuka aliran SSE untuk operasi yang lebih lama. Ini ramah stateless, bekerja di belakang load balancer, dan mendukung autentikasi HTTP standar.
Jika Anda melihat tutorial lama yang menyebutkan "HTTP+SSE" sebagai dua transport terpisah (satu untuk mengirim, satu untuk menerima), itu adalah pendekatan yang sudah usang. Streamable HTTP menggabungkan keduanya menjadi mekanisme tunggal yang lebih bersih.
Keputusannya sederhana: gunakan stdio saat mengembangkan secara lokal, beralih ke streamable-http saat men-deploy untuk orang lain.
// Switching from stdio to Streamable HTTP in TypeScript
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);MCP vs Function Calling vs REST API, Kapan Menggunakan Masing-Masing
Ini adalah pertanyaan yang muncul dalam setiap diskusi MCP, jadi mari kita selesaikan dengan perbandingan langsung.
| Fitur | MCP | Function Calling | REST APIs |
|---|---|---|---|
| Standardisasi | Protokol terbuka, netral model | Per-provider (OpenAI, Anthropic masing-masing punya sendiri) | Universal |
| Penemuan Alat | Bawaan (tools/list) | Tidak ada, Anda mengirim skema per permintaan | Tidak ada, memerlukan dokumen atau spec OpenAPI |
| Akses Data | Primitif Resources | Tidak didukung | Endpoint standar |
| Templat Prompt | Primitif Prompts | Tidak didukung | Tidak berlaku |
| Auth | OAuth 2.1 (tingkat spek) | Kunci API provider | Bervariasi (kunci API, OAuth, dll.) |
| Streaming | SSE via Streamable HTTP | Bergantung provider | Bervariasi |
| Multi-Model | Bekerja dengan model apa pun yang kompatibel MCP | Terkunci ke API satu provider | Netral model (dengan kode penghubung) |
| Ekosistem Server | 10.000+ server pra-bangun | T/A | Jutaan API |
| Kompleksitas Setup | Jalankan server MCP | Kirim JSON dalam panggilan API | Klien HTTP |
| Paling Cocok Untuk | Lingkungan agen multi-model, multi-alat | Aplikasi model tunggal sederhana dengan beberapa alat | Komunikasi layanan-ke-layanan |
Kapan Function Calling Sudah Cukup
Jika Anda memiliki kurang dari 5 alat dan menggunakan satu model, function calling lebih sederhana. Anda mendefinisikan skema alat Anda secara inline dengan setiap panggilan API, model mengembalikan nama fungsi dan argumen, dan Anda menjalankannya dalam kode aplikasi Anda. Tidak ada server yang dijalankan, tidak ada protokol yang perlu dipelajari. Untuk chatbot yang memeriksa status pesanan dan mencari FAQ, function calling sudah cukup baik.
Kapan MCP Menjadi Bernilai
MCP sepadan dengan kompleksitasnya ketika:
- Anda mendukung beberapa LLM dan tidak ingin menulis ulang definisi alat untuk setiap provider
- Anda membutuhkan penemuan alat, model dapat menanyakan apa yang tersedia alih-alih Anda hardcoding skema
- Anda menginginkan resources dan prompts, bukan hanya panggilan alat
- Anda membangun agen AI yang berkoordinasi secara otonom dan membutuhkan lapisan integrasi yang distandarisasi
- Tim Anda berkembang dan engineer yang berbeda membangun alat yang berbeda, MCP memungkinkan mereka bekerja secara independen
Kesimpulan: MCP menang ketika Anda membutuhkan akses alat multi-model yang distandarisasi. Function calling menang untuk kasus penggunaan model tunggal yang sederhana. REST API tetap menjadi pilihan yang tepat untuk komunikasi layanan-ke-layanan tradisional yang tidak melibatkan LLM.
Ekosistem MCP di 2026: Siapa yang Mendukung dan Apa yang Tersedia
MCP berubah dari proyek sampingan Anthropic menjadi standar industri dalam waktu kurang dari 18 bulan. Berikut kondisinya saat ini.
LLM Mana yang Mendukung MCP?
| LLM | Dukungan MCP | Sejak | Catatan |
|---|---|---|---|
| Claude | Native, dukungan penuh | Nov 2024 | Pencipta MCP; integrasi terdalam |
| ChatGPT | Dukungan resmi | Mar 2025 | Melalui integrasi MCP OpenAI |
| Gemini | Dukungan resmi | Apr 2025 | Server MCP Google Cloud untuk layanan Google |
| Llama / Open-Source | Melalui adapter | 2025 | LangChain, LlamaIndex, dan adapter kustom |
| Copilot (VS Code) | Native dalam mode agen | 2025 | Microsoft mengirimkan dukungan MCP di VS Code |
Server MCP Populer yang Perlu Diketahui
| Kategori | Server | Fungsi |
|---|---|---|
| Kode | GitHub | PR, isu, repo, pencarian kode |
| Kode | GitLab | Merge request, pipeline, manajemen proyek |
| Database | PostgreSQL | Inspeksi skema, eksekusi kueri |
| Database | MySQL | Akses kueri dan skema |
| SaaS | Slack | Pesan channel, pencarian, notifikasi |
| SaaS | Google Drive | Akses file, pencarian, pembacaan dokumen |
| SaaS | Notion | Pembacaan halaman, kueri database |
| Pencarian | Brave Search | Hasil pencarian web |
| DevOps | Docker | Manajemen kontainer |
| Infra | AWS | Manajemen sumber daya cloud |
Pengumuman AAIF Linux Foundation menyebutkan 10.000+ server aktif dan 97 juta unduhan SDK bulanan pada saat donasi MCP pada Desember 2025. Ekosistem ini tidak lagi eksperimental, ini sudah tingkat produksi.
MCP Apps adalah primitif baru yang diperkenalkan pada Januari 2026. Ini memungkinkan server menyediakan komponen UI interaktif yang dirender di dalam aplikasi host. Masih awal, tetapi ini menandakan evolusi MCP dari protokol data menjadi kerangka kerja agen-aplikasi penuh. Patut ditunggu.
Tata Kelola: Dari Anthropic ke Linux Foundation
MCP diatur oleh Agentic AI Foundation (AAIF) di bawah Linux Foundation, yang didirikan bersama oleh Anthropic, Block, dan OpenAI. Ini penting untuk adopsi perusahaan: MCP tidak terikat pada peta jalan satu vendor. Prioritas peta jalan 2026 adalah evolusi transport, komunikasi agen-ke-agen (primitif "Tasks" baru), pematangan tata kelola, dan kesiapan perusahaan.
Untuk tim yang membangun sistem AI produksi, kerangka kerja seperti kerangka kerja agen AI otonom seperti OpenClaw sudah terintegrasi dengan server MCP untuk memberikan kemampuan dunia nyata kepada agen.
Keamanan MCP: OAuth 2.1, Ancaman, dan Daftar Periksa Praktis
Keamanan adalah area di mana ekosistem MCP memiliki banyak pekerjaan rumah. Dan angka-angkanya memberikan gambaran yang jelas.
Masalah 88%: Mengapa Sebagian Besar Server MCP Tidak Aman
Astrix Security menganalisis 5.200+ implementasi server MCP open-source dan menemukan bahwa 88% memerlukan kredensial semacam itu, tetapi 53% mengandalkan rahasia statis berumur panjang yang tidak aman seperti kunci API dan token akses pribadi yang di-hardcode dalam file konfigurasi. Hanya 8,5% yang mengimplementasikan OAuth.
Itu berarti sebagian besar server MCP di alam liar menggunakan autentikasi setara dengan menempelkan kunci rumah Anda di pintu depan.
OAuth 2.1 untuk Server MCP
Spesifikasi MCP mewajibkan OAuth 2.1 untuk semua server berbasis HTTP mulai dari pembaruan Juni 2025. Alurnya seperti ini: klien MCP memulai alur otorisasi OAuth 2.1 dengan server, memperoleh token akses yang tercakup (scoped), dan menyertakannya dengan setiap permintaan berikutnya. PKCE (Proof Key for Code Exchange) diwajibkan untuk semua klien, tanpa pengecualian.
Jika Anda membangun server MCP yang berjalan melalui Streamable HTTP, OAuth 2.1 bukanlah opsional. Ini diwajibkan oleh spesifikasi.
Model Ancaman: Apa yang Bisa Salah
Empat ancaman patut mendapat perhatian dalam setiap deployment MCP:
- Injeksi prompt melalui alat, Sumber data yang jahat atau dikompromikan mengembalikan konten yang dirancang untuk memanipulasi model. Jika alat mengambil halaman web dan halaman tersebut berisi instruksi tersembunyi, model mungkin mengeksekusinya.
- Serangan confused deputy, Model memanggil alat dengan izin yang lebih luas daripada yang dimaksudkan pengguna. Jika server MCP memiliki akses admin ke database, model secara teoritis bisa menghapus tabel.
- Risiko konsentrasi token, Server MCP yang memegang kunci API untuk GitHub, Slack, dan database produksi Anda adalah target bernilai tinggi tunggal. Kompromikan satu server, kompromikan semua yang terhubung kepadanya.
- Transport tidak aman, Menjalankan server HTTP MCP tanpa TLS mengekspos setiap permintaan, termasuk token OAuth dan data sensitif, dalam teks biasa.
Daftar Periksa Keamanan untuk MCP Produksi
- Implementasikan OAuth 2.1 untuk server apa pun yang diekspos melalui HTTP. Tidak ada kunci API statis dalam file konfigurasi.
- Terapkan cakupan hak istimewa minimal. Jika alat Anda hanya membaca data, kredensial server harus berupa baca-saja. Jangan berikan alat pelaporan akses tulis.
- Isolasi kredensial. Setiap server MCP harus memiliki tokennya sendiri yang tercakup. Jangan bagikan satu "token dewa" di seluruh server.
- Terapkan TLS di mana-mana. Streamable HTTP tanpa HTTPS adalah larangan otomatis untuk produksi.
- Validasi dan sanitasi output alat. Perlakukan data yang dikembalikan oleh alat sama seperti Anda memperlakukan input pengguna, jangan percaya begitu saja.
- Batasi laju pemanggilan alat. Loop agen yang lepas kendali yang memanggil alat ribuan kali dapat menghabiskan kuota API atau menyebabkan efek samping yang tidak diinginkan.
- Audit dan catat setiap panggilan alat. Sertakan ID permintaan, stempel waktu, model pemanggil, dan argumen alat. Anda memerlukan ini untuk debugging dan respons insiden keamanan.
Debugging MCP: Inspector, Logging, dan Error Umum
Anda akan menemui error. Setiap developer mengalaminya. Berikut cara memperbaikinya dengan cepat.
MCP Inspector adalah alat debugging resmi dan garis pertahanan pertama Anda. Ini terhubung ke server MCP apa pun, menemukan alat/sumber daya/promptnya, dan memungkinkan Anda memanggilnya secara manual sambil menunjukkan lalu lintas JSON-RPC mentah.
# Launch Inspector against your Python server
npx @modelcontextprotocol/inspector python weather_server.py
# Or against a TypeScript server
npx @modelcontextprotocol/inspector npx tsx weather-server.tsInspector membuka UI berbasis browser dengan tab untuk Tools, Resources, Prompts, dan panel notifikasi. Anda dapat memanggil alat apa pun dengan argumen kustom dan melihat persis JSON apa yang lewat di jaringan. Gunakan ini sebelum menghubungkan ke aplikasi host, jauh lebih mudah untuk men-debug server secara terisolasi.
Error Umum dan Perbaikan
- "Server not found" di Claude Desktop, Hampir selalu masalah jalur di
claude_desktop_config.json. Periksa kembali bahwacommandmengarah ke biner yang nyata dancwdmenunjuk ke direktori yang benar. Di macOS, gunakan jalur absolut. - Kegagalan validasi skema alat, Jika model mengirim argumen yang tidak cocok dengan
inputSchemaalat, server menolak panggilan. Periksa apakah jenis skema Anda cocok dengan apa yang diharapkan model. Zod (TypeScript) dan hint tipe (Python) menangkap sebagian besar ini pada waktu definisi. - Putusnya koneksi transport, Untuk
stdio, ini biasanya berarti proses server crash. Periksa output stderr. Untuk Streamable HTTP, verifikasi pengaturan timeout, alat yang berjalan lama mungkin melebihi timeout HTTP default. - Error "Permission denied" atau 401, Cakupan OAuth terlalu sempit. Server menolak token karena tidak memiliki izin yang diperlukan. Perluas cakupan, tetapi hanya sebanyak yang benar-benar dibutuhkan alat.
Praktik Terbaik Logging
Strukturkan log Anda dengan ID permintaan sehingga Anda dapat melacak satu permintaan pengguna di seluruh klien MCP, server, dan API downstream apa pun. Catat setiap pemanggilan tools/call dengan nama alat, argumen, waktu respons, dan status hasil. Dalam produksi, kirim log ini ke platform observabilitas, ketika sesuatu terjadi pada jam 3 pagi, Anda akan bersyukur telah melakukannya.
Bagaimana Techsy Membangun dengan MCP
Kami telah mengintegrasikan MCP ke dalam proyek klien sejak awal 2025, dan pola yang paling sering kami lihat adalah ini: sebuah tim memiliki fitur AI yang bekerja dengan satu model dan segelintir alat, tetapi mereka berencana untuk skala, lebih banyak model, lebih banyak sumber data, lebih banyak kemampuan agen. Itulah titik balik di mana MCP mulai memberikan hasil.
Pendekatan kami mengikuti tiga langkah:
- Assess fit. Tidak setiap proyek membutuhkan MCP. Jika Anda memanggil dua alat dari satu model, function calling lebih sederhana dan kami akan memberitahu Anda demikian. MCP masuk akal ketika Anda menghubungkan 3+ sumber data, mendukung beberapa model, atau membangun alur kerja agen di mana alat perlu dapat ditemukan.
- Bangun dan uji server secara terisolasi. Kami mengembangkan server MCP kustom untuk setiap sumber data, database internal, API SaaS, layanan proprietari, dan memvalidasinya dengan MCP Inspector sebelum menghubungkan ke host apa pun.
- Deploy dengan Streamable HTTP dan OAuth 2.1. Untuk produksi, kami menjalankan server MCP sebagai layanan terkontainerisasi di belakang TLS, dengan token OAuth yang tercakup dan logging terstruktur sejak hari pertama. Tidak ada rahasia statis.
Integrasi paling umum yang kami bangun: menghubungkan asisten AI ke database Postgres internal, membangun server MCP kustom untuk platform SaaS klien, dan memigrasikan tim dari setup function-calling yang tersebar ke arsitektur MCP yang distandarisasi.
Membangun alat bertenaga AI yang perlu terhubung ke infrastruktur Anda? Kami membantu tim merancang dan mengimplementasikan integrasi MCP. Dapatkan konsultasi gratis
Pertanyaan Umum Tentang MCP
Apa itu Model Context Protocol (MCP)?
MCP adalah standar terbuka, awalnya dibuat oleh Anthropic dan kini diatur oleh Linux Foundation, yang mendefinisikan bagaimana model AI terhubung ke alat eksternal, sumber data, dan layanan. Ini menstandarisasi lapisan integrasi sehingga satu server MCP bekerja dengan model apa pun yang kompatibel, seperti colokan universal untuk AI.
Bagaimana cara kerja MCP?
MCP menggunakan arsitektur tiga bagian: aplikasi host (seperti Claude Desktop atau Cursor), klien MCP di dalam host yang mengelola koneksi, dan server MCP yang mengekspos alat dan data. Semua komunikasi menggunakan pesan JSON-RPC 2.0 melalui stdio (lokal) atau Streamable HTTP (jarak jauh).
Untuk apa MCP digunakan?
Kasus penggunaan umum termasuk menghubungkan asisten AI ke database (Postgres, MySQL), berintegrasi dengan platform kode (GitHub, GitLab), mengakses alat SaaS (Slack, Notion, Google Drive), dan membangun agen AI otonom yang perlu berinteraksi dengan layanan dunia nyata.
Apakah MCP sama dengan function calling?
Tidak. Function calling spesifik untuk model (format OpenAI berbeda dari Anthropic) dan per-permintaan, Anda mengirim skema alat dengan setiap panggilan API. MCP adalah protokol terstandarisasi yang bekerja lintas model, mendukung penemuan alat, dan mencakup resources serta prompts di luar sekadar eksekusi fungsi.
Apa itu server MCP?
Server MCP adalah program yang mengekspos alat, resources, dan prompts ke model AI melalui protokol MCP. Mereka membungkus API eksternal dan sumber data dalam antarmuka yang distandarisasi. Contohnya termasuk server GitHub MCP (untuk manajemen PR dan isu) dan server Postgres MCP (untuk kueri database).
Bagaimana cara membangun server MCP?
Gunakan Python dengan FastMCP (pip install fastmcp) atau TypeScript dengan SDK resmi (npm install @modelcontextprotocol/sdk). Definisikan alat Anda sebagai fungsi yang didekorasi (Python) atau handler yang terdaftar (TypeScript), lalu jalankan server. Lihat bagian tutorial di atas untuk kode lengkap yang berfungsi, atau ikuti panduan langkah demi langkah kami untuk membangun server MCP dari nol untuk penjelasan lengkap.
Apakah MCP aman?
Protokol itu sendiri mendukung OAuth 2.1 untuk autentikasi dan izin yang tercakup. Namun, penelitian Astrix Security menemukan bahwa 88% implementasi server MCP yang ada mengandalkan rahasia statis daripada OAuth. Protokol ini aman secara desain, tetapi sebagian besar deployment dunia nyata belum mengejarnya.
LLM apa yang mendukung MCP?
Claude memiliki dukungan MCP native sejak pembuatannya pada November 2024. ChatGPT menambahkan dukungan pada Maret 2025, dan Gemini menyusul pada April 2025. Model open-source dapat menggunakan MCP melalui adapter di LangChain dan LlamaIndex.
Apa perbedaan antara MCP dan REST API?
REST API dirancang untuk komunikasi layanan-ke-layanan umum. MCP dirancang khusus untuk interaksi model AI, ini mencakup penemuan alat, negosiasi skema, akses sumber daya, dan templat prompt yang tidak dimiliki REST. Anda tidak akan mengganti REST API Anda dengan MCP; mereka melayani lapisan yang berbeda.
Siapa yang memelihara MCP sekarang?
Agentic AI Foundation (AAIF) Linux Foundation, yang dibentuk pada Desember 2025, mengatur MCP. Ini didirikan bersama oleh Anthropic, Block, dan OpenAI. Tata kelola netral vendor ini adalah alasan utama perusahaan mengadopsi MCP.
Apa itu Streamable HTTP di MCP?
Streamable HTTP adalah mekanisme transport produksi yang ditambahkan dalam pembaruan spesifikasi MCP 2025. Ini menggantikan transport HTTP+SSE yang lebih lama dengan desain yang lebih bersih: klien mengirimkan permintaan HTTP POST, dan server dapat merespons secara sinkron atau melalui streaming SSE. Ini bekerja di belakang load balancer dan mendukung autentikasi HTTP standar.
Berapa banyak server MCP yang ada?
Linux Foundation menyebutkan 10.000+ server aktif dan 97 juta unduhan SDK bulanan ketika MCP didonasikan ke AAIF pada Desember 2025. Ekosistem ini mencakup database, alat kode, integrasi SaaS, mesin pencari, dan penyedia infrastruktur cloud.
Kesimpulan
MCP telah berubah dari eksperimen open-source Anthropic menjadi protokol standar industri untuk menghubungkan model AI ke alat hanya dalam waktu sedikit lebih dari setahun. Berikut hal-hal yang penting:
- MCP memecahkan masalah M x N, satu server bekerja dengan setiap model yang kompatibel, satu klien bekerja dengan setiap server
- Anda dapat membangun server MCP yang berfungsi dalam kurang dari 50 baris kode Python (FastMCP) atau TypeScript
- Gunakan stdio untuk pengembangan, Streamable HTTP untuk produksi, pilihan transportnya sederhana
- Amankan server Anda dengan OAuth 2.1 -- 88% implementasi saat ini tidak melakukannya, dan itu adalah risiko nyata
- Ekosistem siap produksi -- 10.000+ server, semua LLM utama, tata kelola netral vendor di bawah Linux Foundation
Melihat ke depan, peta jalan 2026 berfokus pada komunikasi agen-ke-agen melalui primitif Tasks baru, keamanan perusahaan yang ditingkatkan, dan MCP Apps untuk UI interaktif yang digerakkan server. MCP bukan lagi sekadar protokol untuk akses alat, ini menjadi lapisan infrastruktur untuk AI agentic.
Mulailah dengan kode tutorial di atas, uji di MCP Inspector, dan hubungkan ke Claude Desktop. Anda akan memiliki integrasi MCP yang berfungsi dalam waktu kurang dari satu jam.
Sumber
- Spesifikasi MCP (2025-11-25)
- Spesifikasi Otorisasi MCP
- Spesifikasi Transport MCP
- Dokumentasi MCP Inspector
- Memperkenalkan Model Context Protocol, Anthropic
- Mendonasi MCP ke Linux Foundation, Anthropic
- Pengumuman AAIF Linux Foundation
- Dukungan MCP Google Cloud
- SDK Python FastMCP
- SDK TypeScript MCP
- Astrix Security: State of MCP Server Security 2025
- Peta Jalan MCP 2026