Raccourcis clavier

Appuyez sur ← ou → pour passer d'un chapitre à l'autre

Appuyez sur S ou / pour rechercher dans la documentation

Appuyez sur ? pour afficher cette aide

Appuyez sur Échap pour masquer cette aide

Parcourir le catalogue de services et préparer un déploiement

Le catalogue métier est la liste des serveurs MCP que la plateforme sait décrire, regrouper en profils et suivre. Ce tutoriel parcourt ce qui fonctionne aujourd'hui (consulter, filtrer, lire les profils, connaître l'état) et dit sans détour où s'arrête l'automatisation : le déploiement d'un service par l'API est en sommeil et répond 503.

Ce qui marche, ce qui est en sommeil

OpérationRoute (préfixe /api/v1/mcp/catalog-business)État
Lister le catalogueGET /actif
Détail d'un serveurGET /{id}actif
Lister les profilsGET /profilesactif
Serveurs prouvés opérationnelsGET /deployedactif
État d'un serveurGET /{id}/statusactif (disponibilité au registre)
Déployer un serveurPOST /{id}/deploy503, en sommeil
Déployer un profilPOST /profiles/{name}/deploy503, en sommeil
Démarrer / arrêter / redémarrerPOST /{id}/start, /stop, /restart503, en sommeil
Profil de sécuritéGET /{id}/security503, en sommeil
Enregistrer des secretsPOST /{id}/secrets503, en sommeil

Les opérations en sommeil dépendent du pilotage de Podman par le backend, pas encore branché. Tant qu'il ne l'est pas, elles répondent 503 avec l'en-tête Retry-After et un corps FEATURE_PENDING, jamais un faux succès. Les opérations de cycle de vie sont de plus réservées aux rôles admin et owner : tout autre rôle reçoit 403. Seule exception, GET /{id}/security : ouverte à tout utilisateur connecté, elle répond 503.

Toutes les routes exigent un jeton de session ($JWT).

Prérequis

  • Chatbotaurus installé et fonctionnel (voir Installation).
  • Un jeton de session (Swagger, section Authentification), rangé dans la variable JWT. Pour tenter un déploiement, un compte de rôle admin ou owner.
  • curl et jq pour les commandes ci-dessous, lancées contre le backend local http://localhost:3000 (sur un déploiement, remplacez cette adresse par celle de votre API).

Étape 1 : consulter le catalogue

# Tous les serveurs
curl -s -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business \
  | jq '.servers[] | {id, name, category, status}'

# Filtrer par catégorie
curl -s -H "Authorization: Bearer $JWT" \
  "http://localhost:3000/api/v1/mcp/catalog-business?category=CRM%20%26%20ERP" | jq .total

# Le détail d'un serveur
curl -s -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business/odoo | jq .

La réponse est de la forme { "servers": [...], "total": N }. Chaque entrée porte id, name, description, category, provider, country, license, status, tags et version. Le champ status vaut available ou coming-soon : le catalogue décrit plus de serveurs qu'il n'en livre, et ce champ dit lesquels sont prêts. Un identifiant inconnu rend 404.

Étape 2 : lire les profils

Un profil est un regroupement de serveurs pour un usage. La réponse est de la forme { "profiles": [...] }.

curl -s -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business/profiles | jq .

Il existe quatre profils : Solo (l'ERP seul), Starter (cinq serveurs : ERP, automatisation, analytique, fichiers, modèle local), Business (douze serveurs, avec agenda, documents, visioconférence, GED, supervision et voix) et Enterprise (tous les serveurs du fichier de profils). Les identifiants de serveurs d'un profil sont ceux du fichier de profils, tenu côté serveur : ils portent le préfixe mcp- et le suffixe -eu, et diffèrent des id de la liste du catalogue (par exemple odoo).

Étape 3 : savoir ce qui est réellement opérationnel

curl -s -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business/deployed | jq .

Cette route ne rend pas un inventaire de conteneurs. Elle rend la liste des serveurs prouvés opérationnels, sous la forme d'un tableau JSON d'identifiants : un identifiant n'y figure que si un outil de lecture a rendu des données réelles lors d'une vérification en direct. Elle sert de source unique à l'application, qui affiche donc le même état « déployé » sur toutes ses pages.

curl -s -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business/odoo/status | jq .

L'état d'un serveur dit s'il est enregistré dans le registre (available ou not_registered), s'il est prouvé opérationnel, et que l'état d'exécution du conteneur est inconnu tant que le pilotage Podman n'est pas branché (runtime.known: false).

Étape 4 : tenter un déploiement

curl -i -X POST -H "Authorization: Bearer $JWT" \
  http://localhost:3000/api/v1/mcp/catalog-business/odoo/deploy

Avec un compte admin ou owner, la réponse attendue aujourd'hui est :

HTTP/1.1 503 Service Unavailable
Retry-After: 86400

{ "error": { "code": "FEATURE_PENDING", ... }, "feature_pending": "catalog_business" }

Avec un autre rôle, c'est 403. Ce 503 n'est pas une panne : c'est l'état documenté de la fonction. Arrêtez-vous là côté API.

Comment déployer un service en attendant

Les services du catalogue destinés au plan client sont décrits dans le fichier Compose du plan client, où chaque serveur MCP est un service nommé mcp-*. Le déploiement passe par ce plan, avec podman-compose (avec un tiret), décrit dans Déploiement avec Podman. Les secrets ne passent pas par l'API du catalogue : ils sont enregistrés en identifiants du locataire (page /credentials), comme dans le tutoriel Connecter Odoo.

Dans l'application

La page MCP > Serveurs Business (/mcp/servers/business) présente le même catalogue, avec l'état « déployé » tiré de la route /deployed. La page de passerelle par secteur (/mcp/gateways/business) regroupe les serveurs par métier. Ce sont des pages de l'application, pas des routes d'API.

Voir aussi