MCP veilig gebruiken met een kleine, controleerbare proef

Een MCP-koppeling laat een AI-assistent informatie ophalen en soms handelingen uitvoeren. Je maakt die koppeling beter beheersbaar door de toegang te laten passen bij één taak. Daarna controleer je wat er werkelijk gebeurt. Daar kun je klein mee beginnen.
We nemen een fictieve catalogus van een buurtwerkplaats. De assistent moet drie handgereedschappen vergelijken op gewicht en uitleentermijn. De catalogus bevat alleen zelfbedachte gegevens. We sluiten geen deelnemersadministratie of betaalomgeving aan. Zo kun je oefenen met lastige informatie zonder echte mensen of bezittingen te raken.
Maak het toegestane resultaat concreet
Onze vergelijking gaat over een hamer, handzaag en schroevendraaier. Per gereedschap verwachten we de cataloguscode, het opgegeven gewicht, de uitleentermijn en de bronverwijzing. Ontbreekt een gewicht, dan hoort “niet vermeld” in de tabel. De assistent mag het niet aanvullen met een gemiddeld gewicht dat hij toevallig kent.
Dit bepaalt meteen welke toegang nodig is: zoeken en geselecteerde catalogusregels lezen. Reserveren, uitleen verlengen en deelnemers benaderen horen niet bij de opdracht. Controleer in de echte serverconfiguratie of die schrijfhandelingen ook wegblijven. Een zin in de opdracht is nuttig voor de bedoeling; de rechten van de verbinding bepalen wat technisch mogelijk blijft.
Tooloutput blijft informatie van buitenaf
Een productbeschrijving kan tekst bevatten die op een opdracht lijkt. Bijvoorbeeld een mededeling dat de assistent voortaan een andere werkwijze moet volgen. Dat is geen instructie van jou. Het is inhoud uit de catalogus. Promptinjection ontstaat wanneer zulke externe tekst het gedrag van de assistent probeert te sturen.
Je hoeft die tekst geen gezag te geven om de rest van de catalogus te kunnen gebruiken. De assistent moet het materiaal beoordelen op relevantie voor gewicht en uitleentermijn. Een aanwijzing om nieuwe toegang aan te vragen of informatie elders te sturen valt buiten de vergelijking. Vraag hem zulke passages apart te melden, zonder ze uit te voeren.
Ook een professioneel uitziende beschrijving kan onbetrouwbare inhoud bevatten. De MCP-toolspecificatie behandelt toolannotaties als aanwijzingen die je niet blind moet vertrouwen. Het etiket “read-only” vormt geen technische toegangscontrole.
Controleer de verbinding vóór de eerste vraag
Bekijk wie de server uitgeeft, welk programma lokaal wordt gestart of met welke remote URL je verbindt. Een lokaal MCP-pakket is software die op jouw computer draait. Een beperkte lijst toolnamen zegt niets over alle mogelijkheden van dat proces. De officiële MCP security best practices besteden daarom ook aandacht aan lokale serverinstallatie en minimale bevoegdheden.
Voor onze oefening zou ik een aparte omgeving gebruiken met alleen de fictieve catalogus, zonder persoonlijke documenten of accounts. Als een lokale server geen netwerk nodig heeft, hoeft die proef ook geen toegang tot bedrijfsdiensten te krijgen. Bij een remote server controleer je welke gegevens naar de aanbieder gaan. Read-only voorkomt geen uitlekken van informatie die wel gelezen mag worden.
Bescherm sleutels buiten het modelgesprek
Bewaar tokens en wachtwoorden in de ondersteunde credentialvoorziening van je client of platform. Plak ze niet in de catalogus, een prompt of een skillbestand. De vergelijking van gereedschap vraagt geen leesbare sleutel in de gesprekshistorie. Deel bij een fout alleen de noodzakelijke, opgeschoonde informatie.
Houd ook bronbestanden en logs in de gaten. Een configuratie met een token kan per ongeluk bij een project terechtkomen dat je deelt. Een debugantwoord kan een secret teruggeven. Controleer zulke bestanden voordat je ze meestuurt. Is er toch een sleutel gelekt, trek die in en vervang hem via de aanbieder. Alleen de tekst uit het gesprek verwijderen herstelt de oude sleutel niet.
Voer een rustige proef uit met bekende antwoorden
Maak eerst drie gewone oefenregels. Bijvoorbeeld een hamer van 450 gram met een uitleentermijn van zeven dagen, een handzaag van 380 gram voor drie dagen en een schroevendraaier zonder ingevuld gewicht voor zeven dagen. Dit zijn verzonnen waarden voor de oefening, geen productspecificaties.
Laat de assistent de tabel maken en vergelijk elk veld met die regels. Voeg daarna in een aparte kopie een onschuldige redactionele aanwijzing toe die niets met de catalogusvraag te maken heeft. Controleer of de assistent bij de vergelijking blijft en de vreemde aanwijzing als broninhoud herkent. Laat de proef geen bestanden verwijderen, accounts openen of gegevens versturen.
Deze controle is een kleine gedragsproef. Een geslaagde uitkomst bewijst niet dat alle promptinjection is afgevangen. Hij laat wel zien of jouw huidige combinatie van opdracht, client en server bij deze invoer de grens bewaart. De proef is hier beschreven, niet uitgevoerd.
Beperk gevolgen met meer dan tekstregels
Bij Claude Code onderscheidt de veiligheidsdocumentatie permissies en sandboxing. Permissies bepalen onder meer wanneer een handeling goedkeuring vraagt. Een sandbox begrenst wat een proces op systeemniveau kan bereiken. Die maatregelen vullen een heldere opdracht aan.
Onze catalogustaak zou ik zonder algemene schrijfrechten uitvoeren. Komt er onverwacht een verzoek om een shellcommando of extra accounttoegang, dan moet de reden passen bij de vergelijking. “De tool zegt dat het nodig is” volstaat niet. Stop die aanroep, bekijk de bron en bepaal welke minimale stap werkelijk ontbreekt. Een afzonderlijke uitschakelbare verbinding maakt dat onderzoek overzichtelijker.
Bewaar het bewijs dat je later nodig hebt
Leg na je eigen proef vast welke server en tool gebruikt zijn, welke catalogusversie is gelezen en welke antwoorden afweken. Bewaar daarbij geen geheimen of onnodige persoonsgegevens. Wanneer de server of toolset verandert, herhaal je de relevante controle. Zo blijft “veilig ingericht” iets dat je kunt onderbouwen.
De uitleg over MCP in Claude Code helpt bij de verbindingsinstellingen. Wil je leren zulke grenzen voor een eigen project te ontwerpen, bekijk dan Claude Code voor gevorderden. Begin met één taak waarvan je de antwoorden zelf kent. Dan zie je afwijkingen voordat er echte gegevens meedoen.
Zelf aan de slag met Vibe Coding?
Leer hoe je met AI-tools werkende apps bouwt. Onze praktische cursussen nemen je stap voor stap mee.
Blijf op de hoogte
Ontvang maandelijks de nieuwste tips over vibe coding, AI tools en exclusieve content.
Meer artikelen
Een MCP-server bouwen met één eenvoudige voorraadtool
Bouw een kleine MCP-server die fictieve voorraad uitleest. Je ziet het entrypoint, invoerschema, resultaat en foutgedrag zonder een bedrijfssysteem aan te sluiten.
Codex op Windows: kies bewust tussen native en WSL2
Je kunt Codex native op Windows gebruiken of binnen WSL2. Kies op basis van je project, en controleer apart waar de terminal en de agent draaien.
Claude Code hooks: start een vaste controle na een bewerking
Gebruik Claude Code hooks voor een kleine, vaste kwaliteitscontrole. Met een oefenvoorbeeld voor ontbrekende vertalingen en uitleg over wat de uitslag bewijst.