Terug naar het blog

Meerdere Drupal-sites beheren met één MCP-server

2025-10-258 min read

Het probleem met contextwisseling

Ik werk aan een paar Drupal-sites. Elke keer als ik tussen deze sites schakel, is er die mentale overhead: Welke modules heeft deze? Welke velden zitten er op het artikeltype? Ik moet wat gegevens uit de database halen om ze weer te geven. Moet ik een nieuwe view aanmaken, of bestaat er al een?

Zelfs met AI-assistenten zoals Claude Code, Cursor of Windsurf, betekende het verkrijgen van antwoorden wachten terwijl ze opeenvolgend meerdere drush-commando's uitvoerden en fragmenten van informatie aan elkaar plakten. Daarom heb ik Drupal Scout gebouwd, een MCP-server die AI-assistenten onmiddellijke, uitgebreide kennis geeft over uw Drupal-site. Het is open source op GitHub. Scout is alleen-lezen. Het analyseert uw site, maar wijzigt nooit uw database of bestanden.

Zonder Scout voert uw AI commando's uit zoals deze:

AI: Bezig met uitvoeren van drush field:list node article...
AI: Bezig met uitvoeren van drush config:get field.field.node.article.field_image...
AI: Bezig met uitvoeren van drush config:get field.field.node.article.field_category...
# ...enzovoort, wachtend tussen elk commando

Met Scout vraagt u gewoon: "Welke velden zitten er op het artikeltype?"

Eén aanroep. Direct antwoord. Alles kruisverwijzend. Dit bespaart 70-90% aan tokens vergeleken met het opeenvolgend uitvoeren van commando's, en uw AI reageert onmiddellijk in plaats van te wachten op meerdere drush-bewerkingen.

De multi-project truc

Dit is wat ik heb geleerd: U kunt dezelfde MCP-server voor al uw projecten gebruiken. Elk project krijgt automatisch zijn eigen context.

Toen ik dit ontdekte, veranderde alles. Geen wisseling van configuraties meer. Niet meer afvragen naar welke site ik kijk. De AI weet het gewoon.

Hoe het werkt

Drupal Scout zoekt naar een config.json-bestand in uw projectmap. Wanneer u zich in project A bevindt, leest het de configuratie van A. Schakelt u over naar project B? Het leest de configuratie van B. Simpel.

De MCP-server zelf staat op één locatie (ik bewaar de mijne in ~/.local/drupal-scout-mcp), maar elk project vertelt deze welke Drupal-installatie geïndexeerd moet worden.

Installatie

Installeer Drupal Scout één keer:

git clone https://github.com/davo20019/drupal-scout-mcp.git ~/.local/drupal-scout-mcp
cd ~/.local/drupal-scout-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

Plaats vervolgens in elk Drupal-project twee bestanden in de hoofdmap:

config.json (vertelt Scout waar uw Drupal zich bevindt):

{
"drupal_root": "/pad/naar/uw/drupal",
"modules_path": "web/modules"
}

.claude.json (koppelt de MCP-server):

claude mcp add --transport stdio drupal-scout -- \
~/.local/drupal-scout-mcp/venv/bin/python \
~/.local/drupal-scout-mcp/server.py

Dat is alles. Wanneer u naar die map navigeert en begint met coderen, indexeert Scout die modules. Projecten wisselen? Het indexeert de nieuwe.

Wat kan Drupal Scout doen?

Nu u het hebt ingesteld, wat kunt u er daadwerkelijk mee doen? Ik zal u enkele echte voorbeelden laten zien.

Velden en contenttypes analyseren

U: "Ik moet een telefoonnummerveld toevoegen aan het personeelscontenttype"
AI: Laat me controleren of er al een telefoonveld bestaat...
AI: Gebruik van drupal-scout get_field_info(field_name="phone")

Resultaat: 2 telefoonvelden gevonden:
• Telefoonnummer (field_phone_number) Type: telephone, Gebruikt in: contact, vendor
• Mobiel Telefoon (field_mobile_phone) Type: telephone, Gebruikt in: employee

AI: "U kunt field_phone_number hergebruiken op het personeelscontenttype!"

