Naar hoofdinhoud
TIEMAN.IT

Claude koppelen aan je eigen systemen via MCP

Model Context Protocol is de open standaard van Anthropic waarmee Claude rechtstreeks praat met jouw databases, APIs en interne tools. Ik bouw de MCP server, ik regel de auth, jij stelt vragen aan Claude en krijgt antwoorden uit je eigen systemen.

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.

3
Tools in de MCP server
1 TMS
Externe systemen
Nul
Data buiten het netwerk

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.

MCP Server
Op aanvraag
TypeScript of Python MCP server voor één systeem. Tool-schema, validatie, error handling en Docker deployment inbegrepen.
MCP + Auth
Op aanvraag
MCP server met OAuth 2.1 of API-key authenticatie. Geschikt voor servers die via een netwerk bereikbaar zijn.
Multi-tool MCP
Op aanvraag
Meerdere tools in één server, verbonden aan meerdere systemen. Read-only standaard, write-acties op verzoek met extra validatielaag.

Plan een kort gesprek. Ik kijk naar jouw situatie en kom met een concreet voorstel.

Lees verder

-- Veelgestelde vragen

Heb je een vraag?

De MCP-spec is open en model-agnostisch. Maar in de praktijk is Claude via Claude Desktop en Claude Code de meest complete MCP-client op dit moment. Andere clients bestaan, maar zijn minder volwassen. Als je nu met MCP wilt werken, is Claude de logische keuze.
Ja, dat is een van de kernvoordelen van MCP. De server draait als een eigen proces op jouw infra. Er is geen verbinding nodig met een extern cloud-platform. Data blijft in jouw netwerk. Claude zelf draait uiteraard via de Anthropic API, maar de tool-calls gaan van Claude naar jouw eigen server.
Elke MCP server die ik bouw heeft een expliciete allowlist van wat er mogelijk is. SQL-servers werken read-only met een allowlist van tabellen. API-wrappers valideren alle parameters via Zod-schema's voordat er een request uitgaat. Logging van alle tool-calls is standaard ingebouwd. Voor servers die via een netwerk bereikbaar zijn is OAuth 2.1 met PKCE de standaard auth-methode.
Ja. Voor MCP servers die via een netwerk aangesproken worden implementeer ik OAuth 2.1 met PKCE. Dat is de aanbevolen auth-methode in de MCP-spec voor network-facing servers. Voor lokale servers is een API-key via environment variables de simpelste en veilige oplossing.
Niet direct, en dat is bewust. Een MCP server is een bewuste selectie van wat Claude mag doen. Je wilt niet dat Claude toegang heeft tot elke endpoint van jouw API. Ik bouw een wrapper die precies de tools exposed die nodig zijn, met validatie en foutafhandeling. Dat is veiliger dan een directe pass-through.

Klaar om Claude te koppelen aan je eigen systemen?

Vertel me over jouw systeem en wat je wilt dat Claude ermee kan doen. Ik kijk of een MCP-integratie past en geef een eerlijk beeld van de scope.