Membuat Server MCP untuk Claude Code — panduan praktis, langkah demi langkah

CometAPI
AnnaNov 22, 2025
Membuat Server MCP untuk Claude Code — panduan praktis, langkah demi langkah

Model Context Protocol (MCP) adalah standar terbuka yang memungkinkan model seperti Claude milik Anthropic dan alat pengembang seperti Claude Code memanggil alat eksternal, sumber data, dan prompt dengan cara yang aman dan standar.

Panduan ini akan memandu Anda membangun server MCP Anda sendiri dari nol, sehingga Claude Code dapat mengakses fitur kustom dan secara signifikan memperluas fungsinya melampaui fitur bawaan.

Apa itu Model Context Protocol (MCP)?

MCP (Model Context Protocol) adalah spesifikasi terbuka yang dirancang untuk menstandarkan bagaimana klien model bahasa (seperti Claude, Claude Code, atau frontend LLM lainnya) terhubung ke server alat dan sumber data. Anggap MCP sebagai “port USB-C untuk LLM”: ia mendefinisikan skema transport/JSON-RPC dan cara umum bagi server untuk memublikasikan tiga jenis kapabilitas:

  • Resources — data mirip file atau dokumen yang dapat dibaca klien (mis., baris database, file teks, payload JSON).
  • Tools — fungsi yang dapat dipanggil yang bisa diminta model untuk dieksekusi oleh host (dengan persetujuan pengguna).
  • Prompts — template prompt atau alur kerja yang dapat digunakan kembali oleh model/klien.

MCP mendukung beberapa transport (stdio, HTTP, SSE) dan menyediakan skema, SDK, serta server contoh sehingga Anda tidak perlu membuat format wire sendiri. Protokol dipelihara secara publik (spesifikasi + SDK) dan memiliki tutorial serta galeri server contoh untuk mempercepat adopsi.

Bagaimana arsitektur MCP?

Arsitektur MCP sengaja dibuat sederhana dan modular: komponen inti adalah server MCP, klien MCP, dan transport yang membawa pesan berbingkai JSON-RPC di antara keduanya. Di bawah ini adalah komponen utama yang akan Anda gunakan saat membangun server untuk Claude Code (atau klien MCP lainnya).

Server, klien, dan protokol

  • Server MCP — Layanan yang memublikasikan alat, sumber daya, dan prompt. Alat dapat melakukan efek samping atau mengambil data; sumber daya menyajikan konten hanya-baca; prompt adalah template prompt yang dapat digunakan kembali dan dapat diminta oleh klien kepada model.
  • Klien MCP (host) — Biasanya bagian dari host LLM (mis., Claude Code, plugin VS Code, klien peramban). Ia menemukan server yang tersedia, menampilkan deskripsi alat kepada model, dan merutekan panggilan yang diinisiasi model ke server.
  • Protokol — Pesan dikodekan sebagai JSON-RPC; spesifikasi mendefinisikan event siklus hidup, penemuan alat, pemanggilan, penyelesaian/penyampelan, dan bagaimana hasil terstruktur diangkut kembali ke klien dan model.

Pola komunikasi (apa yang terjadi saat sebuah alat digunakan)

  1. Klien mengirim pesan pengguna ke model.
  2. Model menganalisis konteks dan memutuskan untuk memanggil alat yang diekspos oleh MCP (atau beberapa alat).
  3. Klien meneruskan panggilan alat ke server MCP melalui transport yang dipilih.
  4. Server mengeksekusi alat dan mengembalikan hasil.
  5. Model menerima keluaran alat dan menyusun jawaban akhir untuk pengguna.

Primitif implementasi

  • Pesan JSON-RPC mengikuti skema MCP.
  • Definisi alat dipublikasikan dalam respons penemuan server sehingga klien dapat menampilkannya di UI.
  • Sumber daya dirujuk oleh sintaks @source:path oleh klien (mis., @postgres:...), memungkinkan model merujuk konten eksternal tanpa menyisipkan data besar ke dalam prompt.

