Stacklane heet nu Vantion LabsLees meer

Alle artikelen
AI-agents

10 min leestijd

Wat is een MCP-server? Uitleg en voorbeelden.

Een MCP-server geeft AI-assistenten en AI-agents een vaste manier om een van je systemen te gebruiken. Hoe een server werkt, waarvoor bedrijven ze gebruiken, het verschil met een API en wat je beveiligt voordat je er een koppelt.

Geschreven door Ishak KahrimanovicOprichter, Vantion Labs

Wat is een MCP-server?

Een MCP-server is een programma dat AI-toepassingen een standaardmanier geeft om een van je systemen te gebruiken. MCP staat voor Model Context Protocol, een open standaard die Anthropic in 2024 introduceerde. De server zit om een CRM, ERP, documentopslag of product-API heen en vertelt de AI-toepassing welke acties ze kan uitvoeren en welke data ze kan lezen.

Elke AI-toepassing die het protocol ondersteunt, kan daarna verbinding maken: Claude, ChatGPT of een agent die je eigen team bouwt. Of je organisatie een MCP-server nodig heeft, hangt vooral af van hoeveel AI-tools bij dezelfde systemen moeten kunnen.

Hoe MCP werkt

MCP kent drie rollen. De host is de AI-toepassing die iemand gebruikt, zoals een assistent. In de host houdt een MCP-client de verbinding met één server. De server zit om één systeem heen en vertelt de client wat hij aanbiedt. Client en server wisselen JSON-RPC-berichten uit, een eenvoudig formaat voor verzoeken en antwoorden tussen programma's.

Het model bereikt je systemen alleen via die keten: het vraagt om een tool, de client stuurt het verzoek door en de server roept het systeem aan.

Wat een server aanbiedt: tools, resources en prompts

  • Tools zijn acties met getypeerde input, zoals orders zoeken of een ticket aanmaken. Het model bepaalt wanneer het een tool aanroept.
  • Resources zijn gegevens die de toepassing kan lezen, zoals een bestand, een record of een databaseschema.
  • Prompts zijn kant-en-klare instructies voor veelvoorkomende taken, zoals een account samenvatten. Een gebruiker kan er een kiezen.

Dit is een tooldefinitie ter illustratie, zoals een server die aan de client doorgeeft. Het model leest de beschrijving om te bepalen wanneer de tool past, en het inputschema legt vast hoe een geldige aanroep eruitziet:

JSON
{
  "name": "search_orders",
  "description": "Search one customer's orders by status. Read-only. Returns at most 20 orders.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "customer_id": { "type": "string", "description": "Customer id from the CRM" },
      "status": { "type": "string", "enum": ["open", "shipped", "cancelled"] }
    },
    "required": ["customer_id"]
  }
}

Lokale en remote servers

Een lokale server draait op dezelfde computer als de host. De host start de server en communiceert ermee via standaardinvoer en standaarduitvoer (stdio). Een remote server draait op infrastructuur die jij of een leverancier host, en clients bereiken hem via HTTP. Bedrijfssystemen krijgen meestal een remote server, die veel gebruikers delen en die je op één plek beveiligt.

Eén uitwisseling, stap voor stap

  1. 01Als de assistent verbinding maakt, vraagt de client de server welke tools hij aanbiedt (tools/list). De client geeft de namen, beschrijvingen en schema's door aan het model.
  2. 02Een gebruiker vraagt: "Welke orders van deze klant staan nog open?"
  3. 03Het model kiest search_orders en vult het klant-id en de status open in.
  4. 04De client stuurt de aanroep (tools/call). De server controleert wie de gebruiker is en of die de orders van deze klant mag zien.
  5. 05De server roept de API van het ordersysteem aan en past zijn eigen limieten toe.
  6. 06De server geeft het resultaat terug, en het model gebruikt dat om de gebruiker te antwoorden.

Waarvoor bedrijven MCP gebruiken

Bedrijven gebruiken MCP-servers op twee manieren: zodat de AI-tools van hun medewerkers met interne systemen werken, en zodat de agents van hun klanten met hun product werken. De eerste drie voorbeelden hieronder zijn ter illustratie en beschrijven typische gevallen van intern gebruik. Het vierde is Moneyline, een product dat we bouwden en dat live draait.

Alleen opzoeken in een ERP of CRM

Accountmanagers vragen hun assistent bijvoorbeeld naar een klant voordat ze die bellen. Een server bovenop het ERP en CRM biedt leestools zoals get_customer en list_open_orders, beperkt tot de accounts die die gebruiker mag zien. De server schrijft niets weg, en daarom is dit een goede eerste server.

Zoeken in een documentsysteem

Een typisch geval: mensen hebben vragen over contracten en procedures die in een documentmanagementsysteem staan. De server biedt een tool search_documents die passende passages teruggeeft, met een link naar de bron. De rechten van het documentsysteem blijven gelden, dus een zoekopdracht geeft alleen terug wat de gebruiker al kon openen.

Tickets aanmaken en bijwerken, met goedkeuring