Dit heeft u behoed voor het aanmaken van een dubbel veld met een andere naam. Eén query toonde u alle telefoon-gerelateerde velden en waar ze gebruikt worden.

Views en weergaven vinden

U: "Hebben we views die gebruikersgegevens weergeven?"
AI: Gebruik van drupal-scout get_views_summary(entity_type="users")

Resultaat: 2 views gevonden:
• Gebruikerslijst (user_list) Weergaven: page, block
• Personeelsgids (staff_directory) Weergaven: page, block

AI: "Ja! De weergave Personeelsgids bestaat al met filters voor afdeling en rol."

In plaats van een nieuwe view aan te maken, ontdekte u een bestaande die doet wat u nodig heeft.

Taxonomie-termen opschonen

U: "Kan ik de term 'Oude Categorie' veilig verwijderen?"
AI: Gebruik van drupal-scout get_taxonomy_info(term_name="Old Category")

Resultaat: Term: Oude Categorie (tid: 75)
Gebruik: 0 content items, 0 views
Kinderen: Geen

VEILIG TE VERWIJDEREN - Deze term wordt nergens gebruikt.

AI: "Ja, het is veilig om te verwijderen. De term wordt niet gebruikt in content of views."

Probeer nu te vragen naar een term die wel wordt gebruikt:

U: "Hoe zit het met de term 'Technologie'?"
AI: Gebruik van drupal-scout get_taxonomy_info(term_name="Technology")

Resultaat: Term: Technologie (tid: 42)
Gebruik: 87 content items
Kinderen: AI/ML, Web Development
Voorbeeld content:
• Hoe AI de ontwikkeling verandert (nid: 123)
• Tech Trends 2024 (nid: 156)
... en 84 meer

WAARSCHUWING: Heeft onderliggende termen (2 kinderen worden wees)
LET OP: Gebruikt in 87 stukken content

AI: "Deze term wordt veel gebruikt. Verwijdering zou 87 artikelen beïnvloeden en 2 onderliggende termen wees maken. Overweeg in plaats daarvan samenvoegen."

Deze analyse zou tientallen drush-commando's en databasequeries hebben gekost. Drupal Scout deed het in één aanroep.

Debuggen met watchdog-logs

U: "De site toont fouten, kun je controleren wat er mis is?"
AI: Gebruik van drupal-scout get_watchdog_logs()

Resultaat: 12 PHP-fouten gevonden:
[2024-01-15 14:32:21] Undefined array key 'field_category'
Locatie: /modules/custom/custom_module/custom_module.module:45

[2024-01-15 14:30:15] Call to undefined method getCategory()
Locatie: /modules/custom/custom_module/src/Service/CategoryService.php:78

AI: "Ik heb twee gerelateerde fouten gevonden in custom_module. Laat me die bestanden lezen en oplossen..."

De AI kan onmiddellijk naar de probleemgevallen springen en oplossingen voorstellen.

Aanbevelingen voor modules krijgen

Hier is iets wat ik erg nuttig vind: Drupal Scout kan de Drupal.org API doorzoeken en modules aanbevelen op basis van wat u probeert te doen.

U: "Ik heb een manier nodig om workflow en contentmoderatie te beheren"
AI: Gebruik van drupal-scout search_drupal_modules(keyword="workflow")

Resultaat: Relevante modules gevonden:
• Workbench Moderation - Biedt redactionele workflow voor content
• Content Moderation - Core workflowoplossing voor Drupal 8+
• Workflow - Flexibel beheer van contentworkflows

AI: "Op basis van uw Drupal-versie en behoeften, raad ik Content Moderation aan, aangezien deze in de core zit voor Drupal 8+. Wilt u dat ik controleer of deze al is ingeschakeld?"

In plaats van te googelen naar modules of rond te vragen, kan de AI Drupal.org doorzoeken, opties vergelijken en aanbevelingen doen op basis van uw specifieke setup.

Tips om het meeste uit Drupal Scout te halen

1. Stel eerst brede vragen

In plaats van direct in de implementatie te duiken, vraagt u Drupal Scout om te controleren wat er bestaat:

  • In plaats van: "Maak een view die recente artikelen toont"
  • Probeer: "Hebben we views die artikelen tonen?"

Misschien ontdekt u dat u al hebt wat u nodig heeft.