Mengapa mengintegrasikan Claude Code dengan server MCP?

Claude Code adalah penawaran Anthropic yang berfokus pada alur kerja terkait kode dan pengembang (integrasi editor/IDE, pemahaman kode, dll.). Mengekspos alat internal Anda (pencarian source, CI runner, sistem tiket, registry privat) melalui server MCP memungkinkan Claude Code memanggilnya sebagai alat kelas satu di dalam percakapan pengkodean dan alur agen.

Mengintegrasikan Claude Code dengan server MCP membuka kapabilitas praktis yang relevan untuk produksi bagi agen pengkodean:

1. Membiarkan model bertindak pada sistem nyata

Claude Code dapat meminta server MCP untuk menanyakan pelacak isu, menjalankan kueri database, membaca dokumen besar, atau membuat PR GitHub — memungkinkan otomasi end-to-end dari dalam sesi pengkodean. Ini didukung secara eksplisit oleh dokumentasi Claude Code (contoh: kueri Postgres, Sentry, atau membuat PR).

2. Membebankan data besar dan logika khusus

Alih-alih menyisipkan setiap sumber data ke dalam prompt (yang menghabiskan token), Anda memublikasikan data dan alat melalui MCP. Model memanggil alat, mendapatkan respons terstruktur, dan melakukan penalaran dengannya — ini mengurangi penggunaan token dan membiarkan server menangani pekerjaan berat (kueri DB, pembacaan file panjang, autentikasi).

3. Keamanan dan tata kelola

MCP memusatkan kontrol akses dan audit di lapisan server, memungkinkan organisasi membuat daftar putih server yang disetujui, mengontrol alat apa yang tersedia, dan membatasi output. Claude Code juga mendukung konfigurasi MCP untuk enterprise dan persetujuan per-ruang lingkup.

4. Reusability dan ekosistem

Server MCP dapat digunakan kembali di berbagai klien dan tim. Bangun sekali dan banyak klien Claude/LLM dapat menggunakan layanan yang sama (atau menukar implementasi).

Apa yang Anda perlukan sebelum memulai?

Persyaratan minimum

  • Mesin pengembangan dengan Python 3.10+ (kita akan menggunakan Python pada contoh). Alternatifnya Node / bahasa lain didukung oleh SDK MCP.
  • uv (alat dari Astral) atau runner setara untuk menjalankan server MCP stdio (tutorial MCP menggunakan uv). Langkah instalasi ditunjukkan di bawah.
  • Claude Code terinstal atau akses ke klien Claude (desktop atau CLI) untuk mendaftarkan dan menguji server Anda; atau klien yang mendukung MCP apa pun. Claude Code mendukung server HTTP, SSE, dan stdio lokal.
  • Catatan keamanan: Hanya tambahkan server MCP tepercaya ke Claude Code dalam pengaturan tim atau enterprise — MCP memberi server akses ke data sensitif, dan risiko injeksi prompt ada jika server mengembalikan konten berbahaya.

Cara menginstal dan memverifikasi CLI Claude Code

Ini adalah Panduan Instalasi dan Penggunaan Claude Code.

1) Ringkasan cepat — metode instalasi yang direkomendasikan

Gunakan native installer (direkomendasikan) atau Homebrew di macOS/Linux. NPM tersedia jika Anda memerlukan instalasi berbasis Node. Windows memiliki installer PowerShell / CMD. Sumber: dokumentasi resmi Claude Code & GitHub.


2) Prasyarat

  • macOS 10.15+, Ubuntu 20.04+/Debian 10+, atau Windows 10+ (WSL direkomendasikan di Windows).
  • Node.js 18+ hanya diperlukan untuk metode instalasi NPM.

3) Perintah instalasi (pilih salah satu)

Native (direkomendasikan — tanpa dependensi Node), macOS / Linux / WSL:

