Maak een MCP-server voor Claude Code — een praktische stapsgewijze handleiding

CometAPI
AnnaNov 22, 2025
Maak een MCP-server voor Claude Code — een praktische stapsgewijze handleiding

Het Model Context Protocol (MCP) is een open standaard waarmee modellen zoals Anthropics Claude en ontwikkelaarstools zoals Claude Code op een veilige, gestandaardiseerde manier externe tools, databronnen en prompts kunnen aanroepen.

Deze gids begeleidt je bij het bouwen van je eigen MCP-server vanaf nul, zodat Claude Code toegang krijgt tot maatwerkfuncties en zijn functionaliteit ver kan uitbreiden voorbij de ingebouwde features.

Wat is het Model Context Protocol (MCP)?

MCP (Model Context Protocol) is een open specificatie die is ontworpen om te standaardiseren hoe language-model-clients (zoals Claude, Claude Code of andere LLM-frontends) verbinding maken met toolservers en databronnen. Zie MCP als een “USB‑C‑poort voor LLM’s”: het definieert een transport-/JSON-RPC-schema en een uniforme manier voor servers om drie soorten mogelijkheden te publiceren:

  • Resources — bestandsachtige of documentgegevens die een client kan lezen (bijv. een databaserecord, een tekstbestand, een JSON-payload).
  • Tools — aanroepbare functies die het model de host kan vragen uit te voeren (met goedkeuring van de gebruiker).
  • Prompts — herbruikbare prompttemplates of workflows die het model/de client kan aanroepen.

MCP ondersteunt meerdere transports (stdio, HTTP, SSE) en biedt schema, SDK’s en voorbeeldservers zodat je niet zelf het wire format hoeft uit te vinden. Het protocol wordt publiek onderhouden (spec + SDK’s) en heeft tutorials en een galerij met voorbeeldservers om adoptie te versnellen.

Hoe is MCP georkestreerd?

De architectuur van MCP is bewust eenvoudig en modulair: de kernonderdelen zijn MCP-servers, MCP-clients en transports die JSON-RPC‑berichten tussen hen vervoeren. Hieronder staan de belangrijkste componenten waarmee je werkt bij het bouwen van een server voor Claude Code (of andere MCP-clients).

Server, client en het protocol

  • MCP-server — Een service die tools, resources en prompts publiceert. Tools kunnen side‑effects veroorzaken of data ophalen; resources bieden read‑only content; prompts zijn herbruikbare prompttemplates die de client het model kan laten gebruiken.
  • MCP-client (host) — Meestal onderdeel van de LLM-host (bijv. Claude Code, VS Code‑plug‑in, een browserclient). Deze ontdekt beschikbare servers, toont toolbeschrijvingen aan het model en routeert model‑geïnitieerde aanroepen naar servers.
  • Protocol — Berichten zijn gecodeerd als JSON-RPC; de spec definieert lifecycle‑events, tooldiscovery, aanroep, completions/sampling en hoe gestructureerde resultaten terug naar de client en het model worden getransporteerd.

Communicatiepatroon (wat gebeurt er als een tool wordt gebruikt)

  1. Client stuurt het gebruikersbericht naar het model.
  2. Model analyseert de context en besluit een door MCP blootgestelde tool aan te roepen (of meerdere tools).
  3. Client stuurt de toolaanroep via het gekozen transport door naar de MCP‑server.
  4. Server voert de tool uit en retourneert resultaten.
  5. Model ontvangt de tooloutput en stelt het definitieve antwoord aan de gebruiker samen.

Implementatieprimitieven

  • JSON-RPC‑berichten volgen het MCP‑schema.
  • Tooldefinities worden gepubliceerd in de discovery‑responses van de server zodat clients ze in de UI kunnen tonen.
  • Resources worden door clients verwezen met de syntaxis @source:path (bijv. @postgres:...), zodat modellen naar externe content kunnen verwijzen zonder enorme data in de prompt te hoeven inlinen.