Een IT-servicedesk laat bijvoorbeeld een agent de triage van binnenkomende verzoeken doen. De server biedt create_ticket en add_comment, met grenzen in de code van de tools: een vaste lijst categorieën, en er bestaat geen tool om tickets te sluiten. De agent bereidt elke wijziging voor, een medewerker van de servicedesk keurt die goed en de server logt wie wat heeft goedgekeurd.

Je product als MCP-server: Moneyline

Bij een product werkt het andersom: je publiceert een MCP-server, zodat de AI-tools van klanten met je product kunnen werken. Moneyline, dat we bouwden, is een open-source API die financiële documenten binnenhaalt, classificeert, uitleest en verrijkt. Het draait live op moneyline.co (opent in een nieuw tabblad). Moneyline heeft een eigen MCP-server die deze functies aanbiedt als tools die een agent kan aanroepen.

De API, de SDK's, het dashboard en de MCP-server gebruiken allemaal dezelfde services eronder. Een ontwikkelaar die een endpoint aanroept, krijgt daardoor dezelfde uitgelezen gegevens als een agent die een tool aanroept.

MCP of API: wat is het verschil?

Een API-koppeling is code die een ontwikkelaar schrijft, zodat het ene systeem het andere op een vaste manier aanroept. Een MCP-server beschrijft de acties van een systeem, zodat AI-toepassingen ze kunnen vinden en een model kan kiezen wanneer het ze gebruikt. De server roept meestal de bestaande API aan om het werk te doen. De API blijft dus bestaan en krijgt er een laag voor AI-tools bij.

AspectAPI-koppelingMCP-server
Wie het aanroeptCode die een ontwikkelaar voor één koppeling schreefEen AI-toepassing namens een gebruiker, waarbij een model de aanroep kiest
Hoe acties beschreven zijnDocumentatie voor ontwikkelaars: endpoints, velden, foutcodesToolnamen, beschrijvingen in gewone taal en inputschema's, geschreven voor een model
Acties vindenEen ontwikkelaar leest de documentatie voordat hij code schrijftDe client vraagt de server bij elke verbinding om zijn tools
Typisch gebruikVaste datastromen, zoals een betaalde order die een factuur wordtWisselende verzoeken van assistenten en agents, zoals vragen over een klant
Wat het niet vervangtDe koppelcode die elke AI-toepassing nodig zou hebben om de API te gebruikenDe API eronder, de bedrijfsregels daarin of geplande koppelingen

De twee bestaan naast elkaar: een nachtelijke synchronisatie blijft de API van het ordersysteem gebruiken, en de MCP-server roept dezelfde API aan als een assistent een order nodig heeft. Ons artikel over de API-koppeling behandelt die laag.

Beveiliging van een MCP-server: wat je regelt

Een MCP-server beveiligen betekent bepalen wie kan inloggen, wat elke gebruiker via de server mag doen, welke acties op goedkeuring door een mens wachten en wat er wordt gelogd. Het betekent ook dat je alles wat een tool teruggeeft als onbetrouwbare input behandelt, en dat je elke server van een derde partij controleert voordat iemand die aan bedrijfsdata koppelt.

Inloggen en scopes per gebruiker

Voor remote servers legt de MCP-specificatie autorisatie op basis van OAuth vast. De gebruiker logt in via je identity provider, de AI-toepassing krijgt een token voor die gebruiker en de server controleert dat token bij elke aanroep. Vermijd een gedeeld account met ruime rechten, want elke gebruiker van de assistent zou die rechten erven.

Geef elke tool een scope, een afgebakend recht zoals crm:read of tickets:write, en controleer die per gebruiker. De assistent van een verkoper ziet dan alleen de accounts van die verkoper. Een lokale server draait meestal met een API-sleutel die op de computer staat. Geef die sleutel zo min mogelijk rechten.

Standaard alleen lezen, goedkeuring voor schrijfacties

Begin met leestools en voeg schrijftools een voor een toe, elk zo beperkt als de taak toelaat, zoals add_comment(ticket_id, text). Met algemene tools zoals run_query kan het model veel meer dan een taak ooit nodig heeft. Zet grenzen in de code van de server, waar geen prompt ze kan veranderen: maximumbedragen, toegestane statussen en welke records een tool mag aanraken.

Acties die moeilijk terug te draaien zijn of je organisatie verlaten, zoals betalingen, e-mails aan klanten en wijzigingen in records, hebben goedkeuring nodig van een aangewezen persoon. Die goedkeuring leg je vast bij de actie. Sommige AI-toepassingen vragen gebruikers om toolaanroepen te bevestigen. Wie elke aanroep bevestigt, leest na een tijdje vaak niet meer wat er staat, dus houd deze goedkeuring in je eigen systeem. Ons artikel over human-in-the-loop AI-agents gaat in op goedkeuringsmomenten en risiconiveaus.

Log elke toolaanroep

Leg bij elke aanroep de gebruiker, de tool, de argumenten, het resultaat en het tijdstip vast, en stuur dat naar je bestaande monitoring. Met dat logboek beantwoord je maanden later de vraag "wie heeft dit record gewijzigd, en via welke assistent?" Stel rate limits in per gebruiker en per tool, zodat een agent die in een lus blijft hangen het systeem achter de server niet kan overspoelen.

