Retour au blog

Comment gérer plusieurs sites Drupal avec un seul serveur MCP

2025-10-258 min read

Le problème du changement de contexte

Je travaille sur plusieurs sites Drupal. Chaque fois que je passe de l'un à l'autre, il y a cette surcharge mentale : Quels modules celui-ci possède-t-il ? Quels champs possède le type de contenu article ? Je dois extraire des données de la base de données pour les afficher. Dois-je créer une nouvelle vue, ou en existe-t-il déjà une ?

Même avec des assistants IA comme Claude Code, Cursor ou Windsurf, obtenir des réponses nécessitait d'attendre qu'ils exécutent séquentiellement plusieurs commandes drush, rassemblant des fragments d'information. J'ai donc créé Drupal Scout, un serveur MCP qui donne aux assistants IA une connaissance instantanée et complète de votre site Drupal. Il est open source sur GitHub. Scout est en lecture seule. Il analyse votre site mais ne modifie jamais votre base de données ou vos fichiers.

Sans Scout, votre IA exécute des commandes comme celle-ci :

IA : Exécution de drush field:list node article...
IA : Exécution de drush config:get field.field.node.article.field_image...
IA : Exécution de drush config:get field.field.node.article.field_category...
# ... et ainsi de suite, en attendant entre chaque commande

Avec Scout, vous demandez simplement : « Quels champs possède le type de contenu article ? »

Un seul appel. Réponse instantanée. Tout est croisé. Cela permet d'économiser 70 à 90 % des jetons par rapport à l'exécution séquentielle des commandes, et votre IA répond instantanément au lieu d'attendre plusieurs opérations drush.

L'astuce multi-projets

Voici ce que j'ai appris : vous pouvez utiliser le même serveur MCP pour tous vos projets. Chacun obtient son propre contexte automatiquement.

Lorsque j'ai découvert cela, tout a changé. Fini le changement de configurations. Fini de se demander quel site on est en train de regarder. L'IA sait tout simplement.

Comment ça marche

Drupal Scout recherche un fichier config.json dans le répertoire de votre projet. Lorsque vous êtes dans le projet A, il lit la configuration de A. Vous passez au projet B ? Il lit la configuration de B. Simple.

Le serveur MCP lui-même réside à un seul endroit (je garde le mien dans ~/.local/drupal-scout-mcp), mais chaque projet lui indique quelle installation Drupal indexer.

Configuration

Installez Drupal Scout une seule fois :

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

Ensuite, dans chaque projet Drupal, placez deux fichiers à la racine :

config.json (indique à Scout où se trouve votre Drupal) :

{
"drupal_root": "/chemin/vers/votre/drupal",
"modules_path": "web/modules"
}

.claude.json (connecte le serveur MCP) :

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

C'est tout. Lorsque vous vous déplacez dans ce répertoire et commencez à coder, Scout indexe ces modules. Vous changez de projet ? Il indexe les nouveaux.

Que peut faire Drupal Scout ?

Maintenant que vous l'avez configuré, qu'est-ce que vous pouvez réellement en faire ? Laissez-moi vous montrer quelques exemples concrets.

Analyse des champs et des types de contenu

Vous : « Je dois ajouter un champ numéro de téléphone au type de contenu 'personnel' »
IA : Laissez-moi vérifier si un champ de téléphone existe déjà...
IA : Utilisation de drupal-scout get_field_info(field_name="phone")

Résultat : 2 champs de téléphone trouvés :
• Numéro de téléphone (field_phone_number) Type : telephone, Utilisé dans : contact, fournisseur
• Téléphone portable (field_mobile_phone) Type : telephone, Utilisé dans : employee

IA : « Vous pouvez réutiliser field_phone_number sur le type de contenu personnel ! »

Cela vous a évité de créer un champ dupliqué avec un nom différent. Une seule requête vous a montré tous les champs liés au téléphone et où ils sont utilisés.

Recherche de vues et d'affichages

Vous : « Avons-nous des vues qui affichent des données utilisateur ? »
IA : Utilisation de drupal-scout get_views_summary(entity_type="users")

