Come gestire più siti Drupal con un unico server MCP
Il problema del cambio di contesto
Lavoro su alcuni siti Drupal. Ogni volta che passo da uno all'altro, c'è questo sovraccarico mentale: Quali moduli ha questo? Quali campi ha il tipo di contenuto articolo? Devo recuperare alcuni dati dal database per visualizzarli. Dovrei creare una nuova vista o ne esiste già una?
Anche con assistenti AI come Claude Code, Cursor o Windsurf, ottenere risposte significava aspettare che eseguissero sequenzialmente diversi comandi drush, mettendo insieme frammenti di informazioni. Così ho costruito Drupal Scout, un server MCP che fornisce agli assistenti AI una conoscenza istantanea e completa del tuo sito Drupal. È open source su GitHub. Scout è in sola lettura. Analizza il tuo sito ma non modifica mai il tuo database o i file.
Senza Scout, la tua IA esegue comandi come questo:
AI: Esecuzione di drush field:list node article...
AI: Esecuzione di drush config:get field.field.node.article.field_image...
AI: Esecuzione di drush config:get field.field.node.article.field_category...
# ...e così via, attendendo tra un comando e l'altroCon Scout, devi solo chiedere: "Quali campi ha il tipo di contenuto articolo?"
Una chiamata. Risposta istantanea. Tutto incrociato. Questo consente di risparmiare il 70-90% dei token rispetto all'esecuzione sequenziale dei comandi, e la tua IA risponde istantaneamente invece di attendere più operazioni drush.
Il trucco multi-progetto
Ecco cosa ho imparato: puoi usare lo stesso server MCP per tutti i tuoi progetti. Ognuno ottiene il proprio contesto automaticamente.
Quando l'ho capito, tutto è cambiato. Niente più cambi di configurazione. Niente più dubbi su quale sito sto guardando. L'IA lo sa e basta.
Come funziona
Drupal Scout cerca un file config.json nella directory del tuo progetto. Quando sei nel progetto A, legge la configurazione di A. Passi al progetto B? Legge la configurazione di B. Semplice.
Il server MCP risiede in un unico posto (io tengo il mio in ~/.local/drupal-scout-mcp), ma ogni progetto gli dice quale installazione Drupal indicizzare.
Configurazione
Installa Drupal Scout una volta:
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.txtQuindi, in ogni progetto Drupal, inserisci due file nella root:
config.json (dice a Scout dove si trova il tuo Drupal):
{
"drupal_root": "/percorso/al/tuo/drupal",
"modules_path": "web/modules"
}.claude.json (collega il server MCP):
claude mcp add --transport stdio drupal-scout -- \
~/.local/drupal-scout-mcp/venv/bin/python \
~/.local/drupal-scout-mcp/server.pyQuesto è tutto. Quando entri in quel progetto e inizi a programmare, Scout indicizza quei moduli. Cambi progetto? Indica i nuovi.
Cosa può fare Drupal Scout?
Ora che l'hai configurato, cosa puoi effettivamente farci? Ti mostro alcuni esempi reali.
Analisi di campi e tipi di contenuto
Tu: "Devo aggiungere un campo telefono al tipo di contenuto staff"
AI: Lascia che controlli se esiste già un campo telefono...
AI: Utilizzo drupal-scout get_field_info(field_name="phone")
Risultato: Trovati 2 campi telefono:
• Numero di Telefono (field_phone_number) Tipo: telephone, Usato in: contact, vendor
• Telefono Cellulare (field_mobile_phone) Tipo: telephone, Usato in: employee
AI: "Puoi riutilizzare field_phone_number sul tipo di contenuto staff!"Questo ti ha evitato di creare un campo duplicato con un nome diverso. Una singola query ti ha mostrato tutti i campi relativi al telefono e dove sono utilizzati.
Ricerca di viste e display
Tu: "Abbiamo delle viste che mostrano dati utente?"
AI: Utilizzo drupal-scout get_views_summary(entity_type="users")
Risultato: Trovate 2 viste:
• Elenco Utenti (user_list) Display: page, block
• Directory Staff (staff_directory) Display: page, block
AI: "Sì! La vista Directory Staff esiste già con filtri per dipartimento e ruolo."Invece di creare una nuova vista, hai scoperto una vista esistente che fa quello che ti serve.
Pulizia dei termini di tassonomia
Tu: "Posso eliminare in sicurezza il termine 'Vecchia Categoria'?"
AI: Utilizzo drupal-scout get_taxonomy_info(term_name="Old Category")
Risultato: Termine: Vecchia Categoria (tid: 75)
Utilizzo: 0 elementi di contenuto, 0 viste
Figli: Nessuno
SICURO DA ELIMINARE - Questo termine non è utilizzato da nessuna parte.
AI: "Sì, è sicuro eliminarlo. Il termine non è utilizzato in nessun contenuto o vista."Ora prova a chiedere di un termine che è utilizzato:
Tu: "E il termine 'Tecnologia'?"
AI: Utilizzo drupal-scout get_taxonomy_info(term_name="Technology")
Risultato: Termine: Tecnologia (tid: 42)
Utilizzo: 87 elementi di contenuto
Figli: AI/ML, Sviluppo Web
Esempi di contenuto:
• Come l'IA sta Cambiando lo Sviluppo (nid: 123)
• Tendenze Tecnologiche 2024 (nid: 156)
... e altri 84
ATTENZIONE: Ha termini figli (2 figli diventeranno orfani)
ATTENZIONE: Utilizzato in 87 elementi di contenuto
AI: "Questo termine è molto utilizzato. Eliminarlo influenzerebbe 87 articoli e renderebbe orfani 2 termini figli. Considera invece di unire."Questa analisi avrebbe richiesto decine di comandi drush e query di database. Drupal Scout l'ha fatto in una sola chiamata.
Debug con i log di watchdog
Tu: "Il sito mostra errori, puoi controllare cosa non va?"
AI: Utilizzo drupal-scout get_watchdog_logs()
Risultato: Trovati 12 errori PHP:
[2024-01-15 14:32:21] Chiave array non definita 'field_category'
Posizione: /modules/custom/custom_module/custom_module.module:45
[2024-01-15 14:30:15] Chiamata a metodo non definito getCategory()
Posizione: /modules/custom/custom_module/src/Service/CategoryService.php:78
AI: "Ho trovato due errori correlati in custom_module. Lascia che legga quei file e li corregga..."L'IA può immediatamente saltare ai file problematici e suggerire correzioni.
Ottenere consigli sui moduli
Ecco qualcosa che trovo davvero utile: Drupal Scout può cercare nell'API di Drupal.org e consigliare moduli in base a ciò che stai cercando di fare.
Tu: "Ho bisogno di un modo per gestire il flusso di lavoro e la moderazione dei contenuti"
AI: Utilizzo drupal-scout search_drupal_modules(keyword="workflow")
Risultato: Moduli pertinenti trovati:
• Workbench Moderation - Fornisce flusso di lavoro editoriale per i contenuti
• Content Moderation - Soluzione di flusso di lavoro core per Drupal 8+
• Workflow - Gestione flessibile del flusso di lavoro dei contenuti
AI: "In base alla tua versione di Drupal e alle tue esigenze, consiglio Content Moderation poiché è nel core per Drupal 8+. Vuoi che controlli se è già abilitato?"Invece di cercare su Google i moduli o chiedere in giro, l'IA può cercare su Drupal.org, confrontare le opzioni e fornire consigli basati sulla tua configurazione specifica.
Suggerimenti per ottenere il massimo da Drupal Scout
1. Inizia con domande ampie
Invece di addentrarti nell'implementazione, chiedi a Drupal Scout di controllare cosa esiste:
- Invece di: "Crea una vista che mostri gli articoli recenti"
- Prova: "Abbiamo qualche vista che mostra articoli?"
Potresti scoprire di avere già quello che ti serve.
2. Lascia che l'IA utilizzi gli strumenti
Non è necessario specificare quale strumento MCP utilizzare. Fai semplicemente domande naturali:
- "Quali campi ha il tipo di contenuto articolo?"
- "Posso eliminare in sicurezza questo modulo?"
- "Ci sono errori recenti nei log?"
L'IA sa quale strumento chiamare in base alla tua domanda.
3. Combina analisi e azione
Drupal Scout fornisce analisi in sola lettura. Quando devi apportare modifiche, l'IA può utilizzare tali informazioni per eseguire comandi in sicurezza:
Tu: "Pulisci i moduli non utilizzati"
AI: Utilizzo drupal-scout find_unused_contrib()
Risultato: Trovati 3 moduli contrib installati ma non utilizzati: devel, kint, admin_toolbar_tools
AI: "Ho trovato 3 moduli non utilizzati. Vuoi disinstallarli?"
Tu: "Sì"
AI: Esecuzione di: drush pmu devel kint admin_toolbar_tools
AI: Esecuzione di: composer remove drupal/devel drupal/kint drupal/admin_toolbar_tools
AI: Utilizzo drupal-scout reindex_modules()L'IA utilizza Drupal Scout per l'analisi, quindi esegue i comandi necessari per apportare modifiche.
Come funziona effettivamente MCP?
Potresti chiederti: "Come fa l'IA a sapere quando usare Drupal Scout?" Ottima domanda! Capire questo ti aiuta ad apprezzare quanto sia potente MCP.
La descrizione dello strumento è il manuale di istruzioni dell'IA
Quando Drupal Scout si connette al tuo assistente AI, non fornisce solo funzioni: fornisce la documentazione su tali funzioni. Ogni strumento ha una descrizione che dice all'IA:
- Cosa fa lo strumento
- Quando usarlo
- Quali parametri accetta
- Che tipo di risultati restituisce
Ad esempio, lo strumento get_field_info ha una descrizione simile a:
Ottieni informazioni complete sui campi Drupal.
**USA QUESTO STRUMENTO** per domande su campi, dove sono utilizzati,
tipi di campo e struttura dati.
Esempi:
• "Quali campi ha il tipo di contenuto articolo?"
• "Dove viene utilizzato field_image?"
• "Abbiamo un campo telefono?"Questa descrizione diventa parte della conoscenza dell'IA. Quando chiedi "Quali campi ha il mio tipo di contenuto articolo?", l'IA riconosce che corrisponde al modello e chiama lo strumento appropriato.
Il flusso della conversazione
Ecco cosa succede realmente quando interagisci con Drupal Scout:
- Tu chiedi: "Quali campi ha il mio tipo di contenuto articolo?"
- L'IA pensa: "Questa è una domanda sui campi. Ho get_field_info per questo."
- L'IA chiama lo strumento:
get_field_info(...) - Il server MCP esegue: Esegue comandi drush, analizza configurazioni, analizza l'utilizzo
- MCP restituisce i dati: "Riepilogo campi (15 campi trovati)..."
- L'IA formatta la risposta: "Ho trovato 15 campi nei tipi di entità nodo..."
Il bello è che tu non vedi mai i passaggi 2-5. Ottieni solo la risposta.
Perché questo è meglio del prompting tradizionale
Senza MCP, dovresti dire all'IA esattamente cosa fare:
Tu: "Esegui drush field-list, poi per ogni campo esegui drush config:get,
poi analizza lo YAML e dimmi quali sono i campi telefono"Con MCP, chiedi semplicemente in modo naturale:
Tu: "Abbiamo un campo telefono?"Le descrizioni degli strumenti hanno insegnato all'IA come gestire le domande specifiche di Drupal. Non devi essere un esperto di drush: il server MCP lo è già.
È dichiarativo, non imperativo
Ecco un'intuizione chiave: le descrizioni degli strumenti MCP sono dichiarative (descrivono ciò che esiste) piuttosto che imperative (forzano azioni specifiche).
Questo significa:
- L'MCP non sovrascrive i tuoi prompt
- Dice all'IA quali capacità sono disponibili
- L'IA decide ancora quando e come usarle
- Mantieni il pieno controllo attraverso la conversazione naturale
Pensala come dare all'IA una cassetta degli attrezzi specializzata. Sei ancora tu a dirle cosa costruire, ma ora ha strumenti migliori per costruirlo.
Cosa può analizzare Scout
Drupal Scout fornisce analisi approfondite su tutta la tua installazione Drupal con oltre 23 strumenti specializzati:
Moduli e Dipendenze (8 strumenti):
- Cerca funzionalità tra moduli custom e contrib
- Elenca tutti i moduli con capacità e implementazioni di hook
- Ottieni informazioni dettagliate sui moduli (servizi, rotte, classi, hook)
- Analizza le dipendenze (in avanti, inverse, circolari)
- Trova moduli contrib non utilizzati (con stato di installazione)
- Verifica la ridondanza prima di costruire nuove funzionalità
- Trova tutte le implementazioni di uno specifico hook Drupal
- Forza il reindicizzazione quando i moduli cambiano
Entità, Campi e Contenuto (più strumenti):
- Struttura completa delle entità con informazioni sui bundle
- Analisi completa dei campi con tracciamento dell'utilizzo
- Riferimenti alle entità che mostrano dove viene utilizzato il contenuto
- Configurazioni di visualizzazione per le modalità di visualizzazione (view modes)
- Cerca entità in base a qualsiasi valore di campo
- Ottieni informazioni sull'entità tramite ID o percorso
Analisi delle Viste (1 strumento):
- Elenca tutte le viste con display (page, block, feed, ecc.)
- Percorsi e impostazioni di visualizzazione
- Filtri, ordinamenti e relazioni
- Campi visualizzati
- Filtra per tipo di entità
Tassonomia (2 strumenti):
- Tutti i vocabolari con conteggio dei termini e campi di riferimento
- Gerarchie complete dei termini (relazioni genitore/figlio)
- Analisi dettagliata dell'utilizzo (contenuto, viste, campi)
- Valutazione di sicurezza per l'eliminazione con avvisi
- Analisi in blocco di interi vocabolari (ottimizzata per grandi set di dati)
- Esporta dati di tassonomia in CSV/Excel
Scansione di Sicurezza (11 strumenti):
- Rilevamento di vulnerabilità di SQL injection
- Controlli Cross-Site Scripting (XSS)
- Analisi della protezione CSRF
- Rilevamento di Command Injection
- Vulnerabilità di Path Traversal
- Segreti e chiavi API codificati in modo fisso (hardcoded)
- Problemi di controllo degli accessi
- Utilizzo di API deprecate
- Exploit anonimi (sfruttabili da remoto)
- Audit di sicurezza (report completo)
- Guide di verifica (come verificare manualmente i risultati)
Analisi del Codice (4 strumenti):
- Lettura dei file dei moduli con suddivisione intelligente per file di grandi dimensioni
- Elenca i file nei moduli con informazioni sulle dimensioni
- Visualizzazione ad albero della directory dei moduli
- Estrai specifiche funzioni PHP dai file
Integrazione Drupal.org (5 strumenti):
- Cerca moduli su Drupal.org
- Ottieni moduli popolari per categoria
- Consigli sui moduli basati sulle esigenze
- Informazioni dettagliate sui moduli con coda dei problemi (issue queue)
- Cerca nelle code dei problemi dei moduli per problemi
Stato e Monitoraggio del Sistema (5 strumenti):
- Log di Watchdog con pattern di errore e diagnostica
- Verifica della connettività del database
- Aggiornamenti disponibili per core e contrib
- Report di stato completo (equivalente di /admin/reports/status)
- Stato della sincronizzazione della configurazione
Tutti i 23+ strumenti lavorano insieme senza problemi. L'assistente AI sa automaticamente quale strumento utilizzare in base alla tua domanda.