Membuat MCP Server Sederhana dengan Python: Panduan Langkah...
Membuat MCP Server Sederhana dengan Python: Panduan Langkah demi Langkah
Panduan langkah demi langkah membangun Model Context Protocol (MCP) server pertama Anda dengan Python — dari instalasi SDK, menulis tool pertama, menguji dengan MCP Inspector, hingga menghubungkannya ke Claude Desktop.
Model Context Protocol (MCP) adalah standar terbuka buatan Anthropic yang memungkinkan asisten AI seperti Claude terhubung secara aman ke data dan tools di luar dirinya — file lokal, database, API pihak ketiga, bahkan CMS sebuah website. Bila selama ini setiap integrasi AI ke sebuah sistem butuh kode custom yang berbeda-beda, MCP menyediakan satu "bahasa universal" yang bisa dipakai berulang oleh model manapun.
Tutorial ini akan memandu kamu membangun MCP server sederhana dari nol menggunakan Python, lengkap dengan satu tool yang bisa dipanggil oleh AI assistant seperti Claude Desktop.
Prasyarat
Sebelum mulai, pastikan kamu sudah punya:
- Python 3.10 atau lebih baru
pipatauuvuntuk manajemen paket- Claude Desktop (opsional, untuk menguji server secara langsung)
- Pemahaman dasar tentang fungsi dan decorator di Python
Tip: Kalau belum familier dengan konsep dasar MCP, singkatnya begini: sebuah MCP server menyediakan tiga hal — tools (fungsi yang bisa dijalankan AI), resources (data yang bisa dibaca AI), dan prompts (template instruksi siap pakai). Tutorial ini fokus membangun sebuah tool sederhana.
Langkah 1: Siapkan Proyek dan Instal SDK
Buat folder proyek baru, lalu instal Python SDK resmi untuk MCP.
mkdir mcp-server-cuaca
cd mcp-server-cuaca
python -m venv venv
source venv/bin/activate # di Windows: venv\Scripts\activate
pip install mcp
Paket mcp ini menyediakan kelas FastMCP, cara tercepat untuk mendefinisikan server tanpa perlu menulis skema JSON secara manual.
Langkah 2: Tulis Kerangka Server
Buat file server.py dan mulai dengan inisialisasi server dasar.
from mcp.server.fastmcp import FastMCP
# Inisialisasi server dengan nama unik
mcp = FastMCP("cuaca-server")
if __name__ == "__main__":
mcp.run(transport="stdio")
Baris transport="stdio" berarti server berkomunikasi lewat standard input/output — cara paling umum dipakai saat MCP server dijalankan lokal oleh Claude Desktop.
Langkah 3: Definisikan Tool Pertama
Sekarang kita tambahkan satu tool: fungsi yang bisa dipanggil AI untuk mengambil data. Contoh ini membuat tool sederhana yang mengembalikan info cuaca dummy — di proyek nyata, bagian ini bisa diganti dengan pemanggilan API cuaca sungguhan.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("cuaca-server")
@mcp.tool()
def cek_cuaca(kota: str) -> str:
"""Mengambil informasi cuaca terkini untuk sebuah kota.
Args:
kota: Nama kota yang ingin dicek cuacanya.
"""
# Di sini biasanya kamu memanggil API cuaca sungguhan
data_dummy = {
"jakarta": "Cerah berawan, 31°C",
"bandung": "Hujan ringan, 22°C",
"surabaya": "Cerah, 33°C",
}
hasil = data_dummy.get(kota.lower(), "Data cuaca untuk kota ini tidak tersedia")
return f"Cuaca di {kota}: {hasil}"
if __name__ == "__main__":
mcp.run(transport="stdio")
Perhatikan bahwa docstring pada fungsi bukan sekadar komentar — MCP memakainya untuk memberi tahu AI kapan dan bagaimana tool ini seharusnya dipakai. Semakin jelas deskripsinya, semakin tepat AI memutuskan kapan memanggil tool tersebut.
Peringatan: Jangan pernah menaruh kredensial (API key, password) langsung di kode. Gunakan environment variable dan muat lewat
os.environ.get("NAMA_VARIABEL").
Langkah 4: Uji Server dengan MCP Inspector
Sebelum menyambungkannya ke Claude Desktop, uji dulu server secara mandiri memakai MCP Inspector — alat resmi berbasis browser untuk mengecek tools tanpa perlu melibatkan AI.
npx @modelcontextprotocol/inspector python server.py
Perintah ini membuka antarmuka di browser tempat kamu bisa melihat daftar tools yang terdaftar, mencoba memanggilnya dengan input manual, dan memeriksa respons JSON-RPC yang dikembalikan.
Langkah 5: Hubungkan ke Claude Desktop
Setelah yakin tool berjalan benar, daftarkan server ke konfigurasi Claude Desktop. Buka file konfigurasinya:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Tambahkan entri berikut:
{
"mcpServers": {
"cuaca-server": {
"command": "python",
"args": ["/path/lengkap/ke/server.py"]
}
}
}
Simpan file, lalu restart Claude Desktop sepenuhnya. Jika berhasil, kamu akan melihat ikon tools baru di antarmuka chat, dan Claude bisa memanggil cek_cuaca setiap kali percakapan membutuhkannya — misalnya saat kamu bertanya "Bagaimana cuaca di Bandung hari ini?"
Tip: Gunakan path absolut, bukan relatif, di bagian
args. Ini penyebab paling umum kenapa MCP server "tidak terdeteksi" oleh Claude Desktop.
Langkah 6: Tambahkan Penanganan Error yang Baik
Server produksi butuh penanganan error yang jelas supaya AI tahu kapan sesuatu gagal, bukan diam-diam mengembalikan data kosong.
@mcp.tool()
def cek_cuaca(kota: str) -> str:
"""Mengambil informasi cuaca terkini untuk sebuah kota."""
if not kota or not kota.strip():
raise ValueError("Nama kota tidak boleh kosong")
try:
# panggilan API sungguhan di sini
...
except Exception as e:
return f"Gagal mengambil data cuaca: {str(e)}"
Pesan error yang deskriptif membantu AI memberi penjelasan yang masuk akal ke pengguna, alih-alih sekadar bilang "terjadi kesalahan".
Penutup dan Langkah Selanjutnya
Kamu baru saja membangun MCP server pertama dengan satu tool fungsional yang bisa dipanggil langsung oleh Claude. Konsep yang sama ini adalah fondasi di balik banyak integrasi MCP populer sekarang — mulai dari koneksi ke Google Drive, Gmail, database Postgres, sampai CMS blog seperti yang dipakai artikel ini sendiri untuk dipublikasikan secara otomatis.
Beberapa langkah lanjutan yang bisa kamu eksplorasi:
- Tambahkan resources agar AI bisa membaca data tanpa memanggil fungsi (misalnya isi file atau baris database)
- Ganti transport dari
stdioke HTTP agar server bisa diakses dari jarak jauh, bukan hanya lokal - Tambahkan autentikasi dan validasi input yang lebih ketat sebelum dipakai di lingkungan produksi
- Pelajari MCP Gateway atau Docker MCP untuk deployment yang lebih aman dan terkelola
Dengan fondasi ini, kamu sudah siap membangun integrasi AI yang lebih kompleks dan sesuai kebutuhan proyekmu sendiri.
Post Terkait
Anthropic Akan Beri Watermark pada Teks Buatan Model AI-nya: Ulasan Mendalam
Anthropic akan menyematkan watermark tak kasat mata pada teks buatan Claude untuk memenuhi Pasal 50 EU AI Act — diterapk...
Alibaba dan DeepSeek Dorong Persaingan Model AI China ke Arah Biaya Lebih Murah
Alibaba meluncurkan Qwen3.8-Max sementara DeepSeek menekan harga inference lewat V4-Flash. Persaingan model AI China kin...
Claude Certified Architecture Foundation: Panduan Lengkap Sertifikasi AI untuk Arsitek Software Modern
Panduan komprehensif tentang program Claude Certified Architecture Foundation dari Anthropic, mencakup struktur sertifik...