Résultat : 2 vues trouvées :
• Liste des utilisateurs (user_list) Affichages : page, bloc
• Annuaire du personnel (staff_directory) Affichages : page, bloc

IA : « Oui ! La vue Annuaire du personnel existe déjà avec des filtres par département et rôle. »

Au lieu de créer une nouvelle vue, vous avez découvert une vue existante qui fait ce dont vous avez besoin.

Nettoyage des termes de taxonomie

Vous : « Puis-je supprimer en toute sécurité le terme 'Ancienne Catégorie' ? »
IA : Utilisation de drupal-scout get_taxonomy_info(term_name="Old Category")

Résultat : Terme : Ancienne Catégorie (tid: 75)
Utilisation : 0 éléments de contenu, 0 vues
Enfants : Aucun

SUPPRIMABLE EN TOUTE SÉCURITÉ - Ce terme n'est utilisé nulle part.

IA : « Oui, vous pouvez le supprimer en toute sécurité. Le terme n'est utilisé dans aucun contenu ni aucune vue. »

Essayez maintenant de demander un terme qui est utilisé :

Vous : « Qu'en est-il du terme 'Technologie' ? »
IA : Utilisation de drupal-scout get_taxonomy_info(term_name="Technology")

Résultat : Terme : Technologie (tid: 42)
Utilisation : 87 éléments de contenu
Enfants : IA/ML, Développement Web
Exemples de contenu :
• Comment l'IA change le développement (nid: 123)
• Tendances Tech 2024 (nid: 156)
... et 84 autres

AVERTISSEMENT : Possède des termes enfants (2 enfants deviendront orphelins)
ATTENTION : Utilisé dans 87 éléments de contenu

IA : « Ce terme est fortement utilisé. Sa suppression affecterait 87 articles et laisserait 2 termes enfants orphelins. Envisagez plutôt une fusion. »

Cette analyse aurait nécessité des dizaines de commandes drush et de requêtes SQL. Drupal Scout l'a fait en un seul appel.

Débogage avec les journaux watchdog

Vous : « Le site affiche des erreurs, pouvez-vous vérifier ce qui ne va pas ? »
IA : Utilisation de drupal-scout get_watchdog_logs()

Résultat : 12 erreurs PHP trouvées :
[2024-01-15 14:32:21] Clé de tableau 'field_category' non définie
Emplacement : /modules/custom/custom_module/custom_module.module:45

[2024-01-15 14:30:15] Appel à la méthode non définie getCategory()
Emplacement : /modules/custom/custom_module/src/Service/CategoryService.php:78

IA : « J'ai trouvé deux erreurs liées dans custom_module. Laissez-moi lire ces fichiers et les corriger... »

L'IA peut immédiatement accéder aux fichiers problématiques et suggérer des corrections.

Obtenir des recommandations de modules

Voici quelque chose que je trouve vraiment utile : Drupal Scout peut interroger l'API Drupal.org et recommander des modules en fonction de ce que vous essayez de faire.

Vous : « J'ai besoin d'un moyen de gérer le flux de travail et la modération de contenu »
IA : Utilisation de drupal-scout search_drupal_modules(keyword="workflow")

Résultat : Modules pertinents trouvés :
• Workbench Moderation - Fournit un flux de travail éditorial pour le contenu
• Content Moderation - Solution de flux de travail de base pour Drupal 8+
• Workflow - Gestion flexible des flux de travail de contenu

IA : « En fonction de votre version de Drupal et de vos besoins, je recommande Content Moderation car il est inclus dans le noyau de Drupal 8+. Voulez-vous que je vérifie s'il est déjà activé ? »

Au lieu de chercher sur Google des modules ou de demander autour de vous, l'IA peut rechercher sur Drupal.org, comparer les options et faire des recommandations basées sur votre configuration spécifique.

Conseils pour tirer le meilleur parti de Drupal Scout

1. Posez d'abord des questions générales

Au lieu de plonger dans l'implémentation, demandez à Drupal Scout de vérifier ce qui existe :

  • Au lieu de : « Créez une vue affichant les articles récents »
  • Essayez : « Avons-nous des vues affichant des articles ? »

Vous pourriez découvrir que vous avez déjà ce dont vous avez besoin.

