Un serveur MCP pour le commerce : ce que votre agent peut gérer dans cmssy
Chaque CMS propose désormais un serveur MCP. Voici ce qu'atteint celui de cmssy - une commande de gros, de la liste de prix à la facture, traitée en une conversation, avec ses garde-fous.
Un serveur MCP est désormais le minimum attendu d'un CMS. Contentful, Sanity, Storyblok et Payload en proposent tous un, et un agent peut rédiger et publier du contenu sur chacun d'eux. La question a changé : qu'est-ce que l'agent peut atteindre une fois connecté ? Pour une boutique, la réponse décide si un agent est un rédacteur ou un opérateur.
Cet article présente ce qu'expose le serveur MCP de cmssy, comment vous y connecter, une commande de gros traitée de bout en bout en une seule conversation, et ce qui reste à améliorer.

Ce que MCP change, et ce qu'il ne change pas
MCP standardise la façon dont un agent découvre des outils et les appelle. Il ne rend pas vos données plus propres. Un agent connecté à une boutique dont les commandes vivent dans un système, les prix dans un tableur et les textes dans un CMS passera ses tours à recoudre trois API ensemble, et il se trompera aux coutures.
cmssy garde les pièces dans un seul workspace : pages et blocs, modèles de données personnalisés, produits et stock, listes de prix et canaux de vente, clients et leurs entreprises, paniers, commandes, retours, colis et factures. Un seul serveur expose le tout, sous un seul ensemble de rôles. C'est tout l'argument de cet article, et tout ce qui suit montre à quoi il ressemble en pratique.
Se connecter
Il y a deux portes d'entrée.
- Hébergé, pour Claude. Claude sur le web, Claude Desktop et Claude Code se connectent à
https://api.cmssy.io/mcp. Vous vous connectez à cmssy (OAuth 2.1 avec PKCE), cochez les workspaces que Claude peut utiliser et choisissez Lecture seule ou Lecture et écriture. Aucun jeton à copier, rien à installer. Dans Claude Code, c'est une seule commande :claude mcp add --transport http cmssy https://api.cmssy.io/mcp, puis/mcppour vous connecter. - stdio, pour tout le reste. Les jobs CI, les scripts et n'importe quel client MCP lancent
npx @cmssy/mcp-serveravec un jeton d'API (cs_…) et un id de workspace. Mêmes outils, mêmes permissions.
Dans les deux cas, l'agent agit en tant que la personne qui l'a connecté, avec le rôle de cette personne dans chaque workspace, et chaque modification arrive dans le journal d'audit du workspace sous son nom. Une connexion peut couvrir plusieurs workspaces : chaque outil prend un argument workspace et list_workspaces renvoie ceux auxquels vous avez donné accès.
Ce qu'expose le serveur
En octobre 2026, le serveur compte 132 outils. Ils partagent un même schéma de nommage - list_* et get_* pour lire, create_*, update_* et delete_* pour écrire, plus des verbes pour les changements d'état - et se répartissent en quelques groupes :
- Contenu - pages, blocs, zones de mise en page, types de pages, publication, médias, formulaires et leurs soumissions, modèles et enregistrements personnalisés.
list_block_typesrenvoie les types de blocs que votre site enregistre réellement, de sorte que l'agent remplit les champs que vos composants affichent au lieu de deviner. - Catalogue - produits, variantes, paliers de quantité, prix par devise, mises à jour en masse.
- Tarifs B2B - listes de prix avec un pourcentage de remise ou des prix fixes par produit et variante, fenêtres datées, canaux de vente, et affectation à une entreprise ou à un client.
- Clients et entreprises - les comptes qui se connectent à votre site, leurs entreprises, les numéros de TVA intracommunautaire et leur vérification, les exonérations de taxe, les suspensions et les réinitialisations de mot de passe.
- Commandes - commandes manuelles, modifications, paiements enregistrés, remboursements, annulations, pipeline de commandes, colis et suivi, retours, factures et factures rectificatives, anonymisation.
- Webhooks - endpoints, journaux de livraison, nouvelle livraison et rotation des secrets.
La liste complète, avec la permission requise par chaque outil, est générée à partir du serveur à chaque version et publiée sous forme de catalogue des outils MCP.
Deux choses sont volontairement absentes. Aucun outil ne touche à votre code : rien n'écrit de fichier, ne modifie de composant ni n'ouvre de pull request, car les schémas de blocs vivent dans votre dépôt, soumis à la revue. Et aucun outil ne déplace d'argent : cmssy enregistre les paiements et remboursements effectués par votre prestataire, il ne débite jamais une carte.
Une commande de gros, du devis à la facture
Voici un cas B2B qui s'étend habituellement sur un ERP, un tableur de prix et deux panneaux d'administration. Un distributeur de quincaillerie signe un nouveau client professionnel, convient de prix contractuels sur trois produits, reçoit la première commande par e-mail et l'expédie. Chaque étape ci-dessous est un prompt adressé à Claude et les outils qu'il appelle.