Waarom Claude Code integreren met MCP-servers?

Claude Code is Anthropics aanbod gericht op code- en ontwikkelaarsworkflows (editor/IDE‑integratie, codebegrip, enz.). Door je interne tools (broncodezoeker, CI‑runner, ticketsysteem, private registries) via MCP‑servers bloot te stellen, kan Claude Code ze als first‑class tools in codegesprekken en agentflows gebruiken.

Het integreren van Claude Code met MCP‑servers ontsluit praktische, productie‑relevante mogelijkheden voor een coding‑agent:

1. Laat het model handelen op echte systemen

Claude Code kan een MCP‑server vragen om issuetrackers te bevragen, databasequeries uit te voeren, grote documentatie te lezen of GitHub‑PR’s te maken — dit maakt end‑to‑end‑automatisering mogelijk vanuit de codeersessie. Dit wordt expliciet ondersteund door de documentatie van Claude Code (voorbeelden: Postgres, Sentry bevragen of PR’s aanmaken).

2. Ontlast grote data en gespecialiseerde logica

In plaats van elke databron in de prompt te embedden (wat tokens kost), publiceer je data en tools via MCP. Het model roept de tool aan, krijgt een gestructureerd antwoord en redeneert daarmee — dit vermindert tokenverbruik en laat servers het zware werk doen (DB‑queries, lange bestandlezen, auth).

3. Security en governance

MCP centraliseert toegangscontrole en auditing op de serverlaag, zodat organisaties goedgekeurde servers kunnen whitelisten, bepalen welke tools beschikbaar zijn en outputs beperken. Claude Code ondersteunt ook enterprise‑MCP‑configuratie en toestemming per scope.

4. Herbruikbaarheid en ecosysteem

MCP‑servers zijn herbruikbaar over clients en teams. Bouw één keer en veel Claude/LLM‑clients kunnen dezelfde services gebruiken (of implementaties uitwisselen).

Wat heb je nodig voordat je begint?

Minimumvereisten

  • Een ontwikkelmachine met Python 3.10+ (we gebruiken Python in het voorbeeld). Alternatief: Node / andere talen worden ondersteund door MCP‑SDK’s.
  • uv (de tool van Astral) of een equivalent om MCP‑stdio‑servers te draaien (de MCP‑tutorial gebruikt uv). Installatiestappen hieronder.
  • Claude Code geïnstalleerd of toegang tot de Claude‑client (desktop of CLI) om je server te registreren en te testen; of elke MCP‑capabele client. Claude Code ondersteunt HTTP, SSE en lokale stdio‑servers.
  • Security‑notitie: Voeg in team‑ of enterprise‑omgevingen alleen vertrouwde MCP‑servers toe aan Claude Code — MCP geeft servers toegang tot gevoelige data en er zijn risico’s op promptinjectie als een server kwaadaardige content terugstuurt.

Hoe installeer je de Claude Code CLI en verifieer je deze?

Dit is de Claude Code‑installatie- en gebruiksgids.

1) Korte samenvatting — aanbevolen installatiemethoden

Gebruik de native installer (aanbevolen) of Homebrew op macOS/Linux. NPM is beschikbaar als je een Node‑gebaseerde installatie nodig hebt. Windows heeft PowerShell / CMD‑installers. Bron: officiële Claude Code‑docs & GitHub.


2) Vereisten

  • macOS 10.15+, Ubuntu 20.04+/Debian 10+, of Windows 10+ (WSL aanbevolen op Windows).
  • Node.js 18+ alleen vereist voor de NPM‑installatiemethode.

3) Installatiecommando’s (kies één)

Native (aanbevolen — geen Node‑dependency), 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

(Dit zijn de officiële native installerscripts).

NPM (als je een Node‑gebaseerde globale installatie wilt):

# requires Node.js 18+

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

Gebruik geen sudo npm install -g — ontraad global installs met sudo (rechten-/securityproblemen). Als je permissiefouten krijgt, gebruik nvm of fix je npm‑global prefix in plaats van sudo te gebruiken.

