Accueil

Référence développeur · PrestaShop

Websource MCP (connecteur Claude) pour PrestaShop — référence développeur

Point d'accès MCP de la boutique : authentification, transport, méthodes JSON-RPC, outils du thème et du builder, niveaux d'accès.

Version 1.0.0 · PrestaShop 1.7.7 à 9.x, PHP 7.1+, HTTPS · Mis à jour le 09/10/2026

Guide utilisateur

Cette extension existe aussi pour : WordPress

Point d'accès

POST https://boutique.example/module/websourcemcp/server
POST https://boutique.example/index.php?fc=module&module=websourcemcp&controller=server

Contrôleur controllers/front/server.php. Il répond aussi quand la boutique est en maintenance. Aucun cookie de client ou d'employé n'est pris en compte : seule la clé du connecteur fait foi.

Authentification

La clé (wsmcp_…) est générée dans Modules > Websource MCP, affichée une seule fois ; seule son empreinte SHA-256 est enregistrée (Auth\AccessKey). Deux façons de la transmettre :

Authorization: Bearer wsmcp_…

ou paramètre d'adresse key=wsmcp_… (adresse de connexion à coller dans Claude). En en-tête, la clé n'apparaît pas dans les journaux du serveur.

Clé absente ou invalide : 401

{"error": "unauthorized", "error_description": "Clé du connecteur absente ou invalide. Générez une adresse de connexion dans le back-office : Modules > Websource MCP."}

Transport

« Streamable HTTP » sans état : POST d'un message JSON-RPC 2.0 ou d'un lot, réponse JSON. 202 pour une notification. 405 sur GET (pas de flux SSE). En-têtes CORS acceptés : Authorization, Content-Type, Accept, Mcp-Protocol-Version, Mcp-Session-Id.

Méthodes : initialize, ping, tools/list, tools/call (Protocol\McpServer).

initialize

{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-03-26", "capabilities": {}, "clientInfo": {"name": "client", "version": "1.0"}}}
{"jsonrpc": "2.0", "id": 1, "result": {"protocolVersion": "2025-03-26", "capabilities": {"tools": {"listChanged": false}}, "serverInfo": {"name": "websource-prestashop-theme", "title": "Websource — Maison Lumen", "version": "1.0.0"}, "instructions": "Connecteur de la boutique PrestaShop « Maison Lumen » (thème Websource). …"}}

tools/list

Ne renvoie que les outils permis par le niveau d'accès et par les modules présents. Au niveau « Brouillons », avec Websource Theme Config et Websource Builder : theme_lire_reglages, builder_lister_blocs, builder_lister_emplacements, builder_lister_contenus, builder_lire_contenu, builder_creer_contenu, builder_enregistrer_brouillon.

tools/call

{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "theme_lire_reglages", "arguments": {}}}
{"jsonrpc": "2.0", "id": 3, "result": {"isError": false, "content": [{"type": "text", "text": "{\n    \"couleurs\": {\n        \"primary\": {\"valeur\": \"#0369a1\", \"role\": \"couleur principale (boutons, liens)\"}, …"}]}}

Outil refusé par le niveau d'accès : réponse 200 avec isError: true

{"content": [{"type": "text", "text": "Cette action n'est pas permise par le niveau d'accès choisi pour ce connecteur. Le marchand peut le relever dans le back-office : Modules > Websource MCP."}], "isError": true}

Niveaux d'accès

Tool\AccessLevel : read (1), draft (2, défaut), publish (3). Réglage WSMCP_LEVEL.

Outils

OutilArgumentsNiveauModule requis
theme_lire_reglagesaucunlecturewebsourcethemeconfig
theme_modifier_reglagesau moins un parmi couleurs (primary, secondary, accent, ink, line, page_bg, surface, footer_bg), palette, font_body, font_head, borders, shadow_when_no_border, desktop_header, mobile_header et autres réglages d'agencementpublicationwebsourcethemeconfig
builder_lister_blocstypes[] (facultatif : types dont on veut le détail des champs)lecturewebsourcebuilder
builder_lister_emplacementsaucunlecturewebsourcebuilder
builder_lister_contenusaucunlecturewebsourcebuilder
builder_lire_contenucontenu_id (obligatoire), version (brouillon par défaut, ou en_ligne)lecturewebsourcebuilder
builder_creer_contenunom, page, position, blocs[] (obligatoires), cms_id, langue ; créé hors lignebrouillonwebsourcebuilder
builder_enregistrer_brouilloncontenu_id, blocs[] (obligatoires), nombrouillonwebsourcebuilder
builder_publiercontenu_idpublicationwebsourcebuilder
builder_mettre_hors_lignecontenu_idpublicationwebsourcebuilder

Un bloc est un objet {type, …champs} ; appeler builder_lister_blocs avant d'écrire des blocs pour connaître les types et leurs champs.

Garde-fous :

  • Toutes les valeurs passent par les validations des modules (ThemeSettings, BlockSanitizer, PlacementCatalog) : mêmes règles que les écrans du back-office.
  • Non exposés : code libre du <head>, polices envoyées, hooks personnalisés, contenu des pages CMS.
  • Aucun outil ne supprime un contenu ni ne touche au catalogue, aux commandes ou aux clients.
  • Chaque appel d'outil qui crée, modifie ou publie est tracé par PrestaShopLogger (« Websource MCP : appel de l'outil … », objet WebsourceMcp).

Connexion des clients

  • Claude (web, ordinateur, mobile) : Paramètres > Connecteurs > Ajouter un connecteur personnalisé, coller l'adresse de connexion.
  • Claude Code :
claude mcp add --transport http ma-boutique "https://boutique.example/module/websourcemcp/server" --header "Authorization: Bearer wsmcp_…"

Réglages

CléContenu
WSMCP_KEY_HASHEmpreinte SHA-256 de la clé (vide = connecteur fermé).
WSMCP_LEVELread, draft ou publish.
WSMCP_LAST_USEDHorodatage du dernier appel authentifié.

Formulaire de configuration (POST sur index.php?controller=AdminModules&configure=websourcemcp&token=…) : submitWsmcpGenerate, submitWsmcpRevoke, submitWsmcpLevel + wsmcp_level.

Architecture

Websource\Mcp\… : Protocol\McpServer, Auth\AccessKey, Tool\ToolProviderInterface, Tool\ThemeTools, Tool\BuilderTools, Tool\AccessLevel, Tool\ToolException, Gateway\ThemeGatewayInterface / PrestaShopThemeGateway, Gateway\BuilderGatewayInterface / PrestaShopBuilderGateway. Ajouter des outils : implémenter ToolProviderInterface et l'enregistrer auprès du serveur.

Tests

php tests/run.php (sans PrestaShop) : protocole, clé, niveaux d'accès, outils thème et builder avec les règles de validation réelles des deux modules.