Behandel wat een tool teruggeeft als onbetrouwbare input

Alles wat een tool teruggeeft, komt als tekst bij het model: de inhoud van een e-mail, een ticket, een opgehaalde webpagina. Die tekst kan instructies voor het model bevatten, zoals een ticket dat de assistent opdraagt om alle klantrecords te exporteren. Zo'n verstopte instructie heet prompt injection. Modellen kunnen jouw instructies niet betrouwbaar onderscheiden van instructies die in data verstopt zitten.

  • Controleer rechten in de server, zodat een verstopte instructie alleen kan bereiken wat de gebruiker toch al kon bereiken.
  • Leest een sessie onbetrouwbare content, zet dan goedkeuring op tools die data naar buiten sturen, zoals e-mail.

Controleer servers van derden

Een server die iemand anders schreef, geeft diens code een route naar je data. Controleer dit voordat iemand er een koppelt:

  • Wie de server publiceert. Kies bij voorkeur de server van de leverancier van het systeem zelf.
  • Wat er in de beschrijvingen van de tools staat. Het model leest ze, dus een kwaadwillende server kan daar instructies in verstoppen.
  • Waar een lokale server bij kan. Hij draait als programma op de computer van de gebruiker, met de bestanden en netwerktoegang van die gebruiker.
  • Waar een remote server je data naartoe stuurt, wie hem host en in welke regio.
  • Wat er verandert bij een update. Zet de versie vast en controleer wijzigingen in de lijst met tools voordat je een update uitrolt.

Zelf bouwen, de server van de leverancier gebruiken of overslaan

Gebruik de MCP-server van de leverancier als je systeem een gangbaar product is en de leverancier een server publiceert die door je controles komt. Bouw er zelf een als meerdere AI-tools of teams dezelfde interne systemen nodig hebben, of als je wilt dat de agents van klanten je product gebruiken. Roept één toepassing één API op een vaste manier aan, dan is een directe koppeling eenvoudiger.

Wanneer de server van de leverancier genoeg is

De server van een leverancier is genoeg als het systeem een standaard SaaS-product is, de leverancier de server onderhoudt en de tools en scopes dekken wat je medewerkers nodig hebben.

Wanneer je zelf een server bouwt

  • Meerdere AI-tools of teams hebben dezelfde interne systemen nodig. Je bouwt de server één keer, en Claude, ChatGPT en je eigen agents delen de tools, scopes en logs.
  • Het systeem is zelfgebouwde of oudere software zonder eigen MCP-server.
  • Je hebt regels nodig die een algemene server niet kan kennen: je goedkeuringsstappen, scopes per rol, grenzen aan bedragen of records.
  • Je wilt dat de agents van klanten je product gebruiken, zoals bij Moneyline.

Onze MCP-starterkit, open source op GitHub, laat de structuur zien waarmee we beginnen: inloggen via OAuth, een scope per tool, getypeerde input, rate limits en een auditlog van elke aanroep. Wil je de server laten bouwen en beheren, lees dan hoe we MCP-servers op maat voor interne systemen en producten bouwen.

Wanneer een directe koppeling eenvoudiger is

Roept één toepassing één API aan, zoals bij een nachtelijke synchronisatie, of schrijft je team een agent in code die maar twee functies nodig heeft? Leg die aanroepen dan vast in die toepassing. Een MCP-server is nog een onderdeel om te beveiligen en te onderhouden. Voeg er een toe als een tweede AI-tool dezelfde toegang nodig heeft.

Vragen over MCP

Is MCP alleen voor Claude?

Nee. Anthropic introduceerde het Model Context Protocol als open standaard die elke AI-toepassing kan implementeren. ChatGPT kan verbinding maken met MCP-servers, en agents die je team bouwt, kunnen verbinden via de open-source SDK's van het protocol. Toepassingen verschillen in welke delen van het protocol ze ondersteunen, dus controleer dat voor de toepassing die je gebruikt.

Vervangt een MCP-server een API?

Nee. Een MCP-server zit meestal bovenop de bestaande API van een systeem en roept die aan om het werk te doen. De API blijft je andere koppelingen bedienen, en de MCP-server beschrijft een selectie van acties die AI-toepassingen kunnen vinden en gebruiken.

Is een MCP-server veilig?

Een MCP-server is veilig als de beveiliging in het ontwerp zit. Het protocol legt autorisatie op basis van OAuth vast voor remote servers. Scopes per gebruiker, standaard alleen leesrechten, goedkeuring voor schrijfacties, een log van elke toolaanroep en controle van servers van derden zijn de taak van wie de server bouwt en beheert.

Heb ik een MCP-server nodig voor AI-agents?

Niet altijd. Een agent heeft tools nodig, en als één agent met een paar systemen werkt, kun je die tools in zijn eigen code vastleggen. Een MCP-server loont als meerdere agents of assistenten, zoals Claude of ChatGPT, dezelfde systemen nodig hebben. In ons artikel over wat een AI-agent is lees je de rest.

Alle artikelen

Bespreek één proces met de oprichter