2. Laat de AI de tools gebruiken

U hoeft niet te specificeren welke MCP-tool u wilt gebruiken. Stel gewoon natuurlijke vragen:

  • "Welke velden zitten er op het artikelcontenttype?"
  • "Kan ik deze module veilig verwijderen?"
  • "Zijn er recente fouten in de logs?"

De AI weet welke tool hij moet aanroepen op basis van uw vraag.

3. Combineer analyse met actie

Drupal Scout biedt alleen-lezen analyse. Wanneer u wijzigingen moet aanbrengen, kan de AI die informatie gebruiken om commando's veilig uit te voeren:

U: "Ruim ongebruikte modules op"
AI: Gebruik van drupal-scout find_unused_contrib()
Resultaat: 3 geïnstalleerde maar ongebruikte modules gevonden: devel, kint, admin_toolbar_tools

AI: "Ik heb 3 ongebruikte modules gevonden. Moet ik ze verwijderen?"
U: "Ja" AI: Uitvoeren: drush pmu devel kint admin_toolbar_tools
AI: Uitvoeren: composer remove drupal/devel drupal/kint drupal/admin_toolbar_tools
AI: Gebruik van drupal-scout reindex_modules()

De AI gebruikt Drupal Scout voor analyse en voert vervolgens de nodige commando's uit om wijzigingen aan te brengen.

Hoe werkt MCP eigenlijk?

U vraagt zich misschien af: "Hoe weet de AI wanneer hij Drupal Scout moet gebruiken?" Goede vraag! Dit begrijpen helpt u inzien waarom MCP zo krachtig is.

De toolbeschrijving is de handleiding van de AI

Wanneer Drupal Scout verbinding maakt met uw AI-assistent, biedt het niet alleen functies - het biedt documentatie over die functies. Elke tool heeft een beschrijving die de AI vertelt:

  • Wat de tool doet
  • Wanneer deze te gebruiken
  • Welke parameters deze accepteert
  • Wat voor soort resultaten deze teruggeeft

De get_field_info tool heeft bijvoorbeeld een beschrijving als:

Haal uitgebreide informatie op over Drupal-velden.

**GEBRUIK DEZE TOOL** voor vragen over velden, waar ze gebruikt worden,
veldtypen en datastructuur.

Voorbeelden:
• "Welke velden heeft het artikelcontenttype?"
• "Waar wordt field_image gebruikt?"
• "Hebben we een telefoonnummerveld?"

Deze beschrijving wordt onderdeel van de kennis van de AI. Wanneer u vraagt "Welke velden zitten er op mijn artikelcontenttype?", herkent de AI dit patroon en roept de juiste tool aan.

De conversatiestroom

Dit is wat er daadwerkelijk gebeurt wanneer u met Drupal Scout communiceert:

  1. U vraagt: "Welke velden heeft mijn artikelcontenttype?"
  2. AI denkt: "Dit is een vraag over velden. Ik heb get_field_info hiervoor."
  3. AI roept tool aan: get_field_info(...)
  4. MCP-server voert uit: Voert drush-commando's uit, parseert configuraties, analyseert gebruik
  5. MCP retourneert gegevens: "Veldenoverzicht (15 velden gevonden)..."
  6. AI formatteert antwoord: "Ik heb 15 velden gevonden op uw node-entiteitstypen..."

Het mooie is dat u stappen 2-5 nooit ziet. U krijgt gewoon het antwoord.

Waarom dit beter is dan traditioneel prompten

Zonder MCP zou u de AI precies moeten vertellen wat hij moet doen:

U: "Voer drush field-list uit, voer dan voor elk veld drush config:get uit,
parseer vervolgens de YAML en vertel me welke telefoonvelden zijn"

Met MCP vraagt u gewoon op een natuurlijke manier:

U: "Hebben we een telefoonveld?"

De toolbeschrijvingen hebben de AI geleerd hoe hij Drupal-specifieke vragen moet afhandelen. U hoeft geen drush-expert te zijn - de MCP-server is dat al.

Het is declaratief, niet imperatief

Hier is een belangrijk inzicht: MCP-toolbeschrijvingen zijn declaratief (beschrijven wat er is) in plaats van imperatief (specifieke acties afdwingen).

