Dipublikasikan 30 Juni 2026
Model Context Protocol (MCP) adalah protokol terbuka yang memungkinkan LLM application terhubung ke sumber data dan tool eksternal secara standar. Dikenalkan oleh Anthropic, MCP sering diibaratkan sebagai USB-C untuk AI integrations. Artikel ini adalah tutorial praktis membangun MCP server menggunakan Python SDK resmi agar internal API perusahaan Anda bisa diakses Claude dan LLM lainnya.
MCP memecahkan masalah fragmentasi integrasi. Alih-alih setiap LLM vendor membuat plugin proprietary, MCP menyediakan satu protokol umum untuk mengekspos tool, resource, dan prompt. Host seperti Claude Desktop, Cursor, atau IDE lain yang mendukung MCP bisa langsung menggunakan server yang Anda bangun.
Pastikan Python 3.10 atau lebih baru sudah terinstall. Gunakan uv atau pip untuk menginstall SDK:
uv add "mcp[cli]"
# atau
pip install "mcp[cli]"SDK ini menyediakan decorator-based API yang memungkinkan Anda mendefinisikan tool dan resource hanya dengan type-hinted Python functions. Tidak perlu menulis JSON Schema manual atau boilerplate protocol handling.
Buat file server.py dengan konten berikut:
from mcp.server import MCPServer
mcp = MCPServer("Demo")
@mcp.tool()
def add(a: int, b: int) -> int:
"""Add two numbers."""
return a + b
@mcp.resource("greeting://{name}")
def greeting(name: str) -> str:
"""Greet someone by name."""
return f"Hello, {name}!"Itu sudah cukup sebagai server MCP lengkap: satu tool dan satu templated resource. Decorator @mcp.tool() mengekspos fungsi sebagai callable tool, sementara @mcp.resource() mengekspos data dengan URI scheme. Type hints secara otomatis menjadi JSON Schema untuk validasi input.
Sekarang kita akan membuat tool yang benar-benar berguna: mengakses internal API perusahaan. Anggap Anda punya REST API internal untuk manajemen user.
import httpx
from mcp.server import MCPServer
mcp = MCPServer("InternalAPI")
@mcp.tool()
async def get_user(user_id: int) -> dict:
"""Fetch user details from internal API by user ID."""
async with httpx.AsyncClient() as client:
resp = await client.get(f"http://internal-api.company.local/users/{user_id}")
resp.raise_for_status()
return resp.json()
@mcp.tool()
async def search_users(query: str, limit: int = 10) -> list:
"""Search users by name or email."""
async with httpx.AsyncClient() as client:
resp = await client.get(
"http://internal-api.company.local/users/search",
params={"q": query, "limit": limit}
)
resp.raise_for_status()
return resp.json()Dengan dua tool ini, LLM bisa mengambil data user spesifik atau melakukan pencarian berdasarkan nama dan email. Semua otentikasi dan otorisasi internal tetap berada di sisi API Anda, bukan diprompt LLM.
Sebelum dihubungkan ke Claude Desktop, test server menggunakan MCP Inspector:
uv run mcp dev server.pyCommand ini akan menjalankan Inspector di browser. Anda bisa memanggil tool get_user dengan parameter user_id=1 dan melihat response langsung. Ini mempercepat iterasi tanpa harus restart Claude Desktop berulang kali.
Setelah server bekerja dengan baik, daftarkan ke Claude Desktop melalui file konfigurasi. Di macOS, file ini berada di direktori Application Support pada Library pengguna. Tambahkan entry berikut:
{
"mcpServers": {
"internal-api": {
"command": "uv",
"args": ["run", "--with", "mcp", "python", "/path/to/server.py"]
}
}
}Restart Claude Desktop. Sekarang Claude bisa memanggil tool get_user dan search_users secara otomatis ketika conversation membutuhkannya. Anda akan melihat indicator tool use di UI Claude saat request sedang diproses.
Jangan ekspos API key atau kredensial langsung di code. Gunakan environment variable atau secret manager.
Terapkan rate limiting di sisi API internal. LLM bisa membuat banyak request dalam satu conversation.
Gunakan scope minimal. Hanya ekspos endpoint yang benar-benar dibutuhkan LLM, jangan memberikan akses write tanpa approval manusia.
Log semua tool invocation. Audit trail penting untuk debugging dan compliance.
Selain Claude Desktop, MCP server yang Anda bangun juga bisa digunakan oleh IDE lain yang mendukung protokol ini. Contohnya Cursor dan Windsurf sudah mulai mengadopsi MCP untuk memperluas kemampuan AI coding assistant mereka. Konfigurasi di masing-masing IDE sedikit berbeda, tetapi prinsipnya sama: daftarkan server Anda beserta command untuk menjalankannya.
Untuk Cursor, biasanya Anda perlu mengedit file konfigurasi JSON di direktori pengguna dan restart aplikasi. Setelah terdaftar, tool Anda muncul sebagai available actions saat AI assistant sedang memproses request pengguna.
Selain tool, MCP juga mendukung resource dan prompt. Resource adalah data read-only yang bisa diakses LLM, seperti file konfigurasi, schema database, atau dokumen API. Prompt adalah template conversation yang bisa digunakan oleh host untuk memulai interaksi dengan user.
Contoh resource sederhana:
@mcp.resource("docs://api-reference")
def api_docs() -> str:
with open("api-reference.md") as f:
return f.read()Dengan resource ini, LLM bisa mengakses dokumentasi API terbaru tanpa perlu hardcode di prompt. Ini sangat berguna saat dokumentasi sering berubah.
Ekosistem MCP berkembang sangat cepat. Di GitHub, ada ratusan repositori server MCP open source yang mencakup integrasi dengan database populer, platform cloud, dan bahkan smart home devices. Komunitas aktif berbagi best practice, troubleshooting tips, dan template server di Discord resmi MCP contributors.
Jika Anda membangun server yang bermanfaat, pertimbangkan untuk open-sourcenya. Ini tidak hanya membantu developer lain, tetapi juga meningkatkan visibilitas tim Anda di komunitas AI engineering. Banyak perusahaan startup mendapatkan exposure signifikan hanya dengan merilis integration MCP yang well-documented.
MCP Server dengan Python SDK menurunkan barrier untuk menghubungkan internal system ke LLM. Dengan beberapa decorator dan type hints, Anda bisa mengekspos API internal sebagai tool yang aman dan terstruktur. Protokol ini berkembang pesat dan didukung oleh semakin banyak host dan client.
Dokumentasi lengkap Python SDK tersedia di py.sdk.modelcontextprotocol.io. Spesifikasi protokol resmi bisa dibaca di modelcontextprotocol.io. Untuk contoh server production-ready, explore repositori github.com/modelcontextprotocol/python-sdk.
Dapatkan feedback, users, dan eksposur dari komunitas kreator, developer, dan entrepreneur digital Indonesia.
Submit Produk → Pelajari Dulu