1. Une liste de prix pour le compte
Crée une liste de prix "Trade - Nordbau" avec 12 % de remise sur le catalogue,
et des prix fixes pour les trois raccords de la feuille jointe.create_price_list avec percentOff: 12, puis set_price_list_entries avec les prix fixes en unités mineures. Un prix fixe remplace le pourcentage pour son produit ou sa variante ; tout le reste obtient le prix catalogue moins 12 %. L'appel est tout ou rien : une seule ligne erronée fait refuser tout l'import et la ligne est indiquée.
2. L'entreprise
Le numéro de TVA de Nordbau GmbH est DE123456789 - je l'ai vérifié dans VIES.
Mets-les sur la nouvelle liste.set_company_vat_id normalise le numéro et en vérifie le format, set_company_vat_verified enregistre que quelqu'un l'a vérifié, et set_company_price_list rattache la liste. Chaque membre de l'entreprise paie désormais selon celle-ci. Un numéro de TVA vérifié d'un autre État membre que celui du vendeur applique un taux zéro à leurs commandes en autoliquidation, sauf si la commande est expédiée dans le pays du vendeur.
Remarquez la séparation : vérifier un numéro de TVA change la façon dont les commandes sont taxées, il faut donc une paire de permissions plus forte que pour simplement renseigner le numéro. Un agent connecté par quelqu'un qui ne l'a pas obtient une erreur.
3. La commande
Nordbau a envoyé une commande par e-mail : 40 x raccord NW7.2, 25 x NW10,
livraison à leur dépôt de Hambourg. Saisis-la.create_manual_order avec le client et les lignes. Comme l'acheteur appartient à Nordbau, les lignes sont tarifées à partir de la liste de l'entreprise, et l'adresse de livraison décide du traitement fiscal, que la commande fige. get_order montre exactement ce qui a été appliqué : la liste qui a tarifé chaque ligne, le traitement de TVA et la mention légale à imprimer.
4. Le paiement
Le virement pour cette commande est arrivé, référence NB-2026-118.record_order_payment avec le montant et la référence. Les paiements partiels sont acceptés ; le montant est plafonné au solde dû, et la commande passe à payée une fois celui-ci couvert.
5. Le colis
C'est parti avec DHL, numéro de suivi 00340434...create_shipment avec le transporteur et le numéro de suivi. Si l'on omet les articles, toutes les unités non encore expédiées partent, et la commande est marquée comme traitée.
6. La facture
Notre logiciel de comptabilité a émis FV/2026/1042 pour elle - voici le lien vers le PDF.record_order_invoice enregistre le numéro, le lien et le fournisseur sur la commande et déclenche order.invoiced. Enregistrer à nouveau le même numéro n'a aucun effet, donc un agent qui réessaie ne fait aucun dégât. Un remboursement ultérieur reçoit une facture rectificative avec record_order_invoice_correction ; l'article sur la facturation couvre la version automatisée de cette étape.
Rien de tout cela n'est un benchmark. C'est la forme du travail : chaque étape est un outil à l'entrée étroite, chaque étape est vérifiée par rapport au rôle de la personne qui a connecté l'agent, et l'agent n'a jamais besoin de l'API d'un second fournisseur pour terminer la tâche.
Garde-fous
Un agent capable de vérifier un numéro de TVA ou de rembourser une commande mérite plus de précautions qu'un agent qui modifie un titre. Quatre couches le limitent, de l'extérieur vers l'intérieur.

- L'approbation dans le client. Chaque outil porte des annotations MCP :
readOnlyHintsur les outils qui ne font que lire,destructiveHintsur ceux qui modifient ou suppriment des données. Claude Code demande confirmation avant tout outil absent de votre liste d'autorisations : gardez doncrefund_order,cancel_order,publish_pageet les outils de suppression en dehors et approuvez chacun au fur et à mesure. - L'accès en lecture seule. Une connexion hébergée accordée en lecture seule refuse toute écriture sur le serveur, quoi que le client approuve.
- Votre rôle. L'agent a exactement les permissions que vous avez dans ce workspace. Le déconnecter dans Compte → Applications connectées le coupe partout à la fois ; un administrateur de workspace peut retirer un workspace de la connexion d'un membre.
- Le journal d'audit. Chaque modification est enregistrée au nom de la personne qui a connecté l'agent, comme une modification faite dans l'admin.
Une remarque honnête : le serveur MCP lui-même n'a pas d'étape de confirmation. Un outil destructif s'exécute dès son premier appel, et le contrôle est l'approbation de votre client. L'exception est l'assistant intégré à l'admin - là, le serveur retient un outil destructif jusqu'à ce que vous l'approuviez d'un bouton.
Ce qui reste à améliorer
- Les autres générateurs d'applications. Le serveur hébergé enregistre les clients via les Client ID Metadata Documents, que Claude prend en charge. Les générateurs qui ne connaissent que la Dynamic Client Registration ou un jeton bearer statique, comme v0, Lovable et Bolt, ne peuvent pas encore se connecter au endpoint hébergé, et en tant qu'outils hébergés ils ne peuvent pas non plus exécuter le paquet stdio. Les applications qu'ils génèrent lisent très bien le contenu via le SDK ; c'est la connexion de l'agent au moment du build qui est la prochaine lacune à combler.
- La recherche. La recherche plein texte dans le contenu est disponible dans l'assistant de l'admin, mais pas branchée sur le serveur MCP.
- Les nouveaux workspaces. Un workspace que vous rejoignez après la connexion n'est pas ajouté à celle-ci. Reconnectez-vous pour l'inclure.
À vous d'essayer
Ajoutez le serveur hébergé à Claude, connectez-vous et demandez-lui de lister vos commandes. La documentation du serveur MCP couvre les deux méthodes de connexion, le tutoriel Claude Code construit une page avec lui, et le cas de support pas à pas traite un remboursement, une réduction et une bannière en une seule conversation. Le contenu fonctionne sur toutes les offres ; le panier et le checkout nécessitent Pro.
