AI-systemen Onderzoeksartikel

MCP is geen USB-C: waar de geliefde vergelijking mank gaat en waarom dat ertoe doet

De stekker is standaard. Wat het model door die stekker leest, is dat niet.

Bureau in een hotelkamer, 's nachts, met een universele reisstekker in het stopcontact en een kleine usb-stick zonder label onder de lamp; door het raam valt neonlicht van de stad
Elke stekker past. Dat was nooit de vraag.

Direct antwoord

MCP (Model Context Protocol) is een open standaard waarmee AI-toepassingen via één gemeenschappelijke aansluiting verbinding maken met externe tools en data. De officiële introductie vergelijkt MCP met een USB-C-poort, en voor de stekker klopt dat. Op vier punten gaat het beeld mank: het model leest elke toolbeschrijving als tekst en kan zich erdoor laten sturen, een server kan handelen in plaats van alleen data doorgeven, de rechten liggen bij de app en niet bij het protocol, en een registervermelding bewijst wie een server publiceerde, niet dat hij veilig is.

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-CMCPWat je eraan doet
Wie het etiket leestHet besturingssysteem leest een korte, gestructureerde descriptor en laadt een driverHet taalmodel leest de toolbeschrijving als gewone tekstLees elke toolbeschrijving helemaal
Wat de stekker doetStroom en data doorgevenEen tool kan code uitvoeren: mailen, bestanden wijzigen, betaalde diensten aanroepenBehandel schrijftools alsof je je sleutels afgeeft
Wie de regels handhaaftEen product doorloopt compliancetests voordat het USB-logo erop magDe specificatie zegt dat MCP zijn beveiligingsprincipes niet kan afdwingen; dat moet de app doenKijk wat je app vraagt voordat een tool draait
Wat een vermelding bewijstEen gecertificeerd product heeft de compliancetests doorstaanEen vermelding in het register bewijst wie de naam bezit, niet wat de code doetBeoordeel 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:

  1. Structure. De indeling, toegangspunten en grenzen waarin een agent in zijn eerste minuut zijn weg kan vinden.
  2. Toolchain. De shells en commando’s die een agent mag draaien, opgeschreven in plaats van onthouden.
  3. Agent configuration. Instructiebestanden als AGENTS.md en CLAUDE.md, regels en skills, net als code onder versiebeheer.
  4. Connection. MCP-servers, toolcontracten, hooks en vangrails, met minimale rechten (alleen de toegang die de klus vraagt) en een uitgewerkt faalscenario.
  5. 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

  1. Benoem de eigenaar. Wie schreef de server, en wie is er aan jouw kant verantwoordelijk voor?
  2. Lees elke toolbeschrijving helemaal. Niet de samenvatting van één regel in de app. Instructies aan het model (“lees voor gebruik eerst…”) zijn een alarmsignaal.
  3. Begin met alleen leesrechten. Voeg schrijftools (versturen, verwijderen, betalen, publiceren) pas toe als je ze nodig hebt, en laat de bevestiging aanstaan.
  4. Eigen inloggegevens per server, met zo weinig rechten als kan. Nooit een gedeeld beheerderstoken.
  5. Doorbreek de trifecta. Geen enkele sessie krijgt privédata, onbetrouwbare inhoud én een manier om data te versturen.
  6. Pin vast en controleer opnieuw. Leg de versie en een hash van de beschrijvingen vast. Lees ze opnieuw als ze veranderen.
  7. Log elke aanroep. Welke tool, welke invoer, wat kwam er terug.
  8. 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/ ·

Begrippen

Bronnen

  1. What is the Model Context Protocol (MCP)? · Model Context Protocol project
  2. Specification, version 2026-07-28 (Security and Trust & Safety) · Model Context Protocol project
  3. Specification, version 2026-07-28: Tools · Model Context Protocol project
  4. The MCP Registry (Trust and Security) · Model Context Protocol project
  5. MCP Security Notification: Tool Poisoning Attacks · Invariant Labs (Luca Beurer-Kellner en Marc Fischer)
  6. The lethal trifecta for AI agents: private data, untrusted content, and external communication · Simon Willison
  7. Compliance · USB Implementers Forum (USB-IF)
  8. BadUSB: On accessories that turn evil (slides) · SRLabs (Karsten Nohl, Sascha Krißler, Jakob Lell)
  9. BadUSB: On Accessories that Turn Evil (opname Black Hat, 2014) · Black Hat, via Internet Archive
  10. Anatomy, Shoulder and Upper Limb, Hand Metacarpal Phalangeal Joint · StatPearls (NCBI Bookshelf)
  11. STACK (framework)
  12. De agentische codebase
  13. MCP-betekenis

Verder lezen

Markdown voor LLMs