Le WordPress d'aujourd'hui, décodé pour les développeurs

Elementor

MCP et Elementor : exposer un template à un agent IA, premiers essais 2025

Premier retour sur un serveur MCP minimal exposant la liste des templates d'un Kit Elementor à un assistant IA, avec ses limites actuelles.

Par WordPress Développement • 22 juin 2025 • 4 min de lecture • Aucun commentaire
MCP et Elementor : exposer un template à un agent IA, premiers essais 2025

Le 25 novembre 2024, Anthropic publiait le Model Context Protocol, un standard ouvert pour connecter des assistants IA à des sources de données et des outils externes. Sept mois plus tard, l’idée de brancher ce protocole sur un Kit Elementor pour en exposer les templates à un assistant compatible semblait suffisamment mûre pour être testée en conditions réelles sur un projet.

Ce billet documente ce premier essai, volontairement circonscrit : un serveur MCP minimal, capable de lister les templates d’un Kit Elementor donné et de retourner leur structure. Il ne couvre pas l’Abilities API native de WordPress, qui poursuit un objectif proche mais avec une mécanique différente, ni la génération de code par l’IA à partir de ces templates, qui reste un sujet à part entière.

Ce qu’un serveur MCP expose concrètement

Le protocole MCP définit trois primitives principales que peut exposer un serveur : des resources (des données consultables), des tools (des actions invocables) et des prompts (des modèles de requête réutilisables). Pour ce premier essai, un seul tool a été mis en place : list_kit_templates, qui retourne la liste des templates enregistrés dans un Kit Elementor donné.

Le serveur a été écrit en Node.js, en s’appuyant sur le SDK officiel du protocole, et communique avec WordPress via l’API REST existante plutôt que par un accès direct à la base de données :

server.tool(
  "list_kit_templates",
  { kit_id: z.string() },
  async ({ kit_id }) => {
    const response = await fetch(
      `https://exemple.fr/wp-json/wpmoderne/v1/kits/${kit_id}/templates`
    );
    const templates = await response.json();
    return {
      content: [{ type: "text", text: JSON.stringify(templates) }],
    };
  }
);

Côté WordPress : exposer les templates d’un Kit

L'essentiel à retenir : Un serveur MCP expose des ressources et des outils normalisés, pas une API propriétaire ; Lister les templates d'un Kit se fait en interrogeant le custom post type interne d'Elementor ; La génération de code par l'IA reste hors du périmètre de cet essai

Les templates d’un Kit Elementor sont enregistrés en interne comme des entrées du custom post type elementor_library, avec une taxonomie associée qui les classe par type (section, page, popup, etc.). Le point de terminaison REST personnalisé interroge simplement ce custom post type, filtré par les templates appartenant au Kit demandé :

register_rest_route( 'wpmoderne/v1', '/kits/(?P<kit_id>\d+)/templates', [
    'methods'  => 'GET',
    'callback' => function( $request ) {
        $kit_id = absint( $request['kit_id'] );

        $templates = get_posts( [
            'post_type'   => 'elementor_library',
            'meta_key'    => '_elementor_kit_id',
            'meta_value'  => $kit_id,
            'numberposts' => -1,
        ] );

        return array_map( function( $template ) {
            return [
                'id'    => $template->ID,
                'title' => $template->post_title,
                'type'  => get_post_meta( $template->ID, '_elementor_template_type', true ),
            ];
        }, $templates );
    },
    'permission_callback' => function() {
        return current_user_can( 'edit_posts' );
    },
] );

La clé de métadonnée _elementor_kit_id utilisée ici est une convention interne à ce projet, ajoutée manuellement pour associer un template à un Kit ; Elementor ne fournit pas nativement cette relation dans son schéma de données standard.

Ce qui a fonctionné, et ce qui reste fragile

La connexion entre un client MCP (testé avec un assistant conversationnel compatible) et ce serveur minimal a fonctionné dès le premier essai : la liste des templates du Kit s’affichait correctement, avec leur type et leur identifiant. Ce résultat, bien que modeste, confirme la viabilité de l’approche pour ce cas d’usage précis.

  • La permission d’accès reste basique (edit_posts), à durcir avant tout usage en dehors d’un environnement de test
  • Aucune authentification dédiée au serveur MCP n’a été mise en place à ce stade, un point à corriger avant toute exposition publique
  • Le protocole ne gère pas nativement le rendu visuel d’un template, seulement ses métadonnées

Ce que cet essai ne prétend pas résoudre

Il serait exagéré de présenter ce prototype comme une intégration complète entre Elementor et l’écosystème MCP. Il s’agit d’un premier jalon technique, qui démontre la faisabilité de la connexion sans encore répondre aux questions de sécurité, de gestion des droits par utilisateur, ou de performance à grande échelle sur un Kit comptant plusieurs centaines de templates.

Notre approche sur ce type de brique expérimentale : commencer par un périmètre volontairement restreint et documenté, plutôt que de viser une intégration complète dont la maintenance deviendrait vite ingérable.

En résumé

Ce premier serveur MCP exposant les templates d’un Kit Elementor confirme que le protocole peut se brancher assez simplement sur l’API REST existante de WordPress, sans modification du cœur d’Elementor. La suite logique consisterait à ajouter des outils d’écriture, comme l’insertion d’un template dans une page, une fois les questions de sécurité et de permissions traitées sérieusement, ce qui dépasse le cadre de ce premier essai.

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi