Anatomi server MCP: skema, handler, sesi
A3 — MCP & Ekosistem
Server MCP minimal = deklarasi tools (schema JSON Schema, sama seperti A1) + handler yang mengeksekusi. Bedanya: kontraknya distandarkan, semua client bisa pakai.
Bagian server
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const server = new McpServer({ name: "notes", version: "1.0.0" });
server.tool(
"daftar_catatan", // name
{ folder: { type: "string" } }, // inputSchema (JSON Schema parsial)
async ({ folder }) => {
const files = readDir(folder);
return { content: [{ type: "text", text: files.join("\n") }] };
},
);
export { server };
Lalu atur transport: stdio (dev) atau Streamable HTTP (produksi).
Kontrak hasil tool
Hasil tool dikirim sebagai content — array blok teks (atau gambar/resource). Error dikembalikan sebagai isError: true + pesan, agar model bisa memperbaiki — bukan crash proses.
Tiga primitif, jangan tertukar
tools= aksi (ada efek samping) — model memanggil saat perlu.resources= data (tidak ada efek samping) — client/host yang menarik.prompts= template prompt berparam — host menyisipkan ke konteks.
Tugas: baca dokumentasi SDK MCP resmi untuk satu transport selain yang kamu pakai, dan catat bedanya (setup, keamanan, kapan cocok).
A3