Dokos CLI

Intégration avec les agents (MCP)

Brancher Dokos CLI sur Claude Code, agy, Vibe CLI et OpenCode avec le serveur MCP local, l'installation clé en main dokos agent install et les compétences partagées.

dokos expose ses capacités aux agents IA de deux façons : un serveur MCP (Model Context Protocol) et une compétence (skill) prête pour le prompt. Une seule commande, dokos agent install, câble le tout dans vos runtimes.

Installation clé en main

dokos agent install fait trois choses pour chaque runtime détecté : il enregistre le serveur MCP dokos, auto-approuve les outils en lecture seule, et installe la compétence dokos-erp dans la bibliothèque centrale ~/.agents/skills (partagée par tous les runtimes).

dokos agent install --print                 # prévisualiser, sans rien écrire
dokos agent install                         # installer dans tous les runtimes détectés
dokos agent install --runtime claude,vibe   # un sous-ensemble : claude,vibe,opencode,agy

L'opération est idempotente : relancer ne change rien. Les lectures s'exécutent sans confirmation. Les écritures restent soumises à validation.

Claude Cowork et Claude Desktop ne lisent pas ~/.claude : dokos agent install ne les atteint pas. Installez à la place le plugin dokos depuis la place de marché https://gitlab.com/dokos/dokos-cli (Customize → Plugins → Add marketplace). Le plugin demande le chemin complet de l'exécutable dokos (résultat de which dokos). La session doit tourner en exécution locale.
Un agent dans le cloud (claude.ai, application mobile) ne peut pas lancer le serveur local. Si le site a l'application Dokos AI avec son serveur MCP activé, utilisez le serveur MCP distant du site ou le plugin dokos-connect : voir Serveurs MCP et Dokos Connect.
La compétence est installée une seule fois dans ~/.agents/skills, puis partagée à chaque runtime par lien symbolique. Seuls l'enregistrement MCP et la liste d'auto-approbation diffèrent d'un runtime à l'autre. agy importe sa configuration depuis Claude : appliquez donc la cible Claude en premier.

Enregistrement manuel du serveur MCP

Si vous n'utilisez pas l'installateur, enregistrez le serveur à la main. Il s'exécute en stdio : l'agent le lance comme sous-processus.

dokos mcp --print-config     # affiche l'extrait d'enregistrement, puis quitte
dokos mcp                    # lance le serveur MCP en stdio
{
  "mcpServers": {
    "dokos": { "command": "dokos", "args": ["mcp"] }
  }
}

Pour Claude Code, cet extrait va dans .mcp.json. OpenCode et Vibe utilisent leur propre configuration MCP.

Outils exposés

Chaque outil est une fine enveloppe autour des mêmes fonctions que les commandes du terminal. Les résultats sont des dictionnaires compacts pour limiter l'empreinte en jetons. Les erreurs sont renvoyées sous la forme {"error": "..."}, avec le message du serveur et une piste de correction.

Chaque outil de données accepte un argument facultatif site, qui désigne le site visé. Préférez-le à site_use : site_use change le site actif pour toute la machine, et deux agents peuvent alors se gêner.

Lectures (approuvées automatiquement par dokos agent install) :

OutilRôle
meta_get(doctype)Schéma compact d'un DocType
perms_get(doctype)Règles de permissions d'un DocType
doc_get(doctype, name)Lire un document complet
doc_list(doctype, filters?, fields?, limit=20, order_by?)Lister des documents
doc_count(doctype, filters?)Compter des documents
doc_value(doctype, fieldname, filters?)Lire un ou plusieurs champs
run_report(report_name, filters?)Exécuter un rapport
site_list() / site_current()Lister les sites configurés / afficher le site actif

Écritures (soumises à confirmation) :

OutilRôle
doc_create(doc)Créer un document
doc_update(doctype, name, fields, force?)Mettre à jour un document. Refusé si le document a changé depuis sa lecture
doc_submit(doctype, name) / doc_cancel(doctype, name)Valider / annuler un document
doc_amend(doctype, name)Créer un brouillon à partir d'un document annulé
doc_delete(doctype, name)Supprimer un document. Irréversible
doc_rename(doctype, old_name, new_name, merge?)Renommer ou fusionner un document
upload_file(path, doctype?, docname?, fieldname?, is_private?)Envoyer un fichier, et le joindre si besoin
method_call(method, args?, http_method?)Appeler une méthode serveur autorisée
report_create(report_name, query, ref_doctype)Créer un Query Report depuis du SQL
site_add(name, url, api_key, api_secret, make_active=True)Enregistrer un site. Écrit des identifiants
site_use(name)Changer de site actif, pour toute la machine
dokos agent install n'approuve automatiquement que les outils de lecture. Les outils d'écriture restent soumis à confirmation dans les réglages de permissions de l'agent. Sur un site en lecture seule, ils sont refusés avant l'envoi de la requête.

Compétences

Une compétence (skill) est une fiche Markdown qui explique à un agent comment faire une tâche sur un site Dokos. Deux sources alimentent la bibliothèque partagée ~/.agents/skills :

  • Livrées avec la CLI : dokos-erp, installée par dokos agent install, et une fiche par commande.
  • Publiées par le site : dokos skill pull installe les compétences que le site connecté publie. Le site doit avoir l'application Dokos AI.
dokos skill pull                        # synchroniser depuis le site actif
dokos skill pull --site staging --prune # retirer aussi les compétences supprimées sur ce site
dokos skill list                        # toutes les compétences de la bibliothèque et leur origine
dokos skill show                        # afficher le SKILL.md livré avec la CLI

--prune ne retire que les compétences récupérées depuis ce site. Une compétence écrite localement avec le même nom n'est jamais supprimée.

dokos mcp met à jour la bibliothèque en arrière-plan, au plus une fois par jour. Un site sans Dokos AI est ignoré sans erreur. DOKOS_SKIP_SKILL_PULL=1 désactive cette mise à jour.

Conseils pour les agents

  • Utilisez --json (terminal) ou les outils MCP pour enchaîner les appels. La sortie --json contient un tableau next de commandes de suivi suggérées.
  • Lancez dokos sync une fois pour que l'agent puisse lire ~/.config/dokos/doctypes.md et reports.md et découvrir les noms exacts (sensibles à la casse).
  • Préférez un meta get avant d'écrire, pour connaître les champs obligatoires et les options des champs Link / Select.