Wat is Model Context Protocol?
Model Context Protocol, afgekort MCP, is een open standaard die Anthropic in 2024 heeft gepubliceerd. Het beschrijft hoe een AI-model zoals Claude gestructureerd kan communiceren met externe tools en databronnen. Claude stuurt een tool-call met parameters, de MCP server voert die uit en geeft het resultaat terug. Zo kan Claude een SQL-query uitvoeren, een REST-endpoint aanroepen of een bestand lezen zonder dat de gebruiker de ruwe data zelf hoeft aan te leveren.
Het protocol loopt via een apart server-proces. Die server draait lokaal naast Claude Desktop, of op een machine in je eigen netwerk, afhankelijk van de architectuur. Claude praat met de server via een gestandaardiseerde JSON-RPC interface over stdin/stdout of over een SSE-verbinding. De MCP server vertaalt de tool-calls naar acties op jouw systeem.
MCP is geen chatbot-plugin en geen SaaS-koppeling. Het is een low-level protocol dat volledige controle geeft over wat Claude kan doen en wat niet. De server definieert het schema van beschikbare tools: namen, parameters en beschrijvingen. Claude kiest zelf welke tool het meest geschikt is op basis van die schema's en de vraag van de gebruiker.
Hoe verschilt MCP van function calling en ChatGPT-plugins?
OpenAI's function calling en ChatGPT-plugins werken op een vergelijkbare manier, maar er zijn belangrijke architectuurverschillen:
- ▸MCP is een open standaard. De spec is gepubliceerd op GitHub en elke partij kan een client of server implementeren. Er is geen vendor lock-in naar een specifiek cloud-platform.
- ▸MCP servers draaien als eigen processen. Dat betekent dat de server on-premise kan draaien, achter een firewall, zonder dat er data naar een externe dienst gaat.
- ▸Authenticatie is een eerste klas concept in de MCP-spec. OAuth 2.1 is de aanbevolen flow voor servers die via het netwerk bereikbaar zijn. Voor lokale servers volstaat een API-key via environment variables.
- ▸Claude Code en Claude Desktop zijn beide MCP-clients. Dat betekent dat een MCP server die ik bouw werkt in Claude Desktop voor eindgebruikers en in Claude Code voor ontwikkelaars.
- ▸De tool-beschrijvingen zijn machine-readable schema's. Claude gebruikt die schema's om zelf te redeneren over welke tool het beste past bij een vraag. Dat maakt MCP integraties betrouwbaarder dan hard-coded prompts.
ChatGPT-plugins zijn intussen vervangen door GPT Actions, maar die werken alleen binnen het OpenAI-platform. MCP-servers zijn model-agnostisch in de spec, al is Claude momenteel de meest complete MCP-client.
Wat ik bouw met MCP
De scope varieert per project. Dit zijn de meest voorkomende MCP-server types die ik implementeer:
- ▸Database-query MCP servers: Claude stelt vragen in natuurlijke taal, de server vertaalt die naar SQL en geeft het resultaat terug. Read-only queries, met een expliciete allowlist van toegestane tabellen en kolommen.
- ▸REST API MCP servers: een wrapper rond jouw interne of externe API. Claude kan endpoints aanroepen, parameters invullen en de response interpreteren. Nuttiger dan documentatie lezen voor ontwikkelaars die intern tools gebruiken.
- ▸File system MCP servers: gecontroleerde lees- en schrijftoegang tot bestanden op een specifieke locatie. Handig voor teams die Claude willen laten werken met lokale projectbestanden.
- ▸Internal tool MCP servers: koppeling aan bedrijfssoftware die geen publieke API heeft. Via een headless-scraper of interne SDK gebouwd, met rate limiting en foutafhandeling.
- ▸Knowledge base MCP servers: vectordatabase of document store als tool. Claude zoekt relevante passages en citeert de bron. Geschikt als alternatief voor RAG-pipelines die je volledig zelf wilt beheren.
Per MCP server definieer ik het tool-schema, de validatielaag, de error handling en de logging. De server is volledig stateless of heeft een minimale state: het protocol staat dat toe en het maakt deployment eenvoudiger.
Mijn stack en deployment
Ik schrijf MCP servers primair in TypeScript met de officiële MCP TypeScript SDK van Anthropic. Voor data-science of intern gebruik soms in Python met de Python SDK. De keuze hangt af van wat het beste aansluit bij jouw bestaande technologie.
- ▸TypeScript SDK: type-safe tool-definitie, automatische parameter-validatie via Zod-schema's, en een sterke developer experience. Werkt goed voor REST API wrappers en database-koppelingen.
- ▸Python SDK: handig als jouw interne tooling al in Python is geschreven of als je werkt met data-science libraries. Dezelfde MCP-spec, andere runtime.
- ▸Docker deployment: de MCP server wordt verpakt in een Docker container. Zo is de omgeving reproduceerbaar en kun je de server lokaal testen voordat die naar productie gaat.
- ▸Auth via OAuth 2.1 of API-key: voor servers die via het netwerk bereikbaar zijn gebruik ik OAuth 2.1 met PKCE. Voor lokale servers is een API-key via een .env file de simpelste oplossing.
- ▸Transport layer: stdio voor lokale servers, SSE of HTTP voor servers die vanuit een netwerk aangesproken worden. De keuze hangt af van het client-type.
Ik lever de server als een volledig gedocumenteerd project: README met setup-instructies, schema-documentatie voor elke tool, en een configuratiebestand dat recht in de Claude Desktop config gaat.
Concrete use cases
Dit zijn scenario's waar MCP-integraties direct waarde toevoegen:
- ▸Claude Desktop verbonden met jouw interne database: medewerkers stellen vragen als 'hoeveel open orders hebben we vandaag?' en krijgen een antwoord direct uit het systeem, zonder een rapport te hoeven exporteren.
- ▸Claude Code verbonden met interne tooling: ontwikkelaars kunnen via Claude Code commando's uitvoeren op interne systemen, documentatie opvragen of deploys starten, zonder van IDE te wisselen.
- ▸In-house support assistant: Claude gekoppeld aan een kennisbasis van producten, procedures of FAQ. Medewerkers vragen in gewone taal, Claude zoekt de relevante passage en geeft een antwoord met bronvermelding.
- ▸Autonome rapportage: Claude vraagt data op via een MCP server, aggregeert die en schrijft een rapport in de gewenste opmaak. Periodiek te draaien via een scheduler.
- ▸Ontwikkelomgeving met interne API: developers die willen experimenteren met jouw interne API zonder de documentatie constant open te hebben. Claude begrijpt de tool-schema's en suggereert de juiste endpoints.
Het gemeenschappelijke patroon is dat Claude als interface fungeert voor systemen die normaal gesproken een aparte frontend of query-tool vereisen. Dat verlaagt de drempel voor technische en niet-technische gebruikers.
-- Klant-casus
Logistieke partner: directe orderstatus via Claude
Een logistieke partij wilde dat medewerkers in Claude Desktop vragen konden stellen over de status van specifieke zendingen. Het TMS (Transport Management System) had een interne REST API maar geen moderne gebruikersinterface voor ad-hoc queries.
Ik bouwde een TypeScript MCP server die de interne REST API van het TMS aanroept. De server exposed drie tools: een tool voor orderzoekacties op basis van ordernummer of klant, een tool voor statushistorie van een zending, en een tool voor verwachte levertijden. Auth liep via een API-key die in de Claude Desktop config staat als environment variable.
Medewerkers stellen nu vragen als 'wat is de status van order 4821?' en Claude haalt het antwoord direct uit het TMS. De server draait on-premise, geen data verlaat het eigen netwerk. Onderhoud is minimaal: de TMS API is stabiel en het tool-schema verandert alleen als er nieuwe endpoints bijkomen.
Wat ik niet doe
Er zijn grenzen aan wat ik bouw, en die zijn bewust:
- ▸Geen MCP servers zonder security-review. Een MCP server die SQL queries uitvoert zonder een allowlist of parameterisering is een directe aanval-vector. Elke server die ik bouw heeft expliciete grenzen op wat er mogelijk is.
- ▸Geen publieke MCP endpoints zonder rate-limiting en authenticatie. Een MCP server die van buiten het netwerk bereikbaar is zonder auth is geen MCP-server, dat is een open API. Dat bouw ik niet.
- ▸Geen MCP integraties zonder een duidelijke business case. Als een simpele Zapier-workflow of een directe API-integratie de vraag beter oplost, zeg ik dat.
- ▸Geen write-acties naar productiedatabases zonder expliciete bevestigingsstap. Read-only is de standaard. Write-acties vereisen een tool-schema met confirmation-parameter en logging.
- ▸Geen MCP servers voor systemen waar ik geen toegang tot heb of krijg. Ik heb de API-documentatie of directe toegang tot het systeem nodig om een goede server te bouwen.
Security is geen afterthought bij MCP. Het protocol geeft Claude directe toegang tot systemen, en dat vereist dat elke tool-definitie goed doordacht is.
Wat kost een MCP-integratie?
De scope bepaalt de prijs. Een enkelvoudige MCP server met twee tools voor een bestaande REST API is minder werk dan een database-koppeling met OAuth, allowlist-beheer en logging naar een centrale plek. Ik geef na een kort gesprek een eerlijk voorstel.
Plan een kort gesprek. Ik kijk naar jouw situatie en kom met een concreet voorstel.