Dit betekent:

  • De MCP overschrijft uw prompts niet
  • Het vertelt de AI welke mogelijkheden beschikbaar zijn
  • De AI beslist nog steeds wanneer en hoe hij deze gebruikt
  • U behoudt volledige controle via natuurlijk gesprek

Zie het als het geven van een gespecialiseerde gereedschapskist aan de AI. U vertelt hem nog steeds wat hij moet bouwen, maar nu heeft hij betere gereedschappen om mee te bouwen.

Wat Scout kan analyseren

Drupal Scout biedt diepgaande analyse van uw gehele Drupal-installatie met meer dan 23 gespecialiseerde tools:

Modules & Afhankelijkheden (8 tools):

  • Zoek functionaliteit in custom en contrib modules
  • Lijst alle modules met mogelijkheden en hook-implementaties
  • Krijg gedetailleerde module-informatie (services, routes, klassen, hooks)
  • Analyseer afhankelijkheden (voorwaarts, achterwaarts, circulair)
  • Vind ongebruikte contrib modules (met installatiestatus)
  • Controleer redundantie voordat nieuwe functies worden gebouwd
  • Vind alle implementaties van een specifieke Drupal hook
  • Forceer herindexering wanneer modules veranderen

Entiteiten, Velden & Content (meerdere tools):

  • Volledige entiteitsstructuur met bundelinformatie
  • Uitgebreide veldanalyse met gebruiksregistratie
  • Entiteitsverwijzingen die tonen waar content wordt gebruikt
  • Weergaveconfiguraties voor view modes
  • Zoek entiteiten op basis van elke veldwaarde
  • Krijg entiteitsinformatie op basis van ID of pad

Views Analyse (1 tool):

  • Lijst alle views met weergaven (page, block, feed, etc.)
  • Weergavepaden en instellingen
  • Filters, sorteringen en relaties
  • Velden die worden weergegeven
  • Filteren op entiteitstype

Taxonomie (2 tools):

  • Alle vocabulaire met termtellingen en verwijzende velden
  • Volledige termhiërarchieën (ouder/kind relaties)
  • Gedetailleerde gebruiksanalyse (content, views, velden)
  • Veilig-te-verwijderen beoordeling met waarschuwingen
  • Bulk analyse van volledige taxonomieën (geoptimaliseerd voor grote datasets)
  • Exporteer taxonomiegegevens naar CSV/Excel

Beveiligingsscanning (11 tools):

  • Detectie van SQL-injectiekwetsbaarheden
  • Cross-Site Scripting (XSS) controles
  • Analyse van CSRF-beveiliging
  • Detectie van command-injectie
  • Kwetsbaarheden voor padtraversals
  • Vastgecodeerde geheimen en API-sleutels
  • Problemen met toegangscontrole
  • Gebruik van verouderde API's
  • Anonieme exploits (extern exploiteerbaar)
  • Beveiligingsaudit (uitgebreid rapport)
  • Verificatiegidsen (hoe bevindingen handmatig te verifiëren)

Code Analyse (4 tools):

  • Lees modulebestanden met slimme chunking voor grote bestanden
  • Lijst bestanden in modules met grootte-informatie
  • Visualisatie van de moduledirectorystructuur
  • Extraheer specifieke PHP-functies uit bestanden

Drupal.org Integratie (5 tools):

  • Zoek naar modules op Drupal.org
  • Krijg populaire modules per categorie
  • Moduleaanbevelingen op basis van behoeften
  • Gedetailleerde module-informatie met issue queue
  • Zoek in module-issuequeues naar problemen

Systeemgezondheid & Monitoring (5 tools):

  • Watchdog-logs met foutpatronen en diagnostiek
  • Verificatie van databaseverbinding
  • Beschikbare updates voor core en contrib
  • Volledig statusrapport (equivalent van /admin/reports/status)
  • Status van configuratiesynchronisatie

Alle 23+ tools werken naadloos samen. De AI-assistent weet automatisch welke tool hij moet gebruiken op basis van uw vraag.

Bronnen

Blijf op de hoogte

Ontvang de nieuwste berichten en inzichten in je inbox.

Unsubscribe anytime. No spam, ever.