curl -fsSL https://claude.ai/install.sh | bash
# optional: install latest explicitly

curl -fsSL https://claude.ai/install.sh | bash -s latest
# or install a specific version

curl -fsSL https://claude.ai/install.sh | bash -s 1.0.58

Windows PowerShell:

irm https://claude.ai/install.ps1 | iex
# or for latest: & (::Create((irm https://claude.ai/install.ps1))) latest

(Ini adalah skrip penginstal native resmi).

NPM (jika Anda menginginkan instalasi global berbasis Node):

# requires Node.js 18+

npm install -g @anthropic-ai/claude-code

Jangan gunakan sudo npm install -g — hindari instalasi global dengan sudo (masalah izin/keamanan). Jika Anda mengalami error izin, gunakan nvm atau perbaiki prefix global npm Anda alih-alih menggunakan sudo.

4) Verifikasi biner terpasang (pemeriksaan dasar)

Jalankan ini secara lokal segera setelah instalasi:

# is the command on PATH?

which claude

# version (or -v)

claude --version
# or

claude -v

# help (sanity check)

claude --help

Ekspektasi: which menampilkan sebuah path (mis., /usr/local/bin/claude atau ~/.nvm/.../bin/claude) dan claude --version mencetak string mirip semver. Dokumentasi dan README sama-sama menampilkan claude sebagai entrypoint CLI utama.


5) Verifikasi kesehatan instalasi dan konfigurasi (pemeriksaan yang direkomendasikan)

a) claude doctor, Jalankan:

claude doctor

Diagnostik bawaan ini memeriksa tipe instalasi Anda, masalah umum (seperti masalah izin npm), dependensi seperti ripgrep, dan menyarankan perbaikan. Dokumentasi secara eksplisit menyarankan menjalankan claude doctor setelah instalasi.

b) Jalankan uji asap (non-interaktif)

Dari direktori proyek Anda:

cd /path/to/your/project
claude -p "Explain this project in 3 sentences"

Ini menggunakan mode print (-p) untuk mengirim satu prompt lalu keluar; bagus untuk CI atau pemeriksaan fungsional cepat.

c) Verifikasi autentikasi (pastikan CLI dapat menjangkau Anthropic)

Claude Code mendukung beberapa alur autentikasi (Console OAuth, kunci API, integrasi penyedia). Pemeriksaan umum:

  1. Jika menggunakan kunci API (CI / headless / variabel lingkungan lokal):
export ANTHROPIC_API_KEY="sk-..."
# then

claude auth status
claude auth whoami    # or `claude auth whoami` / `claude whoami` depending on version

Anda dapat menggunakan kunci API CometAPI untuk menggunakan Claude Code. Menggunakan API Claude melalui CometAPI akan memberi Anda diskon 20%.

  1. Jika Anda menggunakan OAuth melalui konsol — jalankan:
claude auth status
claude auth whoami

Anda seharusnya melihat info akun/paket atau konfirmasi bahwa Anda telah terautentikasi.

Persiapan lingkungan langkah demi langkah

Di bawah ini adalah langkah konkret untuk menyiapkan dua tumpukan pengembang umum (TypeScript dan Python), diikuti pemeriksaan cepat untuk memastikan semuanya berfungsi.

H3 — A. TypeScript / Node setup (jalur tercepat)

  1. Buat proyek dan instal SDK:
mkdir mcp-demo && cd mcp-demo
npm init -y
npm install @modelcontextprotocol/sdk express zod
npm install --save-dev typescript tsx @types/node @types/express
  1. Buat server.ts. (Kami menyediakan contoh lengkap di bagian “Cara Membangun dengan Cepat…”.)
  2. Jalankan:
npx -y tsx server.ts
  1. Uji secara lokal dengan MCP Inspector atau tambahkan ke Claude Code:
npx @modelcontextprotocol/inspector
# or (for Claude Code)

claude mcp add --transport http my-server http://localhost:3000/mcp

