MCP (Model Context Protocol): Membangun Integrasi Tools untuk AI
Model Context Protocol (MCP) adalah protokol standar terbuka yang dikembangkan oleh Anthropic untuk menghubungkan asisten AI dengan sumber data dan tools eksternal. Bayangkan MCP sebagai "USB-C untuk AI" — satu standar universal yang memungkinkan AI model apapun terhubung dengan tools apapun tanpa perlu integrasi khusus untuk setiap kombinasi.
Dalam tutorial ini, kita akan mempelajari arsitektur MCP secara mendalam, membangun MCP server dan client dari nol, serta membuat contoh praktis berupa database query server yang memungkinkan AI assistant melakukan query PostgreSQL dengan aman.
Mengapa MCP Penting?
Sebelum MCP, setiap integrasi antara AI dan tools eksternal memerlukan implementasi khusus. Jika Anda memiliki 5 AI model dan 10 tools, Anda memerlukan 50 integrasi berbeda. MCP menyelesaikan masalah ini dengan menyediakan satu protokol standar.
Keuntungan utama MCP:
- Standarisasi: Satu protokol untuk semua integrasi AI-tools
- Keamanan: Kontrol akses granular terhadap data dan operasi
- Modularitas: Server dan client dapat dikembangkan secara independen
- Ekosistem: Komunitas yang berkembang dengan banyak server siap pakai
- Vendor-agnostic: Tidak terikat pada satu provider AI tertentu
Arsitektur MCP
MCP menggunakan arsitektur client-server dengan tiga komponen utama:
1. Host
Host adalah aplikasi AI yang digunakan pengguna, seperti Claude Desktop, Claude Code, atau IDE dengan fitur AI. Host mengelola koneksi dan menyediakan antarmuka pengguna.
2. Client
Client adalah komponen di dalam host yang mengelola koneksi ke satu MCP server. Setiap client memiliki koneksi 1:1 dengan satu server. Client menangani negosiasi kapabilitas dan routing pesan.
3. Server
Server adalah program yang mengekspos resources, tools, dan prompts kepada client. Server bisa berjalan secara lokal atau remote dan berkomunikasi melalui transport layer yang didukung.
┌─────────────────────────────────────┐
│ HOST │
│ (Claude Desktop / Claude Code) │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Client 1 │ │ Client 2 │ │
│ └────┬─────┘ └────┬─────┘ │
└───────┼───────────────┼─────────────┘
│ │
┌────▼─────┐ ┌────▼─────┐
│ Server A │ │ Server B │
│ (DB) │ │ (Files) │
└──────────┘ └──────────┘
Primitif Utama MCP
MCP mendefinisikan tiga primitif utama yang dapat diekspos oleh server:
Resources
Resources adalah data yang dapat dibaca oleh AI, seperti file, database record, atau API response. Resources diidentifikasi dengan URI dan bersifat read-only.
Tools
Tools adalah fungsi yang dapat dipanggil oleh AI untuk melakukan aksi. Tools memiliki parameter yang didefinisikan dengan JSON Schema dan mengembalikan hasil dalam format terstruktur.
Prompts
Prompts adalah template yang dapat digunakan ulang untuk interaksi AI. Prompts membantu pengguna melakukan tugas umum dengan cara yang terstruktur.
Instalasi
Python SDK
# Install menggunakan pip
pip install mcp
Atau menggunakan uv (direkomendasikan)
uv add mcp
Untuk development
uv add "mcp[cli]"
TypeScript SDK
# Install menggunakan npm
npm install @modelcontextprotocol/sdk
Atau menggunakan pnpm
pnpm add @modelcontextprotocol/sdk
MCP Inspector (untuk testing)
# Jalankan MCP Inspector
npx @modelcontextprotocol/inspector
Membangun MCP Server dengan Python
Mari kita mulai dengan membangun MCP server sederhana yang mengekspos resources, tools, dan prompts.
Server Dasar
# server.py
from mcp.server.fastmcp import FastMCP
Inisialisasi server
mcp = FastMCP("Demo Server")
Definisikan resource
@mcp.resource("config://app")
def getconfig() -> str:
"""Mengembalikan konfigurasi aplikasi."""
return "App Configuration: debug=true, version=1.0"
Definisikan tool
@mcp.tool()
def calculatebmi(weightkg: float, heightm: float) -> str: