NL
Taal · dezelfde pagina NLNederlands/mcp/ ENEnglish (UK)nog niet vertaald ESEspañol/es/mcp/ We onthouden je keuze niet en sturen je nooit automatisch door.
~/mcp/theseo-mcp[ok] verbonden
INS.MCP · gratis en open source reg. M.000 · MIT-licentie, geen account

Een MCP-server met zeven gratis tools.

Voeg deze server één keer toe aan Claude, Claude Code of een andere MCP-client, en je AI kan vanaf dat moment zelf een SEO-scan draaien, de lokale vindbaarheid van een bedrijf checken, gratis Claude-skills opzoeken en het bedrijfsbrein-sjabloon ophalen. Geen account en geen sleutel.

Wat de server wel en niet vastlegt

De MCP-server bewaart geen gesprek. De gebruiksteller in de code telt per geldige aanroep alleen de toolnaam, de UTC-dag en het getal 1, en staat op de server die nu draait nog niet aan; in die teller komen geen IP-adres, argumenten, headers of gespreksinhoud. Vijf van de zeven tools geven buiten die teller geen toolinvoer door aan de siteflow en lezen alleen uit onze eigen catalogus en open data. Twee tools geven wel gegevens door aan de siteflow: seo_scan bewaart het gescande webadres en de uitslag; lokale_vindbaarheid_check bewaart de bedrijfsnaam, plaats en uitslag. Dat is dezelfde vastlegging als bij de siteformulieren op theseo.nl. Wat we daarmee doen staat in de privacyverklaring.

zeven tools, geen account, geen sleutel
Bekijk de code op GitHub MIT-licentie, geen authenticatie
HET ENDPOINT · DIT IS ALLES WAT JE NODIG HEBT https://theseo-mcp.sales-cc8.workers.dev/mcp streamable http · theseo-mcp 0.1.0 · MIT-licentie · geen authenticatie
~/mcp/theseo-mcp · zeven tools
theseo ~ %
# allemaal alleen-lezen, geen account, geen sleutel
seo_scan gratis SEO-scan, 24 punten
lokale_vindbaarheid_check Google Maps, score 0 tot 100 · vraagt een sleutel op de server
skill_zoeken zoekt in de 100 gratis skills
bedrijfsbrein_template haalt het sjabloon op
ai_index_branche ai_index_vragen ai_index_bedrijf de open data
[ok] 7 tools geladen · MIT-licentie
~/mcp/theseo-mcp/01-demonstratie[run]
Sectie 01 · De demonstratie

Je vraagt iets, de AI meet het

reg. M.001

Zo ziet het eruit als de server aanstaat. Je typt een gewone zin, je AI herkent dat er een tool voor is, roept die aan met de invoer die in de code staat, en krijgt gemeten tekst terug in plaats van een gok. De getallen hieronder staan bewust als placeholder, want die komen uit jouw eigen site en niet uit onze verbeelding.