4) Verifieer dat de binary is geïnstalleerd (basischecks)

Voer dit lokaal uit direct na installatie:

# is the command on PATH?

which claude

# version (or -v)

claude --version
# or

claude -v

# help (sanity check)

claude --help

Verwacht: which toont een pad (bijv. /usr/local/bin/claude of ~/.nvm/.../bin/claude) en claude --version print een semver‑achtige string. De docs en README tonen beide claude als de primaire CLI‑entrypoint.


5) Verifieer installatiegezondheid en configuratie (aanbevolen checks)

a) claude doctor, voer uit:

claude doctor

Deze ingebouwde diagnose controleert je installatietype, veelvoorkomende problemen (zoals npm‑permissieproblemen), dependencies zoals ripgrep en stelt fixes voor. De docs bevelen expliciet aan om na installatie claude doctor te draaien.

b) Voer een smoke‑test uit (niet‑interactief)

Vanaf je projectdirectory:

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

Dit gebruikt print‑modus (-p) om één prompt te sturen en dan af te sluiten; handig voor CI of snelle functionele checks.

c) Authenticatieverificatie (controleer dat de CLI Anthropic kan bereiken)

Claude Code ondersteunt verschillende auth‑flows (Console OAuth, API‑sleutel, providerintegraties). Gebruikelijke checks:

  1. Als je een API‑sleutel gebruikt (CI / headless / lokale omgevingsvariabele):
export ANTHROPIC_API_KEY="sk-..."
# then

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

Je kunt de API‑sleutel van CometAPI gebruiken om Claude Code te gebruiken. Het gebruik van Claude’s API via CometAPI geeft je 20% korting.

  1. Als je OAuth via de console gebruikte — voer uit:
claude auth status
claude auth whoami

Je zou account-/abonnementsinfo of een bevestiging moeten zien dat je geauthenticeerd bent.

Stapsgewijze voorbereidingen voor je omgeving

Hieronder staan concrete stappen om twee gangbare ontwikkelstacks (TypeScript en Python) voor te bereiden, gevolgd door snelle checks om te verifiëren dat alles werkt.

H3 — A. TypeScript / Node‑setup (snelste pad)

  1. Maak een project en installeer de 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. Maak server.ts. (We geven een volledig voorbeeld in de sectie “Hoe snel een MCP‑server bouwen…”.)
  2. Run:
npx -y tsx server.ts
  1. Test lokaal met de MCP Inspector of voeg toe aan Claude Code:
npx @modelcontextprotocol/inspector
# or (for Claude Code)

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

(Inspector en Claude‑commando’s laten je discovery valideren en tools aanroepen.)

Hoe bouw je snel een MCP‑server voor Claude Code?

snelle checklist

  1. Start je server (Streamable HTTP aanbevolen): node server.ts of uvicorn server:app.
  2. Vanaf je dev‑machine, ofwel:
  • Gebruik MCP Inspector om te valideren (npx @modelcontextprotocol/inspector) en bevestig tools/list en resources/list; of
  • Voeg de server toe aan Claude Code: claude mcp add --transport http http://:/mcp (of volg de web‑UI‑flows als je client remote MCP ondersteunt).

Als je van plan bent de Messages API‑connector van Anthropic voor remote MCP te gebruiken (geen aparte client), lees de Claude‑documentatie — mogelijk is een beta‑header vereist (check de docs voor de exacte header en de huidige ondersteuningsstatus).

Hieronder staan twee complete maar compacte servervoorbeelden die je kunt kopiëren, draaien en verbinden met Claude Code (of de MCP Inspector). Het TypeScript‑voorbeeld gebruikt Express + de TypeScript‑SDK; het Python‑voorbeeld demonstreert een FastAPI‑mount.

Opmerking: de code hieronder volgt de publieke SDK‑voorbeelden en is bewust minimaal voor de duidelijkheid. Voeg voor productie authenticatie, logging, rate limiting en invoervalidatie toe bovenop de SDK‑defaults.


