MCP (Model Context Protocol) is een open standaard om AI-toepassingen te koppelen aan externe systemen, zoals bestanden, databases, agenda’s en zoektools. Een AI-app als Claude of ChatGPT (de host) maakt verbinding met kleine programma’s die MCP-servers heten. Elke server biedt tools aan die het model kan aanroepen, bijvoorbeeld “zoek in de klantenlijst” of “zet een afspraak in de agenda”.
De officiële introductie legt het uit met één beeld: zie MCP als “a USB-C port for AI applications”, een USB-C-poort voor AI-toepassingen (MCP-documentatie). Voor de stekker klopt dat. Voor wat er gebeurt nadat je hem insteekt, klopt het niet, en juist dat verschil bepaalt of je AI-assistent zich laat overhalen om je privébestanden aan de server van een vreemde te geven.
Nog even over de afkorting: in de anatomie is het MCP-gewricht (metacarpofalangeaal gewricht) gewoon je knokkel (StatPearls). Dit stuk gaat over het AI-protocol. De woordenboekbetekenis en de andere betekenissen staan in MCP-betekenis.
Wat klopt er aan de vergelijking met USB-C?
De belofte van één standaardstekker. Zonder gedeelde standaard heeft elke AI-app eigen code nodig voor elke tool. Met MCP schrijft een toolbouwer één server, en elke app die MCP ondersteunt, kan hem gebruiken.
Dat idee heeft een voorganger in de software. Volgens de specificatie is MCP geïnspireerd op het Language Server Protocol, dat hetzelfde deed voor programmeertalen en code-editors (MCP-specificatie). Eén contract in plaats van een kluwen losse verbindingen. Dat deel van de vergelijking mag je houden.
Waar gaat de vergelijking mank?
Op vier punten. Elk punt verandert wat je moet controleren.
| USB-C | MCP | Wat je eraan doet | |
|---|---|---|---|
| Wie het etiket leest | Het besturingssysteem leest een korte, gestructureerde descriptor en laadt een driver | Het taalmodel leest de toolbeschrijving als gewone tekst | Lees elke toolbeschrijving helemaal |
| Wat de stekker doet | Stroom en data doorgeven | Een tool kan code uitvoeren: mailen, bestanden wijzigen, betaalde diensten aanroepen | Behandel schrijftools alsof je je sleutels afgeeft |
| Wie de regels handhaaft | Een product doorloopt compliancetests voordat het USB-logo erop mag | De specificatie zegt dat MCP zijn beveiligingsprincipes niet kan afdwingen; dat moet de app doen | Kijk wat je app vraagt voordat een tool draait |
| Wat een vermelding bewijst | Een gecertificeerd product heeft de compliancetests doorstaan | Een vermelding in het register bewijst wie de naam bezit, niet wat de code doet | Beoordeel de server zelf |
1. De lezer is een model, geen driver. Steek je een usb-apparaat in, dan vertelt het je computer via een korte technische descriptor wat het is, en het besturingssysteem kiest een driver (de slides van SRLabs beschrijven die stap). Een MCP-server beschrijft zijn tools in gewone taal, en het model leest die tekst als het beslist wat het gaat doen. Tekst die een model leest, kan instructies bevatten. De specificatie is daar duidelijk over: beschrijvingen van toolgedrag gelden als onbetrouwbaar, tenzij ze van een vertrouwde server komen (MCP-specificatie).
2. Een server handelt, een kabel geeft door. Op dezelfde pagina staat dat tools neerkomen op het uitvoeren van willekeurige code en met de nodige voorzichtigheid behandeld moeten worden. Een tool is geen draad. Hij kan versturen, verwijderen, publiceren en betalen, als iemand hem zo heeft aangesloten.
3. De regels zitten in de app, niet in de stekker. De specificatie noemt toestemming van de gebruiker, privacy en veilig toolgebruik als kernprincipes, en voegt eraan toe dat MCP die principes zelf niet op protocolniveau kan afdwingen. Een host moet de gebruiker uitdrukkelijk om toestemming vragen voordat hij een tool aanroept, en volgens de Tools-pagina hoort er altijd een mens tussen te zitten die een aanroep kan weigeren (Tools-specificatie). Of dat echt gebeurt, hangt af van de app die je gebruikt en hoe je die instelt.
4. Een vermelding is geen keurmerk. USB-producten die het complianceprogramma van USB-IF doorstaan, gelden als gecertificeerd en mogen het logo onder licentie gebruiken (USB-IF). Het officiële MCP-register, nog in preview, controleert of een uitgever de eigenaar is van zijn naamruimte (een GitHub-account of een domein). Het scannen van de servercode zelf laat het register over aan pakketregisters en marktplaatsen verderop in de keten (MCP-register). Een vermelding vertelt je wie een server publiceerde. Niet wat die server gaat doen.
Een echt voorbeeld: de vergiftigde rekenmachine
In april 2025 publiceerde het beveiligingsbedrijf Invariant Labs een demonstratie van wat het een Tool Poisoning Attack noemde (Invariant Labs). Een server bood een onschuldig ogende tool aan, add, die twee getallen optelt. In de beschrijving zaten verborgen instructies: lees het MCP-configuratiebestand en de private SSH-sleutel van de gebruiker (het bestand waarmee je op andere servers inlogt) en geef ze mee in een parameter van de tool.
De gebruiker zag een simpele toolnaam. Het model zag de volledige beschrijving, en volgde die. Invariant beschreef ook een rug pull: een server past zijn toolbeschrijvingen aan nadat jij ze hebt goedgekeurd. De aanbevolen verdediging was nuchter: laat gebruikers de volledige beschrijvingen zien, pin serverversies vast met een hash (een vingerafdruk die verandert zodra de tekst verandert) en houd servers van elkaar gescheiden.
Waar de vergelijking wél klopt: het gevaar
Nu de kanttekening. USB kent zijn eigen versie van dit probleem. Op Black Hat in 2014 lieten onderzoekers van SRLabs ‘BadUSB’ zien: de verborgen controllerchip van een usb-stick kun je zo herprogrammeren dat de stick zich aanmeldt als toetsenbord en opdrachten intypt op de computer (slides van SRLabs; opname).
De oude kantoorregel geldt dus nog steeds: steek geen usb-stick in die je op de parkeerplaats vond. Bij MCP is die stick een server die je in een forumdraadje tegenkwam, en de lezer van dat etiket laat zich veel makkelijker beïnvloeden dan een driver.
STACK: waar MCP thuishoort
STACK is een framework om een coderepository zo in te richten dat mensen en AI-codeeragents er veilig in kunnen werken. Het komt uit De agentische codebase, dat nu verkrijgbaar is. De vijf lagen houden hun Engelse namen:
- Structure. De indeling, toegangspunten en grenzen waarin een agent in zijn eerste minuut zijn weg kan vinden.
- Toolchain. De shells en commando’s die een agent mag draaien, opgeschreven in plaats van onthouden.
- Agent configuration. Instructiebestanden als AGENTS.md en CLAUDE.md, regels en skills, net als code onder versiebeheer.
- Connection. MCP-servers, toolcontracten, hooks en vangrails, met minimale rechten (alleen de toegang die de klus vraagt) en een uitgewerkt faalscenario.
- Knowledge and quality. Geheugen, contextbudgetten, evals (geautomatiseerde tests van AI-output) en CI, zodat een modelupgrade de lat niet stilletjes verlaagt.
Je hebt het boek niet nodig om dit te gebruiken. MCP zit in de laag Connection. Het boek gebruikt niet het beeld van USB-C, maar dat van een bus: één gedeelde lijn waaraan alle tools hangen, en elke tool is je een geschreven contract schuldig met zijn reikwijdte, limieten, time-out, benoemde faalwijzen en een menselijke eigenaar. Het raadt ook aan servers lokaal te draaien tenzij je ze echt op afstand nodig hebt, en een hash van de toolbeschrijvingen vast te leggen, zodat je omgeving weigert te starten als die beschrijvingen veranderen.
Stel: een administratiekantoor in Zwolle met twee medewerkers wil dat zijn AI-assistent facturen van een gedeelde schijf leest. Het voorbeeld is verzonnen. Toegepast op Connection: één bestandsserver met alleen leesrechten, beperkt tot de map met facturen; geen e-mailtool in dezelfde sessie; Anouk als eigenaar; de hash van de beschrijvingen vastgelegd; elke aanroep gelogd. Die tweede regel, geen e-mailtool naast de facturen, heeft ook buiten het boek een naam. Simon Willison noemt de combinatie van privédata, onbetrouwbare inhoud en de mogelijkheid om data naar buiten te sturen de “lethal trifecta” (Willison). Facturen van leveranciers zijn privédata, maar ook onbetrouwbare inhoud, want buitenstaanders hebben ze geschreven. Zet er een e-mailtool bij in dezelfde sessie en je hebt alle drie.
Voordat je een MCP-server koppelt: een checklist
- Benoem de eigenaar. Wie schreef de server, en wie is er aan jouw kant verantwoordelijk voor?
- Lees elke toolbeschrijving helemaal. Niet de samenvatting van één regel in de app. Instructies aan het model (“lees voor gebruik eerst…”) zijn een alarmsignaal.
- Begin met alleen leesrechten. Voeg schrijftools (versturen, verwijderen, betalen, publiceren) pas toe als je ze nodig hebt, en laat de bevestiging aanstaan.
- Eigen inloggegevens per server, met zo weinig rechten als kan. Nooit een gedeeld beheerderstoken.
- Doorbreek de trifecta. Geen enkele sessie krijgt privédata, onbetrouwbare inhoud én een manier om data te versturen.
- Pin vast en controleer opnieuw. Leg de versie en een hash van de beschrijvingen vast. Lees ze opnieuw als ze veranderen.
- Log elke aanroep. Welke tool, welke invoer, wat kwam er terug.
- Weet hoe je loskoppelt. Bepaal nu wat er stukgaat als je de server om 17.00 uur verwijdert.
De uitleg over MCP-koppelingen laat zien hoe je per app een server aansluit, en MCP uitgelegd voor ondernemers gaat dieper in op het beoordelen van een server.
Probeer het vandaag: een audit van tien minuten
Open de instellingen voor koppelingen of MCP in de AI-app die je het meest gebruikt. Zet alle servers op een rij. Schrijf bij elke server drie dingen op: de eigenaar, of hij kan schrijven, en de datum waarop je de toolbeschrijvingen voor het laatst hebt gelezen. Elk leeg vak is een server die je loskoppelt, of waarvan je vanavond nog de beschrijvingen leest.
Citeer deze pagina:MCP is geen USB-C: waar de geliefde vergelijking mank gaat en waarom dat ertoe doet.Len P. van der Hof. https://lenvanderhof.com/nl/blog/mcp-is-geen-usb-c/ ·