2. Laissez l'IA utiliser les outils

Vous n'avez pas besoin de spécifier quel outil MCP utiliser. Posez simplement des questions naturelles :

  • « Quels champs possède le type de contenu article ? »
  • « Puis-je supprimer ce module en toute sécurité ? »
  • « Y a-t-il des erreurs récentes dans les journaux ? »

L'IA sait quel outil appeler en fonction de votre question.

3. Combinez analyse et action

Drupal Scout fournit une analyse en lecture seule. Lorsque vous devez effectuer des modifications, l'IA peut utiliser ces informations pour exécuter des commandes en toute sécurité :

Vous : « Nettoyer les modules inutilisés »
IA : Utilisation de drupal-scout find_unused_contrib()
Résultat : 3 modules installés mais inutilisés trouvés : devel, kint, admin_toolbar_tools

IA : « J'ai trouvé 3 modules inutilisés. Voulez-vous les désinstaller ? »
Vous : « Oui »
IA : Exécution de : drush pmu devel kint admin_toolbar_tools
IA : Exécution de : composer remove drupal/devel drupal/kint drupal/admin_toolbar_tools
IA : Utilisation de drupal-scout reindex_modules()

L'IA utilise Drupal Scout pour l'analyse, puis exécute les commandes nécessaires pour effectuer les modifications.

Comment fonctionne réellement le MCP ?

Vous vous demandez peut-être : « Comment l'IA sait-elle quand utiliser Drupal Scout ? » Excellente question ! Comprendre cela vous aide à apprécier pourquoi le MCP est si puissant.

La description de l'outil est le manuel d'instructions de l'IA

Lorsque Drupal Scout se connecte à votre assistant IA, il ne fournit pas seulement des fonctions, il fournit de la documentation sur ces fonctions. Chaque outil possède une description qui indique à l'IA :

  • Ce que fait l'outil
  • Quand l'utiliser
  • Quels paramètres il accepte
  • Quel type de résultats il renvoie

Par exemple, l'outil get_field_info a une description similaire à :

Obtient des informations complètes sur les champs Drupal.

**UTILISEZ CET OUTIL** pour les questions concernant les champs, où ils sont utilisés,
les types de champs et la structure des données.

Exemples :
• « Quels champs le type de contenu article possède-t-il ? »
• « Où field_image est-il utilisé ? »
• « Avons-nous un champ de numéro de téléphone ? »

Cette description fait partie des connaissances de l'IA. Lorsque vous demandez « Quels champs possède mon type de contenu article ? », l'IA reconnaît que cela correspond au modèle et appelle l'outil approprié.

Le flux de conversation

Voici ce qui se passe réellement lorsque vous interagissez avec Drupal Scout :

  1. Vous demandez : « Quels champs possède mon type de contenu article ? »
  2. L'IA réfléchit : « C'est une question sur les champs. J'ai get_field_info pour cela. »
  3. L'IA appelle l'outil : get_field_info(...)
  4. Le serveur MCP exécute : Exécute les commandes drush, analyse les configurations, analyse l'utilisation
  5. Le MCP renvoie les données : « Résumé des champs (15 champs trouvés)... »
  6. L'IA formate la réponse : « J'ai trouvé 15 champs sur vos types d'entités node... »

La beauté réside dans le fait que vous ne voyez jamais les étapes 2 à 5. Vous obtenez simplement la réponse.

Pourquoi est-ce mieux que le « prompting » traditionnel

Sans MCP, vous devriez indiquer exactement à l'IA quoi faire :

Vous : « Exécute drush field-list, puis pour chaque champ exécute drush config:get,
puis analyse le YAML et dis-moi quels sont les champs de téléphone »

Avec MCP, vous demandez simplement naturellement :

Vous : « Avons-nous un champ de téléphone ? »

Les descriptions d'outils ont appris à l'IA comment gérer les questions spécifiques à Drupal. Vous n'avez pas besoin d'être un expert drush ; le serveur MCP l'est déjà.

C'est déclaratif, pas impératif

Voici une idée clé : les descriptions d'outils MCP sont déclaratives (décrivant ce qui existe) plutôt qu'impératives (forçant des actions spécifiques) :