Voorbeeld 1: TypeScript + Express (Streamable HTTP)

Maak server.ts (compleet):

// 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`));

Run:

npm install
npx -y tsx server.ts

Maak vervolgens verbinding in Claude Code (voorbeeld):

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

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

Dit voorbeeld is aangepast van de officiële TypeScript‑SDK Quick Start en laat zien hoe je tools en resources registreert en ze vervolgens via Streamable HTTP exposeert.


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

Maak server.py (compleet):

# 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"}

Run:

uvicorn server:app --reload --port 8000

Verbind met de Inspector:

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

Voorbeelden van de Python‑SDK en FastMCP‑hulpprogramma’s maken het eenvoudig om met @mcp.tool() en @mcp.resource() gedecoreerde functies te registreren die de LLM kan ontdekken en aanroepen.


Hoe roept Claude Code jouw tools daadwerkelijk aan?

Wanneer een LLM besluit een tool te gebruiken, stuurt de client een JSON-RPC‑aanroep naar de MCP‑server. De server voert de gevraagde tool uit (bijvoorbeeld een DB bevragen, tests draaien of een externe API aanroepen) en retourneert gestructureerde content en presenteerbare content. De client (Claude Code) kan de gestructureerde output vervolgens opnemen in de context van het model, zodat het model verder kan redeneren met die betrouwbare data — niet alleen met de tekstuele output van de server. De TypeScript‑SDK ondersteunt het registreren van inputSchema en outputSchema (zod), zodat argumenten en outputs worden gevalideerd en machine‑typisch zijn.


Welke test- en debuggingtools moet je gebruiken?

MCP Inspector

De MCP Inspector is de officiële visuele ontwikkelaarstool voor het testen van MCP‑servers. Je kunt er verbinding mee maken (stdio, SSE of streamable‑HTTP), tools lijsten, ze handmatig aanroepen en de lifecycle van JSON-RPC‑berichten inspecteren — onmisbaar tijdens ontwikkeling. Start via npx @modelcontextprotocol/inspector.

Lokaal versus remote testen

  • Lokaal (stdio) — snelle iteratiecyclus voor desktopapps en offline debugging.
  • Streamable HTTP — test met de Inspector of verbind met Claude Code via de claude mcp add‑CLI of de MCP‑connector in de Messages API voor remote tests. Zorg dat je eventuele auth‑headers die je server vereist, meestuurt.

Conclusie

MCP is de praktische brug tussen moderne LLM’s en de systemen die daadwerkelijk de data bevatten en acties uitvoeren. Voor codeworkflows geeft integratie van Claude Code met een MCP‑server het model gestructureerde, auditeerbare toegang tot repositories, CI, issuetrackers en maatwerktools — wat resulteert in preciezere automatisering en veiligere side‑effects. Met officiële SDK’s in TypeScript en Python, Streamable HTTP voor remote hosting en tools zoals de MCP Inspector, kun je in minuten een minimale server bouwen en itereren richting een productie‑uitrol.

Ontwikkelaars kunnen toegang krijgen tot Claude Sonnet 4.5 API en Claude Opus 4.1 API enz. via CometAPI; de nieuwste modelversie wordt altijd bijgewerkt met de officiële website. Begin met het verkennen van de mogelijkheden van het model in de Playground en raadpleeg de API‑gids voor gedetailleerde instructies. Zorg ervoor dat je bent ingelogd bij CometAPI en een API‑sleutel hebt verkregen voordat je toegang krijgt. CometAPI biedt een prijs die veel lager is dan de officiële prijs om je te helpen integreren.

Klaar om te starten?→ Meld je vandaag nog aan bij CometAPI!

Wil je meer tips, gidsen en nieuws over AI? Volg ons op VK, X en Discord!

Klaar om de AI-ontwikkelingskosten met 20% te verlagen?

Start gratis in enkele minuten. Gratis proeftegoeden inbegrepen. Geen creditcard vereist.

Lees Meer