FIG.01: Een tool-aanroep en het antwoord[#----] blad 1/5
~/werk · claude + theseo-mcp
jij > draai een SEO-scan op https://voorbeeld.nl en vat de grootste problemen samen
tool-aanroepdoor de AI zelf gekozen seo_scan · { "url": "https://voorbeeld.nl" }
# het enige invoerveld: url, tekst, maximaal 400 tekens
theseo-mcp · aanvraag doorgezet naar de site-Worker...
[techniek]HTTPS, HTTP-status, serversnelheid, viewport, taal, robots.txt, sitemap, beveiligingsheaders, e-mailauthenticatie
[on-page]title, meta description, H1, koppenstructuur, alt-teksten, canonical, interne links
[content]woordaantal, contentstructuur, indexeerbaarheid
[ai]gestructureerde data, FAQ-schema, Open Graph, Twitter Card, entiteitshelderheid
antwoord aan de AIschematisch, de getallen zijn van jouw site SEO-scan van https://voorbeeld.nl (tijdstempel) Totaalscore: [score]/100 Techniek [score]/100 · On-page [score]/100 · Content [score]/100 · AI [score]/100 [OK] Canonical URL: [de bevinding op jouw pagina] [LET OP] Meta description: [de bevinding op jouw pagina] [KRITIEK] H1 heading: [de bevinding op jouw pagina]
[####] 4/4 categorieën klaar · de AI vat samen, jij leest terug waar het vandaan komt
7M.01 · tools in de server
24M.02 · punten in de SEO-scan
100M.03 · skills in de zoeker
0M.04 · euro, MIT-licentie, geen account
M.01 tot M.04 · eigenschappen van de server zoals hij nu draait, geen gebruikscijfers en geen resultaten.
$ cat 01-wat-is-mcp.md
DOC.01

Wat MCP is, in gewone taal

MCP staat voor Model Context Protocol. Het is een open standaard die afspreekt hoe een AI-assistent externe tools mag gebruiken. Dat klinkt technischer dan het is. Een taalmodel kan uit zichzelf maar één ding: tekst produceren op basis van wat het ooit heeft gelezen. Het kan niet je website openen, niet in Google Maps kijken en niet in een catalogus zoeken. Vraag je zo'n model hoe jouw site ervoor staat, dan krijg je een plausibel verhaal dat op niets is gebaseerd. Precies dat probleem is de reden dat MCP bestaat.

De standaard lost dat op met een simpele rolverdeling

Aan de ene kant staat de client: het programma waarin jij met de AI praat, bijvoorbeeld Claude, Claude Code of Cursor. Aan de andere kant staat een server die iets kan wat het model zelf niet kan. Die server vertelt aan de client welke tools hij aanbiedt, welke invoervelden elke tool verwacht en wat er ongeveer uitkomt. Je assistent leest die beschrijving en beslist zelf wanneer hij een tool aanroept. Jij hoeft geen commando te leren en geen knop te zoeken: je stelt je vraag in gewone taal en de assistent kiest het gereedschap.

De vergelijking die het snelst blijft hangen: MCP is voor AI-tools wat USB is voor randapparatuur

Voordat USB bestond had elk apparaat zijn eigen stekker en zijn eigen stuurprogramma. Nu past alles in dezelfde poort. Zonder MCP zou elke AI-omgeving zijn eigen koppeling met elke dienst moeten bouwen. Met MCP schrijf je één server, en werkt hij overal waar de standaard wordt gevolgd. De standaard is publiek gedocumenteerd op modelcontextprotocol.io en de meeste grote AI-omgevingen ondersteunen hem inmiddels.

Wat er praktisch verandert, laat zich het beste zien aan dezelfde vraag, twee keer gesteld

Zonder server komt er een antwoord dat klinkt als kennis. Met server komt er een antwoord dat je kunt nalezen.

Belangrijk detail: de AI beslist zelf of hij een tool gebruikt

Je kunt hem er wel expliciet om vragen, maar in de praktijk pakt hij hem vanzelf zodra je vraag erom vraagt. Alle zeven de tools in onze server staan geregistreerd als alleen-lezen: ze passen je site, profiel of brondata niet aan. De server telt wel een aanroep per tool en UTC-dag, en de scan en lokale check sturen hun invoer naar de siteflow zoals hieronder precies staat.

De vraag die daarbij hoort en die zelden ergens beantwoord wordt: hoe komt zo'n tool eigenlijk in je gesprek terecht?

Dat gebeurt in twee stukken die niets met elkaar te maken hebben. Eenmalig, op het moment dat je het endpoint plakt, doen client en server een korte handdruk waarin de server zijn hele gereedschapslijst opnoemt. En daarna, elke beurt opnieuw, kiest het model zelf of er iets tussen zit dat bij jouw zin past. Het figuur hieronder zet die twee naast elkaar, want ze worden vaak door elkaar gehaald.

FIG.01b: Hoe een tool in je gesprek terechtkomteenmalig een handdruk, daarna elke beurt een keuze
verbinding.logschematisch voorbeeld · de berichtnamen komen uit de MCP-standaard
FASE 1 · EENMALIG, ZODRA JE HET ENDPOINT HEBT GEPLAKT
client →initializeWelke versie van de standaard spreek jij, en wat ondersteun je?
← servertheseo-mcp 0.1.0Versie bevestigd. Je client stuurt hier technische MCP-handshakegegevens, zoals protocolversie, mogelijkheden, clientnaam en versie. Er gaan geen account-, sleutel-, site- of gespreksgegevens mee.
client →tools/listWat kun je, en welke invoer heb je daarvoor nodig?
← serverzeven tools, elk met naam, uitleg en invoerschemaseo_scan · lokale_vindbaarheid_check · skill_zoeken · bedrijfsbrein_template · ai_index_branche · ai_index_vragen · ai_index_bedrijf
Vanaf dat moment staan die zeven beschrijvingen in het gereedschapskistje van je assistent. Hij heeft ze niet opgezocht omdat jij erom vroeg, hij kreeg ze bij het verbinden. Dat is meteen de reden dat je nergens een commando hoeft te leren: de uitleg die de server meestuurt is precies wat het model nodig heeft om zelf te kiezen.
FASE 2 · ELKE BEURT OPNIEUW, ZONDER DAT JIJ IETS HOEFT TE DOEN
jij typt een gewone zin
er past een beschrijving de aanroep gaat door het schema Het model vult de invoervelden en die worden eerst tegen het schema gelegd. Een url langer dan 400 tekens of een lege bedrijfsnaam wordt geweigerd voordat er iets vertrekt. Komt hij erdoor, dan krijg je gemeten tekst terug zoals in FIG.01.
er past geen beschrijving de server blijft stil Dat is geen storing maar de bedoeling. Een vraag over je huisstijl heeft niets aan een SEO-scan, dus het model antwoordt gewoon zelf. Een server die bij elke zin iets zou aanroepen is een server die je uitzet.
# je kiest nooit een tool uit een menu. Je zin bepaalt of er een past, het schema bepaalt of de aanroep vertrekt, en de grenzen in FIG.04 bepalen waar hij alsnog nee zegt.
$ cat 02-wat-deze-server-is.md # theseo-mcp 0.1.0
DOC.02
~/mcp/theseo-mcp/02-route[ok]
Sectie 02 · De route

Van jouw vraag naar de bron

reg. M.002

Drie schakels, meer is het niet. De client waarin jij praat, de MCP-server die de tools aanbiedt, en de bron waar het antwoord vandaan komt. Wat waar wordt vastgelegd staat er bewust bij: de server telt alleen toolnaam, UTC-dag en één telpunt; de siteflow bewaart bij de scan en lokale check het adres of de bedrijfscontext en de uitslag.

FIG.02: Client, server en bron[##---] blad 2/5
01 · CLIENT Waar jij praat claude.ai en de desktop-app
Claude Code in je terminal
Cursor via mcp.json
# elke client die de standaard volgt
02 · MCP-SERVER theseo-mcp Cloudflare Worker
streamable http op /mcp
stateless, geen gespreksopslag
# telt alleen toolnaam + UTC-dag + 1
# de site-Worker in stap 03 legt scan en check wel vast
03 · BRON Waar het antwoord vandaan komt site-Worker: /api/scan
site-Worker: /api/vcheck
catalogus in de server zelf
# Google Places zit achter de site-Worker
en dezelfde weg terug: gemeten tekst naar je AI, die er een samenvatting van maakt die jij kunt narekenen
~/mcp/theseo-mcp/03-tools[ok]
Sectie 03 · Het gereedschap

Zeven tools, invoer en uitvoer

reg. M.003

De invoervelden hieronder staan letterlijk zo in de code, inclusief de grenzen die erop zitten. Die grenzen zijn er niet om je te dwarsbomen maar om te voorkomen dat een AI per ongeluk een halve roman als bedrijfsnaam meestuurt.

FIG.03: Het gereedschapsoverzicht[###--] blad 3/5
tools.json7 stuks · allemaal alleen-lezen
seo_scanGratis SEO-scan (24 punten) INVOERurl · tekst, 1 tot 400 tekens. De pagina die gescand moet worden, bijvoorbeeld https://voorbeeld.nl UITVOEREen totaalscore van 0 tot 100 plus vier deelscores voor techniek, on-page, content en AI-gereedheid, en daaronder per punt een regel met status en uitleg.
lokale_vindbaarheid_checkLokale vindbaarheidscheck (Google Maps) INVOERbedrijfsnaam · tekst, 1 tot 120 tekens, zoals klanten het zoeken. stad · tekst, 1 tot 80 tekens, de plaats van vestiging. UITVOERNaam en adres zoals Google ze kent, een score van 0 tot 100, per gemeten criterium de status met het gewicht, een aparte lijst met wat niet gemeten is en waarom, en concrete tips.
skill_zoekenGratis Claude-skill zoeken INVOERonderwerp · tekst, 2 tot 200 tekens, waar de skill over moet gaan. max · geheel getal van 1 tot 20, optioneel, standaard 5. UITVOERPer treffer de naam, het cluster, een ingekorte beschrijving, de uitlegpagina op theseo.nl en de directe download-URL van de zip. Onderaan de link naar de volledige catalogus.
bedrijfsbrein_templateBedrijfsbrein-sjabloon ophalen INVOERGeen. Deze tool heeft geen enkel invoerveld: je vraagt erom en je krijgt hem. UITVOERDe uitlegpagina, de download-URL en daarna de volledige tekst van zowel LEESMIJ.md als het invulbare bedrijfsbrein.md, klaar om direct in het gesprek te laten invullen.
ai_index_brancheAI-Index: wie noemt het model in een branche INVOERbranche · tekst, 2 tot 60 tekens, bijvoorbeeld zorg of logistiek. Een deel van de naam is genoeg. UITVOERHet aantal geldige metingen, de weigeringen, de tien meest genoemde bedrijven met het actuele beeld per vraag, en hoe geconcentreerd de vermeldingen zijn. Met bronregel.
ai_index_vragenAI-Index: de vragenlijst van een branche INVOERbranche · tekst, 2 tot 60 tekens. max · geheel getal van 1 tot 40, optioneel, standaard 10. UITVOERDe letterlijke klantvragen die aan het model zijn gesteld, plus de vaste prompt, het model en de meetcyclus, zodat je de meting zelf kunt naspelen.
ai_index_bedrijfAI-Index: komt een bedrijfsnaam voor in de metingen INVOERbedrijfsnaam · tekst, 2 tot 120 tekens, bijvoorbeeld Coolblue of bol.com. UITVOERIn welke branches en bij welke vragen de naam voorkomt, met aantallen per meetmoment. Komt de naam niet voor, dan zegt de tool er uitdrukkelijk bij dat dit geen oordeel is.
$ man seo_scan
DOC.03

Tool 1: seo_scan

De eerste tool scant één URL op 24 punten, verdeeld over vier categorieën. Onder techniek vallen HTTPS, de HTTP-status, de serversnelheid, de viewport-meta, de ingestelde taal, robots.txt, de XML-sitemap, de beveiligingsheaders en de e-mailauthenticatie. Onder on-page vallen de title, de meta description, de H1, de koppenstructuur, de alt-teksten van afbeeldingen, de canonical en de interne links. Onder content vallen het woordaantal, de contentstructuur en de indexeerbaarheid. En onder AI-gereedheid vallen gestructureerde data, het FAQ-schema, Open Graph, de Twitter Card en de entiteitshelderheid.

Dat laatste blok is de reden dat deze scan anders is dan de meeste

AI-gereedheid gaat over de vraag of een taalmodel jouw pagina kan begrijpen en citeren: staat er schema-opmaak in, is duidelijk wie of wat de pagina beschrijft, en zijn er velden waaruit een assistent een net antwoord kan samenstellen. Dit is een ander soort werk dan klassieke SEO, en het wordt snel belangrijker naarmate meer mensen hun vragen aan een assistent stellen in plaats van aan een zoekbalk.

Het antwoord dat je AI terugkrijgt begint met de gescande URL en het tijdstip

Het antwoord dat je AI terugkrijgt begint met de gescande URL en het tijdstip, dan de totaalscore, dan de vier deelscores, en daarna per categorie de losse punten. Elk punt draagt een status: OK als het goed staat, INFO als het alleen ter kennisgeving is, LET OP bij een waarschuwing en KRITIEK als het echt mis is. Achter die status staat de eerlijke uitleg van wat er goed of mis is, niet alleen een vinkje. Daardoor kan je AI er een leesbare samenvatting van maken zonder zelf iets te hoeven verzinnen.

Een realistisch gesprek loopt zo

Jij typt: draai een SEO-scan op mijn site en vertel me wat ik als eerste moet oppakken. De AI roept seo_scan aan met jouw URL, krijgt de 24 punten terug en zegt bijvoorbeeld dat de techniek in orde is, dat de meta description ontbreekt op de pagina die je noemde en dat er geen schema-opmaak staat. Vervolgens kun je gewoon doorpraten: vraag om de drie punten met de meeste impact, vraag om een voorstel voor een betere title, of vraag om het rijtje in een takenlijst te zetten. Dat gesprek is de winst. Een losse scanner geeft je een lijst, een AI met een scanner geeft je een lijst plus een plan.

Eén eerlijke grens hoort hier meteen bij: deze scan bekijkt één pagina en meet alleen wat automatisch meetbaar is

Hij vervangt geen audit. Een echte audit kijkt naar meerdere pagina's, naar je concurrentie, naar zoekwoorden en naar zoekintentie, en dat blijft handwerk. De tool zegt dat trouwens zelf ook in zijn antwoord, met een verwijzing naar de scanpagina voor de context erbij.

Gianluca, die de MCP-server bouwde en open zette
beeld · wie de server schreef en de code open zette, zodat je kunt nalezen wat elke tool doet
$ man lokale_vindbaarheid_check
DOC.04
$ man skill_zoeken # catalogus van 100 skills
DOC.05

Tool 3: skill_zoeken

De derde tool doorzoekt onze catalogus van 100 gratis Nederlandstalige Claude-skills op onderwerp. Een skill is een instructiebestand, SKILL.md, dat een AI een vaste werkwijze meegeeft voor één taak: een SWOT-analyse, een offerte, een notulenverslag, een beslisboom. Alle skills op de skill-bibliotheek zijn gratis en vragen geen account. Het probleem met een bibliotheek van die omvang is dat je moet weten wat er in staat om er iets uit te halen. Deze tool haalt dat probleem weg: je vraagt in gewone taal of er iets is voor jouw situatie, en je AI zoekt.

De zoeker doet dat zonder netwerk, want de catalogus zit in de server zelf

Hij knipt je onderwerp in losse termen en scoort elke skill op vier plekken: een treffer in de naam weegt het zwaarst, dan de slug, dan het cluster, en een treffer in de beschrijving weegt het lichtst. Dat laatste is bewust, want de beschrijvingen zijn lang en bevatten veel losse trefwoorden. Zonder die weging zou een skill die jouw woord toevallig ergens in zijn beschrijving noemt boven de skill komen die er letterlijk naar heet.

Per treffer krijg je de naam, het cluster waar hij bij hoort

Per treffer krijg je de naam, het cluster waar hij bij hoort, een beschrijving die op ongeveer 240 tekens wordt afgekapt, de link naar de uitlegpagina op theseo.nl en de directe download-URL van de zip. Standaard krijg je vijf treffers, maar je AI mag er tot twintig opvragen. Levert je zoekterm niets op, dan zegt de tool dat gewoon, stelt hij een bredere term voor en geeft hij de link naar de volledige catalogus mee.

Een realistisch gesprek: is er een gratis skill die me helpt met een SWOT-analyse

De AI roept skill_zoeken aan met dat onderwerp, krijgt de treffers terug en noemt de meest passende met de download-link erbij. Daarna kun je doorpakken: vraag hem de skill te downloaden en te installeren, of vraag wat het verschil is tussen twee treffers. Weet je nog niet hoe je een skill in je omgeving zet, dan staat dat stap voor stap op de pagina over Claude-skills installeren.

De eerlijke kanttekening: de catalogus in de server is een momentopname

Hij wordt gegenereerd uit de site-repo van theseo.nl, dus nieuwe skills verschijnen in de zoeker pas nadat de server opnieuw is uitgerold. De actuele lijst staat altijd op de site, en die link krijg je onder elk zoekresultaat mee.

~/mcp · skill_zoeken
theseo ~ %
ai-pre-mortem-analist /ai-en-automatisatie/ai-pre-mortem-analist-skill-voor-claude/ · zip
ai-inversie-denker /ai-en-automatisatie/ai-inversie-denker-skill-voor-claude/ · zip
ai-tweede-orde-denker /ai-en-automatisatie/ai-tweede-orde-denker-skill-voor-claude/ · zip
# schematisch: per treffer de naam, de uitlegpagina en de zip
[ok] 3 treffers uit 100
$ man bedrijfsbrein_template
DOC.06
$ claude mcp add --transport http theseo-mcp # een regel, klaar
DOC.07

Installeren in Claude Code, Claude.ai of een andere client

Er valt niets te installeren in de klassieke zin: je vertelt je AI-omgeving alleen waar de server staat. Hoe je dat doet verschilt per programma, maar het gaat overal om dezelfde URL. De drie routes die we hebben getest, met de echte commando's.

CLAUDE CODE
  1. Draai in je terminal: claude mcp add --transport http theseo-mcp https://theseo-mcp.sales-cc8.workers.dev/mcp
  2. Claude Code onthoudt de server en toont de zeven tools bij je volgende sessie.
  3. Vraag daarna gewoon om een scan of een skill, je hoeft geen commando te leren.
CLAUDE.AI EN DE DESKTOP-APP
  1. Ga naar Instellingen en dan Connectors.
  2. Kies Connector toevoegen en plak de URL https://theseo-mcp.sales-cc8.workers.dev/mcp
  3. Klaar. Vraag Claude bijvoorbeeld om een SEO-scan van je site.
CURSOR EN ANDERE CLIENTS
  1. Open ~/.cursor/mcp.json, of .cursor/mcp.json in je project.
  2. Voeg onder mcpServers een sleutel theseo-mcp toe met daarin url op het endpoint.
  3. Andere clients die de standaard volgen hebben genoeg aan diezelfde URL.
Voor Cursor ziet het bestand er dan zo uit

Bestaat er al een mcpServers-blok, dan zet je onze sleutel ernaast in plaats van het blok te vervangen.

# ~/.cursor/mcp.json { "mcpServers": { "theseo-mcp": { "url": "https://theseo-mcp.sales-cc8.workers.dev/mcp" } } }
Er is geen sleutel, geen token en geen aanmeldstap

Bewuste keuze: zodra je een account nodig hebt om een gratis tool te proberen, probeert bijna niemand hem nog. Omdat er geen account is, krijg je ook geen persoonlijke geschiedenis terug. De gebruiksteller kent, zodra hij aanstaat, alleen aantallen per tool per dag. Bij seo_scan bewaart de siteflow het gescande webadres en de uitslag; bij lokale_vindbaarheid_check bewaart hij de bedrijfsnaam, plaats en uitslag. Die vastlegging levert geen scherm op waarin je volgende week eerdere aanroepen kunt terugzoeken.

Werkt er iets niet, dan is de eerste controle simpel: plak de basis-URL van de server in je browser, dus het adres zonder /mcp erachter

Krijg je een kort JSON-antwoord met de naam, de versie en de zeven toolnamen te zien, dan draait de server en zit het probleem in je client. Zie je niets, dan is het aan onze kant.

$ cat 08-waarom-gratis.md # MIT
DOC.08

Waarom dit gratis en open source is

De eerlijkste reden eerst: we verdienen ons geld niet aan scans. We verdienen het aan het werk dat daarna komt, en aan onze software. Een gratis tool die echt iets meet is voor ons de goedkoopste manier om te laten zien hoe we denken. Wie de scan draait en het antwoord leest, ziet binnen een minuut of onze manier van kijken hem bevalt. Betere kennismaking dan welke brochure ook, wat ons betreft.

De tweede reden is dat een gesloten meetinstrument nauwelijks waarde heeft

Als je niet kunt nakijken wat er gemeten wordt, moet je op ons woord vertrouwen dat een score klopt. Daarom staat alles open: de volledige broncode van de server staat op github.com/GianlucaNaarden/theseo-mcp onder de MIT-licentie. Je kunt precies nalezen welke velden een tool verwacht, wat er met je invoer gebeurt en hoe het antwoord wordt opgebouwd. Vind je iets onzinnig, dan kun je een issue openen. Wil je hem zelf draaien of aanpassen, dan mag dat gewoon: de MIT-licentie staat dat toe, ook commercieel.

Zelf draaien is geen theorie

Je hebt Node 20 of nieuwer nodig, daarna draai je de tests, start je hem lokaal en deploy je hem naar je eigen Cloudflare-account. De tests zijn er trouwens ook een verhaal apart: ze praten met de officiële MCP-client tegen de echte handler, in hetzelfde proces en zonder netwerk. Dat betekent dat er getest wordt wat er werkelijk gebeurt in plaats van een nagebouwde versie ervan.

$ npm install $ npm test # smoke-test plus tests van de skill-zoeker $ npm run dev # lokaal op http://localhost:8787/mcp $ npm run deploy # naar je eigen Cloudflare-account
De derde reden is dat het gewoon leuk is om iets nieuws te maken

Voor zover wij hebben kunnen nagaan is dit de eerste MCP-server van een Nederlands marketingbureau. Die slag om de arm hoort erbij, want we kunnen niet elk register en elke repository van de wereld doorzoeken, en morgen kan iemand anders er al staan. Wat we wel zeker weten: de standaard is jong, er is nog weinig Nederlandstalig gereedschap, en het leek ons zonde om te wachten tot iemand anders het bouwt.

Wat het ons oplevert is geen geheim

Wie dit gereedschap nuttig vindt, komt vanzelf een keer bij ons uit voor het werk dat we wel factureren: SEO, Google Ads, AI en automatisatie en onze eigen software. Dat is de hele afspraak, en die staat hier zwart op wit zodat je hem kunt controleren.

~/mcp/theseo-mcp/04-grenzen[ok]
Sectie 04 · De grenzen

Wat deze server niet doet

reg. M.004

Elke tool die eerlijk wil zijn moet zijn eigen randen kennen. Hieronder staan de verzoeken die je zou kunnen doen en het antwoord dat je werkelijk krijgt, inclusief de twee criteria die bewust buiten de score blijven omdat ze niet te meten zijn.

FIG.04: grenzen.log[####-] blad 4/5
grenzen.logde randen van de server, uitgeschreven
doe een volledige audit van mijn hele websiteBEPERKTDe scan bekijkt één pagina op 24 automatisch meetbare punten. Het is een goede eerste indruk, geen volledige audit. Meerdere pagina's, concurrentie, zoekwoorden en zoekintentie blijven handwerk.
sta ik in het lokale kaartblok van Google?NIET GEMETENDaar is een live zoekopdracht voor nodig. Dat zit niet in deze gratis check. Het criterium komt terug als niet gemeten, met de reden erbij, en telt niet mee in de score.
reageer ik genoeg op mijn reviews?NIET GEMETENGoogle stelt dat via deze weg niet beschikbaar. De tool zegt dat er ook bij, met de aanbeveling om het wel te doen: reageren is een van de sterkste activiteitssignalen.
bewaar mijn scanresultaten voor volgende weekNIET MOGELIJKDeze server biedt geen persoonlijk geheugen. Er is geen gebruikersdatabase, account of sessie waarin je eerdere resultaten kunt terugzoeken. De gebruiksteller, die op de server nog uitstaat, kent alleen de toolnaam en UTC-dag. Bij de SEO-scan en de lokale check legt onze site het gescande adres of de bedrijfscontext en de uitslag vast in onze eigen database, net als bij de tool op theseo.nl. Dat is onze administratie en geen geschiedenis die jij kunt opvragen.
maak een account voor me aanNIET NODIGEr is geen account en geen sleutel. Je plakt het endpoint en het werkt. Je hebt hier dus geen accountwachtwoord of toegangstoken om te onthouden of vanuit zo'n account te laten lekken.
zit de skill van vorige week er al in?MOMENTOPNAMEDe catalogus wordt met de server meegeleverd. Nieuwe skills verschijnen in de zoeker na een nieuwe uitrol. De actuele lijst staat altijd op de skill-bibliotheek, en die link krijg je bij elk resultaat mee.
de vindbaarheidscheck geeft een foutmeldingEERLIJKE FOUTDe check werkt pas als de API-sleutel op onze server staat. Ontbreekt die, dan geeft de tool het foutbericht van de API letterlijk door in plaats van een resultaat te verzinnen. Saai, maar controleerbaar.
~/mcp/theseo-mcp/05-upgrade-pad[ok]
Sectie 05 · Van tool naar medewerker

Zelf draaien of laten draaien

reg. M.005

Eerlijk is eerlijk: deze server is de gratis doe-het-zelf-versie van werk dat we ook als dienst leveren. Hij blijft compleet en zonder addertjes, maar besef wat een tool is. Hij geeft antwoord als jij het vraagt, en elke nieuwe sessie begint leeg. De tool is niet de motor en niet het geheugen. Jij vraagt, jij levert de context, jij controleert. Wie dat anders wil, heeft twee vervolgstappen: de motor uit handen geven, of het geheugen regelen.

$ cat van-tool-naar-medewerker.mddrie treden, zelfde werk
upgrade-pad.shgratis · medewerker · brein
TREDE 1 · GRATIS
waar je nu bent
De MCP-server: jij bent de motor Je verbindt de server met Claude, Claude Code of Cursor en vraagt zelf om een scan, een check of een skill. Kost niets, werkt vandaag, en alles op deze pagina blijft gewoon zo beschikbaar. De grens is je eigen tijd: het gebeurt alleen wanneer jij het vraagt. $ claude mcp add --transport http theseo-mcp · 0 euro · jij vraagt, jij controleert
TREDE 2 · DIENST
laten voorbereiden
De AI-medewerker: het staat klaar zonder dat jij het vraagt Precies dit soort werk, maar dan als dienst: de Rapportagemedewerker draait de metingen en zet de week- en maandrapportages klaar zonder dat jij ervoor achter een terminal hoeft te kruipen. De controle blijft bij jou, want output blijft concept tot een mens akkoord geeft. Dit leveren we via Mansotti, de onderneming waarvan TheSEO de handelsnaam is, die naast de Rapportagemedewerker ook een Offertemedewerker en een Salesmedewerker bouwt. Lees wat een AI-medewerker is en doet. vanaf 950 euro per maand · mens geeft akkoord, altijd
TREDE 3 · BREIN
alles uit een bron
Jarvis: al je AI's werken vanuit dezelfde bedrijfskennis Een tool leert je AI wat hij kan opvragen, het brein is waar het geheugen leeft. Wil je dat al je AI's vanuit dezelfde bedrijfskennis werken: dat is Jarvis, het organisatiebrein. Het verbindt ChatGPT, Claude, Codex en je mensen met dezelfde projecten, kernkennis en beslissingen, zodat je volgende AI-sessie niet opnieuw begint. Jarvis selecteert context, delegeert werk en bewaart alleen wat is goedgekeurd: klantkennis blijft geïsoleerd en elke stap laat een controleerbaar spoor na. Ook deze server wordt daar beter van, want welke sites en welke bedrijven je volgt hoef je dan niet meer per gesprek te herhalen. Wat dat concreet oplevert, van de plannen tot je eerste week, lees je bij Jarvis zelf. instap Brain Start: 9 euro per maand incl. btw · betaal voor je brein, niet per AI-vraag
# geen reclametruc: trede 1 blijft gratis en volledig. De volgende treden zijn er voor wie dit werk uit handen wil geven.
~/mcp/theseo-mcp/06-jarvis[ok]
Sectie 06 · Het brein

Wat Jarvis concreet oplevert

reg. M.006

Trede 3 verdient meer dan een alinea, en juist op deze pagina. Wie een MCP-server aansluit, snapt het onderscheid tussen een model dat gokt en een model dat iets kan opvragen. Er zit alleen een gat achter dat je pas na een paar weken merkt. Met opzet bewaart de MCP-server geen gesprek: de teller kent, zodra hij aanstaat, alleen toolnaam en UTC-dag. De siteflow bewaart voor de twee doorgeeftools wel het adres of de bedrijfscontext en de uitslag, maar niet wat jij daarna besloot. Dat besluit verdampt zodra het gesprek sluit. Jarvis is de laag die precies dat vasthoudt.

FIG.05: De tool levert het feit, het brein bewaart het besluit[#####] blad 5/5
werkjournaal.mdvoorbeeldindeling, geen klantdata
wat de tool teruggafwat er daarna is besloten
seo_scan · week 1H1 ontbreekt op de dienstpagina, meta description te langniet als besluit vastgelegd, alleen besproken
lokale_vindbaarheid_check · week 3openingstijden ontbreken bij twee vestigingenniet als besluit vastgelegd, alleen besproken
seo_scan · week 5H1 ontbreekt op de dienstpagina, meta description te langdezelfde bevinding, dezelfde discussie, geen idee of er al iets van gevonden was
$ jarvis aan · dezelfde tools, dezelfde metingen, maar de rechterkolom blijft nu staan
seo_scan · week 1H1 ontbreekt op de dienstpagina, meta description te lang[besluit]H1 wordt de dienstnaam plus de plaats; meta pas herschrijven na de herinrichting van die pagina
lokale_vindbaarheid_check · week 3openingstijden ontbreken bij twee vestigingen[taak]bij de vestigingsmanager opgevraagd, concept klaar, wacht op menselijk akkoord
seo_scan · week 5H1 ontbreekt op de dienstpagina, meta description te lang[recall]besluit van week 1 komt mee: de meta wacht bewust, dus dit is geen nieuwe bevinding maar een openstaande
# de MCP-server verandert hier niets aan zijn werk: hij meet in week 5 precies hetzelfde als in week 1, en dat hoort ook zo. Het verschil zit in de kolom ernaast. Het volledige spoor van vastleggen tot goedkeuren staat op jarvis/werking.
mcp.plus De meting van vorige maand ligt er nog De server is stateless, en dat is een veiligheidskeuze die we niet willen opgeven. Het brein staat er dus naast en niet in: daar landt wat je met een meting deed, zodat de bevinding van week 5 herkend wordt als de openstaande van week 1.
tools.gedeeld Dezelfde zeven tools in elke AI die je gebruikt Het endpoint plak je in Claude, in Cursor en in Claude Code apart. Wat je daar leert en besluit staat vervolgens los. Met een brein erachter werken die drie vanuit dezelfde kernkennis, en levert een scan in de ene omgeving een besluit op dat de andere ook kent.
scan.ritme Een meting die uit zichzelf terugkomt Handmatig aanroepen werkt prima zolang je eraan denkt. Een taak in het brein draait de scan op een vast ritme, legt het verschil met de vorige keer vast en meldt zich als er iets verschuift. De tool blijft dezelfde, de aanleiding niet.
spoor.terug Terugvinden welke aanroep welk besluit droeg Iedere stap laat een controleerbaar spoor na: welke tool werd aangeroepen, met welke invoer, wat er terugkwam en wie akkoord gaf. Zonder dat spoor kun je een half jaar later niet meer nagaan waarop een keuze rustte.
mens.akkoord Niets naar buiten zonder akkoord AI bereidt voor, een mens beslist. Output blijft concept tot iemand het goedkeurt, en alleen goedgekeurde kennis komt terug in het brein. Die grens geldt overal in het systeem, ook voor werk dat een agent volledig zelf heeft voorbereid.
brein.geisoleerd Klantbrein geïsoleerd Werk je voor meerdere klanten, dan blijft de kennis per klant strikt gescheiden. Wat je voor de een leert, lekt niet in het werk voor de ander.
# HET EERLIJKE BEWIJS · GEEN DEMO

Wij draaien zelf al maanden op dit systeem. Elke agent-sessie, elke taak en elke beslissing wordt erin gelogd en is terug te lezen. Een nieuwe sessie begint daardoor niet blanco: hij haalt eerst de vastgelegde besluiten, de lopende projecten en de laatste wijzigingen op, en werkt verder waar de vorige stopte. Deze server is er zelf uit voortgekomen, inclusief de keuze om hem stateless te houden. We beschrijven hier geen belofte maar de manier waarop we zelf dagelijks werken.

$ cat prijzen.mdbetaal voor je brein, niet per AI-vraag
Brain Start €9 /mnd incl. btw 1 organisatiebrein · 1 gebruiker · 1 AI-medewerker
Brain Solo €29 /mnd incl. btw 1 organisatiebrein · 1 gebruiker · 3 AI-medewerkers
Brain Team €99 /mnd incl. btw 1 organisatiebrein · 5 gebruikers · 10 AI-medewerkers
Brain Business €249 /mnd incl. btw 3 organisatiebreinen · 20 gebruikers · 50 AI-medewerkers

Bekijk de vier plannen op jarvis/prijzen. Via de wachtlijst geef je alleen vrijblijvend je voorkeursplan door. Dat maakt nog geen account, bestelling of betalingsplicht. Zakelijk maatwerk bespreken we eerst.

~/mcp/theseo-mcp/07-verder[ok]
Sectie 07 · Verder kijken

Waar deze server op leunt

reg. M.007

Elke tool in de server heeft een pagina op deze site waar hetzelfde werk met de hand kan. Dat is geen dubbeling maar een keuze: sommige mensen willen een knop, andere willen een gesprek. Hieronder staat het hele veld bij elkaar.

$ claude --interactief # acht vragen, acht antwoorden
DOC.09 · FAQ

Veelgestelde vragen

Wat is MCP precies?

MCP staat voor Model Context Protocol. Het is een open standaard die afspreekt hoe een AI-assistent externe tools mag gebruiken. Een AI-model kan uit zichzelf alleen tekst produceren op basis van wat het ooit heeft gelezen. Met MCP kan het iets opvragen bij een server die wel kan meten, opzoeken of ophalen. De server vertelt welke tools er zijn, welke invoer ze verwachten en wat ze teruggeven, en de assistent kiest zelf wanneer hij er een aanroept.

Wat kost deze MCP-server?

Niets. Alle zeven tools zijn gratis, je hoeft geen account aan te maken, geen e-mailadres achter te laten en geen sleutel aan te vragen. De code staat onder de MIT-licentie op GitHub. Er is geen betaalde versie van deze server en er komt geen verkoopmail achteraan.

In welke programma's werkt de server?

In elke client die remote MCP-servers via Streamable HTTP ondersteunt. Wij documenteren Claude op claude.ai en in de desktop-app, Claude Code, en Cursor via het bestand mcp.json. Andere clients die de standaard volgen hebben genoeg aan de URL van het endpoint, want dat is het enige dat je hoeft in te vullen.

Slaat de server mijn gegevens op?

De MCP-server bewaart zelf geen gesprek of toolinvoer. De gebruiksteller in de code schrijft per geldige aanroep alleen de toolnaam, de UTC-dag en het getal 1 naar Analytics Engine; daaruit tellen we straks aantallen per tool per dag. Op de server die nu draait staat die teller nog niet aan. In die teller komen geen IP-adres, argumenten of headers. Twee tools geven wel gegevens door aan de siteflow: seo_scan bewaart het gescande webadres en de uitslag; lokale_vindbaarheid_check bewaart de bedrijfsnaam, plaats en uitslag. Dat is dezelfde vastlegging als bij de siteformulieren op theseo.nl. De overige vijf tools lezen alleen meegeleverde bestanden en bewaren geen gespreksinhoud.

Vervangt de SEO-scan een echte audit?

Nee, en dat zegt de tool zelf ook in zijn antwoord. De scan bekijkt een pagina op 24 automatisch meetbare punten en geeft daar een eerlijke score bij. Een volledige audit kijkt naar meerdere pagina's, naar concurrentie, naar zoekwoorden en naar zoekintentie, en dat blijft handwerk. Zie de scan als een goede eerste indruk waarmee je weet waar je moet kijken.

Waarom komen sommige criteria terug als niet gemeten?

Omdat wij liever niets zeggen dan iets verzinnen. De lokale vindbaarheidscheck meet wat via de Google Places API beschikbaar is. Of je in het lokale kaartblok staat vraagt om een live zoekopdracht, en of je op reviews reageert geeft Google via deze weg niet vrij. Die twee komen terug als niet gemeten met de reden erbij, en ze tellen niet mee in de noemer van de score. Zo kan een onmeetbaar punt je score nooit omlaag trekken.

Staat de nieuwste skill er meteen in?

Niet automatisch. De skill-catalogus in de server is een momentopname die uit de site-repo van theseo.nl wordt gegenereerd. Nieuwe skills verschijnen in de zoeker zodra de server opnieuw is uitgerold. De volledige en altijd actuele lijst staat op de skills-pagina van theseo.nl, en die link krijg je ook onderaan elk zoekresultaat mee.

Kan ik de server zelf draaien of aanpassen?

Ja. De code staat onder de MIT-licentie op GitHub. Je hebt Node 20 of nieuwer nodig, daarna draai je hem lokaal met npm run dev en deploy je hem naar je eigen Cloudflare-account met npm run deploy. De server bevat zelf geen sleutels: de scan- en checklogica draait op de site-Worker van theseo.nl en deze server roept daar alleen de publieke endpoints van aan.

DOC.10 · Volgende stap

Verbinden kost een minuut

Plak het endpoint in je client, vraag om een scan van je eigen site en kijk wat eruit komt. Bevalt de manier van kijken, dan weet je meteen hoe wij werken. Bevalt hij niet, dan heeft het je één minuut gekost en staat er geen account op je naam. Dat is de hele afweging.

Mis je een tool die er wel in hoort, of loop je tegen iets aan dat niet klopt, laat het weten. De code staat open, dus een issue op GitHub is de snelste weg. Wil je liever praten over wat AI verder voor je bedrijf kan doen, van losse tools tot een organisatiebrein, dan doen we dat gewoon in een gesprek.

Sectie 08 · Volgende stap24/7 bereikbaar · sales@theseo.nl
Plan een gesprek
$ whoami
Geschreven door GianlucaOprichter van TheSEO. Bouwt sinds 2017 aan vindbaarheid voor Nederlandse bedrijven, in Google en in AI-antwoorden. Meer over het instituut.