Cela signifie :

  • Le MCP ne surcharge pas vos invites
  • Il indique à l'IA quelles capacités sont disponibles
  • L'IA décide toujours quand et comment les utiliser
  • Vous conservez le contrôle total grâce à une conversation naturelle

Considérez cela comme donner à l'IA une boîte à outils spécialisée. Vous lui dites toujours quoi construire, mais maintenant elle dispose de meilleurs outils pour le faire.

Ce que Scout peut analyser

Drupal Scout fournit une analyse approfondie de l'ensemble de votre installation Drupal grâce à plus de 23 outils spécialisés :

Modules et dépendances (8 outils) :

  • Rechercher des fonctionnalités dans les modules personnalisés et contrib
  • Lister tous les modules avec leurs capacités et implémentations de hooks
  • Obtenir des informations détaillées sur les modules (services, routes, classes, hooks)
  • Analyser les dépendances (avant, arrière, circulaires)
  • Trouver les modules contrib inutilisés (avec statut d'installation)
  • Vérifier la redondance avant de créer de nouvelles fonctionnalités
  • Trouver toutes les implémentations d'un hook Drupal spécifique
  • Forcer la réindexation lorsque les modules changent

Entités, champs et contenu (plusieurs outils) :

  • Structure complète des entités avec informations sur les bundles
  • Analyse complète des champs avec suivi d'utilisation
  • Références d'entités montrant où le contenu est utilisé
  • Configurations d'affichage pour les modes d'affichage
  • Rechercher des entités par n'importe quelle valeur de champ
  • Obtenir des informations sur l'entité par ID ou chemin

Analyse des vues (1 outil) :

  • Lister toutes les vues avec leurs affichages (page, bloc, flux, etc.)
  • Chemins d'affichage et paramètres
  • Filtres, tris et relations
  • Champs affichés
  • Filtrer par type d'entité

Taxonomie (2 outils) :

  • Tous les vocabulaires avec le nombre de termes et les champs référençant
  • Hiérarchies de termes complètes (relations parent/enfant)
  • Analyse d'utilisation détaillée (contenu, vues, champs)
  • Évaluation de la sécurité de suppression avec avertissements
  • Analyse en masse de vocabulaires entiers (optimisée pour les grands ensembles de données)
  • Exporter les données de taxonomie au format CSV/Excel

Analyse de sécurité (11 outils) :

  • Détection de vulnérabilités d'injection SQL
  • Vérifications de Cross-Site Scripting (XSS)
  • Analyse de la protection CSRF
  • Détection d'injection de commandes
  • Vulnérabilités de traversée de chemin
  • Secrets codés en dur et clés API
  • Problèmes de contrôle d'accès
  • Utilisation d'API obsolètes
  • Exploits anonymes (exploitable à distance)
  • Audit de sécurité (rapport complet)
  • Guides de vérification (comment vérifier manuellement les résultats)

Analyse de code (4 outils) :

  • Lire les fichiers de modules avec découpage intelligent pour les fichiers volumineux
  • Lister les fichiers dans les modules avec des informations de taille
  • Visualisation de l'arborescence des répertoires des modules
  • Extraire des fonctions PHP spécifiques des fichiers

Intégration Drupal.org (5 outils) :

  • Rechercher des modules sur Drupal.org
  • Obtenir les modules populaires par catégorie
  • Recommandations de modules basées sur les besoins
  • Informations détaillées sur les modules avec file d'attente de problèmes
  • Rechercher dans les files d'attente de problèmes des modules pour trouver des problèmes

Santé et surveillance du système (5 outils) :

  • Journaux Watchdog avec modèles d'erreurs et diagnostics
  • Vérification de la connectivité à la base de données
  • Mises à jour disponibles pour le noyau et contrib
  • Rapport d'état complet (équivalent de /admin/reports/status)
  • Statut de synchronisation de la configuration

Les plus de 23 outils fonctionnent ensemble de manière transparente. L'assistant IA sait automatiquement quel outil utiliser en fonction de votre question.

Ressources

Restez Informé

Recevez les derniers articles et insights dans votre boîte mail.

Unsubscribe anytime. No spam, ever.