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

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.