🔌 Wat is MCP?
The Model Context Protocol (MCP) is een open standaard gepubliceerd door Anthropic in december 2024 die een universele interface definieert voor het verbinden van AI-modellen met externe tools, gegevensbronnen en services. Voor MCP was elke AI-integratie een op maat gemaakte, eenmalige implementatie. MCP standaardiseert hoe AI-clients communiceren met externe mogelijkheden — zodat één integratie werkt met elk compatibel AI-systeem.
MCP is een client-serverprotocol: MCP-clients zijn AI-systemen (zoals Claude, Cursor, VS Code met Copilot) die externe mogelijkheden willen gebruiken. MCP-servers zijn services die die mogelijkheden blootleggen (GitHub, een database, een bestandssysteem, een webbrowser) via een gestandaardiseerde API die elke MCP-client kan gebruiken.
🔋 De USB-C-metafoor
Voor USB-C had elk apparaat zijn eigen propriëtaire connector — een telefoonlader werkte niet met een laptop, een displaykabel werkte niet met opslagapparaten. USB-C loste dit op met één universele standaard: één poort, één kabel, oneindig veel apparaten.
AI-integraties vóór MCP waren hetzelfde chaos. Het verbinden van Claude met GitHub vereiste custom code. Het verbinden van GPT-4 met dezelfde GitHub API vereiste andere custom code. Het toevoegen van een nieuwe tool betekende het opnieuw bouwen van integraties vanaf nul voor elk AI-platform.
MCP is USB-C voor AI. Eén standaard:
- Bouw een MCP-server één keer — elke MCP-client kan hem gebruiken
- Neem een nieuw AI-model aan — uw bestaande MCP-servers werken onmiddellijk
- Het ecosysteem van MCP-servers groeit onafhankelijk van de ontwikkeling van AI-modellen
⚙️ Hoe MCP Werkt
MCP gebruikt een JSON-RPC 2.0-protocol over een transportlaag (stdio voor lokale servers, HTTP/SSE voor remote servers). De communicatie volgt een levenscyclus van initialisatie, capability discovery, en request handling.
Drie kernprimitieven
| Primitive | Wat het blootlegt | Example |
|---|---|---|
| Tools | Functies die de AI kan aanroepen (model-controlled) | search_github_issues, run_sql_query, send_email |
| Resources | Data die de AI kan lezen (application-controlled) | file:///workspace/src, db://customers/schema |
| Prompts | Herbruikbare prompt-sjablonen (door gebruiker beheerd) | code-review, summarize-pr, explain-error |
De communicatieflow
- Initialiseren: Client maakt verbinding met server, wisselt protocolversie en capabilities uit
- Ontdekken: Client vraagt lijst op van beschikbare tools, resources en prompts
- Aansturen: AI-model besluit een tool aan te roepen; client stuurt het verzoek naar de server
- Teruggeven: Server voert de actie uit en geeft gestructureerde resultaten terug aan de client
- Doorgaan: AI-model verwerkt de resultaten en zet het redeneren voort
Transportopties
| Transport | Beste voor | Notes |
|---|---|---|
| stdio | Lokale tools, CLI-integraties | Client start server als subprocess; eenvoudigste setup |
| HTTP + SSE | Remote/cloud services, gezamenlijke teams | Server draait onafhankelijk; ondersteunt auth-headers |
| WebSocket | Realtime bidirectioneel (concept) | Voorgesteld voor streaming use-cases |
🔄 MCP vs Function Calling
Function calling (toolgebruik) is een functie ingebouwd in specifieke AI-API's — OpenAI, Anthropic, Google — die je toestaat om aangepaste functies te definiëren die het model kan aanroepen. MCP is een laag boven of naast function calling die standaardiseert hoe die functies worden ontdekt en verbonden.
| Function Calling | MCP | |
|---|---|---|
| Scope | API-specifiek, per-aanvraag | Cross-platform, gestandaardiseerd |
| Discovery | Hardcoded in je API-aanroep | Dynamisch — server adverteert capabilities |
| Portability | Gekoppeld aan één AI-provider | Werkt met elke MCP-compatibele client |
| Resources | Niet gestandaardiseerd | Eerste-klasse primitie f (bestanden, DB's, URI's) |
| Beste voor | Eenvoudige, single-provider use-cases | Multi-tool, multi-model productieomgevingen |
In de praktijk gebruiken MCP-servers vaak function calling intern — MCP levert de discovery en connectielaag, terwijl function calling de daadwerkelijke LLM-tot-tool-aanroep afhandelt.
🏢 Wie ondersteunt MCP
De adoptie van MCP is snel gegroeid sinds de lancering in december 2024. Per april 2026 omvat het ecosysteem:
AI-clients met MCP-ondersteuning
- Claude (Anthropic) — native MCP-ondersteuning in Claude.ai en Claude Code
- Cursor — MCP-servers voor code-aware AI-assistentie
- VS Code (GitHub Copilot) — MCP-integratie in agent-modus
- Windsurf (Codeium) — MCP-serverondersteuning
- Continue.dev — open-source IDE-assistent met MCP
Populaire MCP-servers
- Filesystem — lees/schrijf lokale bestanden (officieel Anthropic)
- GitHub — repos, PR's, issues, code search
- PostgreSQL / SQLite — database query en schema-exploratie
- Brave Search / Exa — web search zonder API-keys
- Puppeteer / Playwright — browserautomatisering
- Slack / Linear / Notion — integraties voor productiviteitstools
🚀 Aan de slag met MCP
Optie 1: Gebruik bestaande MCP-servers (5 minuten)
De snelste manier om MCP te ervaren is met Claude Desktop en vooraf gebouwde servers. Bewerk je Claude Desktop-config op ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_..." }
}
}
} Optie 2: Bouw een MCP-server (30 minuten)
Officiële SDK's zijn beschikbaar voor TypeScript, Python en Kotlin:
// TypeScript MCP server example
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "my-server", version: "1.0.0" });
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "get_weather",
description: "Get current weather for a city",
inputSchema: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
const { city } = request.params.arguments;
// ... fetch weather data
return { content: [{ type: "text", text: `Weather in ${city}: sunny, 22°C` }] };
});
const transport = new StdioServerTransport();
await server.connect(transport); 🔐 MCP Beveiligingsoverwegingen
De kracht van MCP — AI-modellen toegang geven tot tools, bestanden en services — brengt ook beveiligings risico's mee waar ontwikkelaars tegen moeten ontwerpen.
| Risk | Description | Mitigation |
|---|---|---|
| Prompt-injectie via MCP | Kwaadaardige inhoud in toolresultaten manipuleert de AI | Sanitiseer tooloutput; gebruik aparte reasoning- en action-modellen |
| Overprivileged servers | MCP-server heeft meer permissies dan nodig | Principe van minste privilege; waar mogelijk read-only |
| Confused deputy | AI acteert namens een aanvaller zonder gebruikersbewustzijn | HITL-bevestiging voor destructieve/onomkeerbare acties |
| Server supply chain | Kwaadaardige third-party MCP-server exfiltreert data | Gebruik alleen vertrouwde, geaudite servers; beoordeel servercode |
Voor een diepere duik in AI-beveiligingskwetsbaarheden — inclusief hoe prompt-injectie kan worden gewapend via MCP-toolresultaten — zie onze gids: Prompt Injectie Uitleg.