(Perintah Inspector dan Claude memungkinkan Anda memvalidasi penemuan dan memanggil alat.)

Bagaimana cara cepat membangun server MCP untuk Claude Code?

daftar periksa cepat

  1. Jalankan server Anda (Streamable HTTP direkomendasikan): node server.ts atau uvicorn server:app.

  2. Dari mesin pengembangan Anda, lakukan salah satu:

  • Gunakan MCP Inspector untuk validasi (npx @modelcontextprotocol/inspector) dan konfirmasikan tools/list dan resources/list; atau
  • Tambahkan server ke Claude Code: claude mcp add --transport http <name> http://<host>:<port>/mcp (atau ikuti alur UI web jika klien Anda mendukung MCP jarak jauh).

Jika Anda berencana menggunakan konektor Messages API dari Anthropic untuk MCP jarak jauh (tanpa klien terpisah), baca dokumentasi Claude — sebuah header beta mungkin diperlukan (periksa dokumentasi untuk header yang tepat dan status dukungan saat ini).

Di bawah ini adalah dua contoh server lengkap namun ringkas yang dapat Anda salin, jalankan, dan hubungkan ke Claude Code (atau MCP Inspector). Contoh TypeScript menggunakan Express + SDK TypeScript; contoh Python menunjukkan mounting FastAPI.

Catatan: kode di bawah mengikuti contoh SDK publik dan sengaja dibuat minimal demi kejelasan. Untuk produksi, tambahkan autentikasi, logging, pembatasan laju, dan validasi input di luar default SDK.


Contoh 1: TypeScript + Express (Streamable HTTP)

Buat server.ts (lengkap):

