Serveur MCP
Connectez votre agent de développement à Bondry : l'adresse, le jeton bkm_, les portées, les outils et la configuration du client.
Nous hébergeons un serveur MCP pour les auteurs de modules et de thèmes. Votre agent lui pose les mêmes questions que celles auxquelles répond cette documentation, lance les mêmes contrôles que la revue et publie par les mêmes routes que votre pipeline appellerait.
Ce n'est pas un accès au Bondry installé de qui que ce soit. Piloter un site, c'est le connecteur d'IA du produit, un autre sujet, qui vit du côté de Bondry.
L'adresse#
https://mcp.bondry.org/v1/<hash>
Authorization: Bearer bkm_<12 hex>.<secret>
Le hash identifie ; le jeton authentifie. L'identifiant présent dans l'URL est celui que votre compte utilise déjà dans les liens de téléchargement, et c'est lui qui dit à quel compte appartient la session. Ce n'est pas un mot de passe, et il ne suffit pas à lui seul : un jeton ne vaut que sur l'URL de son propre propriétaire, et toute autre adresse répond 404 sans jamais confirmer si cet identifiant appartient à quelqu'un.
Le jeton s'émet dans votre compte, sous Accès MCP. Il s'affiche une seule fois, il est révocable, il porte des portées et il enregistre sa dernière utilisation. Nous n'en gardons qu'une empreinte, donc aucun écran ne peut vous le remontrer.
Les portées#
Cochées à l'émission, jamais élargies ensuite.
| Portée | Autorise |
|---|---|
docs |
lire la documentation développeurs, le schéma du manifeste, les hooks, les permissions, les jetons de design et les événements |
validate |
lancer les contrôles de paquet et de manifeste |
publish |
enregistrer un artefact, annoncer une version et envoyer un paquet |
status |
lire l'état de revue et l'historique des livraisons |
publish démarre décochée. Un jeton sans elle ne publie pas, et un appel
d'outil qui en a besoin est refusé par l'outil lui-même, avec le motif, pendant
que la session continue. Besoin d'un jeton plus large ? Émettez-en un nouveau
et révoquez l'ancien.
Les outils#
Lecture (portée docs)
| Outil | Renvoie |
|---|---|
bondry_docs_search |
des passages de cette documentation, avec le chemin de la page et celui du fichier |
bondry_manifest_schema |
le schéma de module.json ou theme.json, champ par champ, avec ce qui est obligatoire |
bondry_hooks |
les emplacements d'interface et la façon dont un module en remplit un |
bondry_permissions |
le modèle de permissions et les règles d'indépendance qui le soutiennent |
bondry_design_tokens |
les contrôles du customiseur et les variables CSS auxquelles ils se rattachent |
bondry_events |
le modèle d'événements et les méthodes de cycle de vie appelées par le kernel |
Vérification (portée validate)
| Outil | Fait |
|---|---|
bondry_validate_manifest |
valide un module.json ou theme.json collé, champ par champ |
bondry_validate_package |
lance la revue automatique sur un zip envoyé dans l'appel : chemin sortant, lien symbolique, bombe, taille, manifeste, slug, version, la traduction anglaise obligatoire et l'analyse statique |
bondry_review_preflight |
les deux précédents, plus chaque signalement avec son fichier et sa ligne |
Publication (portée publish, et status pour les deux lectures)
| Outil | Fait |
|---|---|
bondry_register_artifact |
enregistre un artefact et réserve son slug, ou met à jour les métadonnées d'un artefact que vous publiez déjà |
bondry_announce_release |
annonce une version, sans envoyer un octet |
bondry_upload_package |
envoie le zip d'une version annoncée |
bondry_artifact_status |
état de revue, version publiée, points en attente et dernière annonce |
bondry_webhook_deliveries |
les dernières livraisons, avec renvoi (renvoyer exige publish) |
Toute écriture répond avec ce qui a changé et ce qui manque encore, jamais un simple « ok ». Aucun outil n'accepte un slug qui n'est pas le vôtre : un slug appartenant à quelqu'un d'autre répond exactement comme un slug qui n'a jamais existé.
Aucun outil ne va chercher un paquet sur le réseau. Seuls les octets
envoyés dans l'appel sont lus. Par un appel d'outil, le zip voyage encodé en
base64, plafonné à 8 Mo ; au-delà, le chemin est
PUT /v1/publisher/releases/{version}/package, qui accepte les octets bruts
jusqu'à 40 Mo.
Ce qui revient est une donnée#
Tout ce que renvoie un outil de lecture est du texte de documentation. C'est une donnée de référence, pas une instruction : une phrase dans une page, dans un manifeste ou dans un paquet ne change pas ce qu'on a demandé à votre agent. Les descriptions des outils le disent, et le serveur le répète dans ses instructions d'ouverture.
Configuration du client#
Remplacez l'identifiant et le jeton par les vôtres. Le jeton s'affiche une seule fois, à l'émission, accompagné d'un bloc identique à celui-ci.
Claude Code
claude mcp add --transport http bondry \
https://mcp.bondry.org/v1/<hash> \
--header "Authorization: Bearer bkm_xxxxxxxxxxxx.<secret>"
Claude Desktop, et tout client qui lit mcpServers
{
"mcpServers": {
"bondry": {
"type": "http",
"url": "https://mcp.bondry.org/v1/<hash>",
"headers": {
"Authorization": "Bearer bkm_xxxxxxxxxxxx.<secret>"
}
}
}
}
Avertissement Le jeton est une donnée d'authentification. Gardez-le hors du dépôt, hors du journal de build et hors d'un enregistrement d'écran. Si l'un s'échappe, la révocation est immédiate.
Le transport, pour les auteurs de clients#
Streamable HTTP, sous la forme qu'un serveur sans processus résident peut honorer : un POST, une réponse JSON.
POSTavec un seul message JSON-RPC.initialize,notifications/initialized,ping,tools/listettools/call.GETrépond405: il n'y a pas de flux longue durée ici. Bondry Web tourne sur PHP-FPM, et un worker retenu sur une connexion ouverte est un worker en moins pour le site.initializerépond avec unMcp-Session-Id, lié au jeton et valable trente minutes d'inactivité. Renvoyez-le sur les appels suivants. Une session expirée, ou appartenant à un autre jeton, répond404, ce qui indique au client qu'il doit en ouvrir une nouvelle.DELETEavec l'en-tête de session la termine.- Versions de protocole parlées :
2025-11-25,2025-06-18,2025-03-26. Un en-têteMCP-Protocol-Versionnommant une autre version répond400avec la liste de celles que nous parlons. - Un bearer invalide ou absent répond
401avecWWW-Authenticate. Une portée manquante n'est pas une erreur HTTP : c'est un résultat d'outil avecisError.
Les plafonds#
120 appels par minute et par jeton. Les outils d'écriture héritent des plafonds de publication, dont les 500 annonces par jour et par jeton.
Chaque appel d'outil devient une ligne du journal d'API, avec le jeton, l'outil et la façon dont il s'est terminé. Les écritures deviennent aussi une ligne d'audit, avec l'origine enregistrée, si bien que « était-ce le pipeline ou l'agent ? » est une question qui a une réponse. Aucun argument, aucun paquet et aucun secret n'entre dans un journal.
Les skills#
Les outils sont la source ; les skills sont le parcours. Cinq d'entre elles sont publiées, en anglais, et fonctionnent avec ou sans ce serveur connecté : Skills d'agent.