WordPress MCP Adapter avec DDEV et Bedrock : tutoriel Claude Code


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

OutilVersion minimale
DDEV1.23+
Bedrockdernière version stable
WordPress (via Bedrock)6.8+
PHP7.4+ (8.2 recommandé)
WP-CLIdisponible via ddev wp
Claude Codedernière version
Node.js18+ (machine hôte)
Composer2+

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> : le name: 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

PointWordPress classiqueDDEV + Bedrock
Installation pluginUpload ZIP dans wp-adminddev composer require --dev
Commande WP-CLIwpddev wp
Personnalisationsfunctions.phpmu-plugin dans web/app/mu-plugins/
Variables de configwp-config.php.env + config/application.php
Config MCPclaude_desktop_config.jsonclaude mcp add-json --scope user

Adapté du tutoriel de Fabrice Ducarme – wpformation.com pour un environnement DDEV + Bedrock avec Claude Code.