// server.ts
import express from "express";
import * as z from "zod/v4";
import { McpServer, ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const server = new McpServer({ name: "claude-code-demo", version: "0.1.0" });

// Register a simple tool: add two numbers
server.registerTool(
  "add",
  {
    title: "Add",
    description: "Add two numbers a and b",
    inputSchema: { a: z.number(), b: z.number() },
    outputSchema: { result: z.number() }
  },
  async ({ a, b }) => {
    const output = { result: a + b };
    return {
      content: ,
      structuredContent: output
    };
  }
);

// Register a resource: greet user (dynamic)
server.registerResource(
  "greeting",
  new ResourceTemplate("greeting://{name}", { list: undefined }),
  { title: "Greeting", description: "Return a greeting for the name" },
  async (uri, params) => {
    return {
      contents: 
    };
  }
);

// Express + Streamable HTTP transport
const app = express();
app.use(express.json());

app.post("/mcp", async (req, res) => {
  const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
  // Close transport when connection closes
  res.on("close", () => transport.close());
  await server.connect(transport);
  await transport.handleRequest(req, res, req.body);
});

const port = parseInt(process.env.PORT || "3000", 10);
app.listen(port, () => console.log(`MCP server listening: http://localhost:${port}/mcp`));

Jalankan:

npm install
npx -y tsx server.ts

Lalu hubungkan di Claude Code (contoh):

# Add the remote server to your Claude Code MCP list (local dev)

claude mcp add --transport http my-demo http://localhost:3000/mcp

Contoh ini diadaptasi dari Quick Start SDK TypeScript resmi dan menunjukkan cara mendaftarkan alat dan sumber daya, lalu mengeksposnya melalui Streamable HTTP.


Contoh 2: Python + FastAPI (FastMCP + Streamable HTTP)

Buat server.py (lengkap):

# server.py

from fastapi import FastAPI
from mcp.server.fastmcp import FastMCP

app = FastAPI()
mcp = FastMCP("claude-python-demo", stateless_http=True)

# tool: simple sum

@mcp.tool()
def add(a: int, b: int) -> dict:
    """Add two integers"""
    return {"result": a + b}

# resource: simple greeting resource template

@mcp.resource("greeting://{name}")
def greeting(name: str):
    return {"contents": }

# mount the streamable-http MCP endpoint (FastMCP exposes an ASGI app)

app.mount("/mcp", mcp.streamable_http_app())

# optional endpoint to demonstrate other API routes

@app.get("/")
async def root():
    return {"status": "OK"}

Jalankan:

uvicorn server:app --reload --port 8000

Hubungkan dengan Inspector:

npx @modelcontextprotocol/inspector
# In Inspector select Streamable HTTP and enter http://localhost:8000/mcp

Contoh SDK Python dan utilitas FastMCP memudahkan untuk mendaftarkan fungsi berdekorator @mcp.tool() dan @mcp.resource() yang dapat ditemukan dan dipanggil oleh LLM.

Bagaimana Claude Code benar-benar memanggil alat Anda?

Ketika sebuah LLM memutuskan untuk menggunakan alat, klien mengirim pemanggilan JSON-RPC ke server MCP. Server mengeksekusi alat yang diminta (misalnya, menanyakan DB, menjalankan tes, atau memanggil API eksternal) dan mengembalikan konten terstruktur dan konten yang dapat disajikan. Klien (Claude Code) kemudian dapat memasukkan keluaran terstruktur ke dalam konteks model sehingga model dapat terus melakukan penalaran dengan data yang andal — bukan hanya keluaran tekstual dari server. SDK TypeScript mendukung pendaftaran inputSchema dan outputSchema (zod) sehingga argumen dan output divalidasi dan bertipe mesin.

Alat pengujian dan debugging apa yang harus Anda gunakan?

MCP Inspector

MCP Inspector adalah alat pengembang visual resmi untuk menguji server MCP. Ini memungkinkan Anda terhubung ke server (stdio, SSE, atau streamable-HTTP), mencantumkan alat, memanggilnya secara manual, dan memeriksa siklus hidup pesan JSON-RPC — sangat berharga selama pengembangan. Jalankan melalui npx @modelcontextprotocol/inspector.

Pengujian lokal vs jarak jauh

  • Lokal (stdio) — siklus iterasi cepat untuk aplikasi desktop dan debugging offline.
  • Streamable HTTP — uji dengan Inspector atau hubungkan ke Claude Code menggunakan CLI claude mcp add atau konektor MCP di Messages API untuk pengujian jarak jauh. Pastikan untuk menyertakan header autentikasi apa pun yang diperlukan oleh server Anda.

Kesimpulan

MCP adalah jembatan praktis antara LLM modern dan sistem yang benar-benar menyimpan data serta melakukan aksi. Untuk alur kerja kode, mengintegrasikan Claude Code dengan server MCP memberi model akses terstruktur dan dapat diaudit ke repositori, CI, pelacak isu, dan tooling kustom—menghasilkan otomasi yang lebih presisi dan efek samping yang lebih aman. Dengan SDK resmi di TypeScript dan Python, Streamable HTTP untuk hosting jarak jauh, dan alat seperti MCP Inspector, Anda dapat membangun server minimal dalam hitungan menit dan beriterasi menuju deployment produksi.

Pengembang dapat mengakses Claude Sonnet 4.5 API dan Claude Opus 4.1 API dll melalui CometAPI, versi model terbaru selalu diperbarui dengan situs resmi. Untuk memulai, jelajahi kapabilitas model di Playground dan lihat panduan API untuk instruksi terperinci. Sebelum mengakses, pastikan Anda telah masuk ke CometAPI dan memperoleh kunci API. CometAPI menawarkan harga yang jauh lebih rendah daripada harga resmi untuk membantu Anda melakukan integrasi.

Siap mulai?→ Daftar CometAPI hari ini!

Jika Anda ingin mengetahui lebih banyak tips, panduan, dan berita tentang AI ikuti kami di VK, X dan Discord!

Siap memangkas biaya pengembangan AI hingga 20%?

Mulai gratis dalam beberapa menit. Kredit uji coba gratis disertakan. Tidak perlu kartu kredit.

Baca Selengkapnya