Le plugin officiel WordPress MCP Adapter est sorti il y a un peu moins d’un an maintenant. L’idée : permettre à Claude Code d’interagir directement avec votre site WordPress local – créer des brouillons, lire la configuration, interroger les contenus – en langage naturel, sans ouvrir wp-admin. Le tutoriel de référence existe pour une installation WordPress classique. Voici l’adaptation pour un environnement DDEV + Bedrock.
Merci à Fabrice Ducarme (wpformation.com) dont le guide original a servi de base à cette adaptation.
Prérequis
| Outil | Version minimale |
|---|---|
| DDEV | 1.23+ |
| Bedrock | dernière version stable |
| WordPress (via Bedrock) | 6.8+ |
| PHP | 7.4+ (8.2 recommandé) |
| WP-CLI | disponible via ddev wp |
| Claude Code | dernière version |
| Node.js | 18+ (machine hôte) |
| Composer | 2+ |
Rappel : architecture DDEV + Bedrock
Bedrock réorganise l’arborescence WordPress. Ce qu’il faut retenir pour ce tuto :
mon-projet/
├── .ddev/ # Configuration DDEV
├── config/ # Configuration WordPress
├── web/ # Racine web (DocumentRoot)
│ ├── app/
│ │ ├── mu-plugins/ # Chargés automatiquement - c'est ici qu'on travaille
│ │ ├── plugins/ # Plugins installés via Composer
│ │ └── themes/
│ └── wp/ # Core WordPress - ne pas toucher
├── .env
└── composer.json
Étape 1 – Installer le MCP Adapter via Composer
Dans Bedrock, on n’uploade pas de ZIP dans wp-admin. Le MCP Adapter est un package officiel WordPress disponible directement sous wordpress/mcp-adapter – pas besoin de passer par WPackagist ou WP Packages.
On l’installe en dépendance de développement uniquement – il ne doit jamais partir en production :
ddev composer require --dev wordpress/mcp-adapter
Vérifiez que le plugin est bien dans web/app/plugins/ :
ls web/app/plugins/ | grep mcp
# → mcp-adapter
Le plugin gère ses propres dépendances Composer séparément. Sans cette étape, WordPress affiche l’erreur « MCP Adapter: The Composer autoloader was not found. » :
ddev composer install --working-dir=web/app/plugins/mcp-adapter
Puis activez le plugin :
ddev wp plugin activate mcp-adapter
ddev wp plugin list | grep mcp
Étape 2 – Exposer les Abilities WordPress à MCP
Par défaut, aucune Ability n’est accessible. Il faut les déclarer explicitement. Dans Bedrock, on le fait dans un mu-plugin – pas dans functions.php. Les mu-plugins se chargent avant tous les plugins, ce qui garantit que le filtre est enregistré avant l’initialisation de l’Abilities API.
Créez web/app/mu-plugins/mcp-abilities.php :
<?php
/**
* Plugin Name: MCP Abilities Config
* Description: Expose les Abilities WordPress au serveur MCP local (DDEV).
*/
add_filter( 'wp_register_ability_args', function( $args, $name ) {
$public_abilities = [
'core/get-site-info',
'core/get-user-info',
'core/get-environment-info',
];
if ( in_array( $name, $public_abilities, true ) ) {
$args['meta']['mcp']['public'] = true;
}
return $args;
}, 10, 2 );
Vérifiez que l’Ability est bien enregistrée :
ddev wp eval "echo json_encode( wp_get_registered_abilities() );" | python3 -m json.tool | grep get-site
Étape 3 – Enregistrer le serveur MCP dans Claude Code
Claude Code gère les serveurs MCP en ligne de commande – pas de fichier claude_desktop_config.json à éditer, pas de fichier à gitignorer. On utilise le scope user pour que le serveur soit disponible sur tous les projets :
claude mcp add-json <slug-ddev> --scope user
'{"command":"ddev","args":["wp","mcp-adapter","serve","--server=mcp-adapter-default-server","--user=<wp-username>"]}'
<slug-ddev>: lename:défini dans.ddev/config.yaml--user=<wp-username>: l’utilisateur WordPress qui exécutera les actions MCP
Vérifiez que le serveur est enregistré :
claude mcp list
Étape 4 – Tester
ddev start
claude
Dans Claude Code, tapez :
Quelles sont les informations de mon site WordPress ?
Claude appelle core/get-site-info et retourne le nom du site, l’URL, la version WordPress, le thème actif. Si vous obtenez une réponse – tout fonctionne.
Débogage : problèmes courants
wp: command not found – Claude Code ne trouve pas ddev car son PATH diffère de celui de votre terminal. Utilisez le chemin absolu :
which ddev
# Exemple : /usr/local/bin/ddev
claude mcp add-json <slug-ddev> --scope user
'{"command":"/usr/local/bin/ddev","args":["wp","mcp-adapter","serve","--server=mcp-adapter-default-server","--user=<wp-username>"]}'
« MCP Adapter: The Composer autoloader was not found » – les dépendances internes du plugin ne sont pas installées :
ddev composer install --working-dir=web/app/plugins/mcp-adapter
DDEV est arrêté au démarrage de Claude Code – Claude Code lance le serveur MCP à la demande. Si DDEV n’est pas démarré, la connexion échoue. Pensez à lancer ddev start avant claude.
Aller plus loin : une Ability personnalisée
Les Abilities permettent d’exposer n’importe quelle fonction PHP à Claude. Exemple – lister les Custom Post Types enregistrés sur le site, à ajouter dans le mu-plugin :
add_action( 'wp_abilities_api_init', function() {
wp_register_ability( 'monsite/list-post-types', [
'label' => 'Liste des Custom Post Types',
'description' => 'Retourne tous les CPT enregistrés sur le site',
'input_schema' => [ 'type' => 'object', 'properties' => [] ],
'execute_callback' => function( $input ) {
$post_types = get_post_types( [ 'public' => true ], 'objects' );
return array_map( function( $pt ) {
return [ 'name' => $pt->name, 'label' => $pt->label ];
}, $post_types );
},
'permission_callback' => function() {
return current_user_can( 'edit_posts' );
},
'meta' => [ 'mcp' => [ 'public' => true ] ],
] );
} );
Puis dans Claude Code :
Quels Custom Post Types sont enregistrés sur mon site ?
Ce qui diffère d’une installation WordPress classique
| Point | WordPress classique | DDEV + Bedrock |
|---|---|---|
| Installation plugin | Upload ZIP dans wp-admin | ddev composer require --dev |
| Commande WP-CLI | wp | ddev wp |
| Personnalisations | functions.php | mu-plugin dans web/app/mu-plugins/ |
| Variables de config | wp-config.php | .env + config/application.php |
| Config MCP | claude_desktop_config.json | claude mcp add-json --scope user |
Adapté du tutoriel de Fabrice Ducarme – wpformation.com pour un environnement DDEV + Bedrock avec Claude Code.