Si votre agent a un shell, donnez-lui une ligne de commande
MCP ou CLI pour agents IA : tout se résume à une question. L’agent a-t-il un shell ? Si oui, comme dans Claude Code, Codex ou Cursor, une ligne de commande bien conçue est généralement la meilleure interface. Elle ne charge que ce dont l’agent a besoin, se combine avec tout le reste du shell, et vous pouvez lancer chaque commande vous-même. Si l’agent n’a pas de shell, comme dans une application de chat, MCP est la porte d’entrée. Nous avons construit l’accès des agents à Time Momentum sous forme de ligne de commande, tm, et renoncé à un serveur MCP. Ce guide explique pourquoi, et dans quels cas ce choix serait le mauvais.
Ce qu’est MCP
Le Model Context Protocol est, selon ses propres termes, « an open-source standard for connecting AI applications to external systems » (modelcontextprotocol.io). Le projet le compare à un port USB-C : une prise pour de nombreux appareils.
La spécification actuelle, version 2026-07-28, définit des hôtes (l’application IA), des clients (les connecteurs en son sein) et des serveurs (les services qui fournissent données et outils), qui communiquent en JSON-RPC. Un serveur peut proposer des ressources, des prompts et des outils. Les outils sont ce que les agents utilisent le plus : le client demande la liste au serveur avec tools/list, et chaque outil arrive avec un nom, une description et un JSON Schema pour ses entrées.
Concevoir une CLI pour agents IA : ce qui la rend adaptée
Une ligne de commande n’est pas automatiquement bonne pour les agents. Il lui faut quelques propriétés que les humains demandent rarement :
- Elle se décrit elle-même sous forme de données :
--helpet un catalogue complet des commandes en JSON, pour que l’agent n’ait jamais à deviner les flags. - La sortie est un contrat : avec
--json, exactement un document JSON sur stdout, les erreurs en JSON sur stderr. - Les codes de sortie ont un sens : corriger l’appel, demander à l’humain, attendre, réessayer. Un seul nombre dit à l’agent quoi faire ensuite.
- Elle n’attend jamais une saisie que l’agent ne peut pas fournir : sans terminal, rien ne demande de réponse. Les étapes destructrices exigent un flag explicite comme
--yes. - Elle peut montrer au lieu d’agir :
--dry-runaffiche la requête exacte sans l’envoyer. - Les secrets restent hors de la sortie, y compris avec
--verboseet--dry-run, car tout ce que l’agent voit finit dans son contexte. - Elle s’installe facilement partout où tourne un agent, idéalement sans arbre de dépendances.
MCP ou CLI pour agents IA en un coup d’œil
| Question | Serveur MCP | CLI adaptée aux agents |
|---|---|---|
| Contexte utilisé avant le premier appel | en partieSouvent toutes les définitions | Seulement sur demande |
| Résultats combinables sans le modèle | –Via le modèle | Pipes, jq, scripts |
| Vous pouvez refaire ce que l’agent a fait | en partieInspector | Même commande |
| Version figeable | en partieLe serveur décide | |
| Fonctionne dans les agents dotés d’un shell | en partieSi le client le prend en charge | |
| Fonctionne dans les applications de chat sans shell | – | |
| Découverte et connexion standardisées | tools/list, OAuth | –Convention propre |
Mis à jour le: 10 oct. 2026
Contexte : définitions d’emblée ou à la demande
L’équipe d’ingénierie d’Anthropic a décrit le problème en novembre 2025 : « Most MCP clients load all tool definitions upfront directly into context », et ces descriptions augmentent le temps de réponse et le coût (Code execution with MCP). Sa recommandation : laisser le modèle lire les définitions d’outils à la demande.
Pour être juste, les clients rattrapent leur retard. Claude Code diffère désormais les outils MCP par défaut : au démarrage de la session, seuls les noms d’outils et les instructions des serveurs sont chargés, et la définition complète arrive quand Claude cherche l’outil (MCP tool search). D’autres clients chargent peut-être encore tout.
Une CLI obtient le chargement à la demande gratuitement, car rien n’est dans le contexte tant que l’agent ne lance pas de commande. Nous avons mesuré ce qu’il y a à charger dans tm 0.3.0 : le catalogue complet (tm schema --json) fait 377 203 caractères, l’aperçu de tous les groupes de commandes (tm --json) 32 110, le groupe des factures 104 009. Une commande isolée fait en médiane 934 caractères sur 157 commandes. Méthode : npx -y @time-momentum/cli@0.3.0 schema --json | wc -c et de même pour les autres appels, le 10 oct. 2026.
Le catalogue n’est pas petit. C’est justement le point : l’agent décide de ce qu’il charge, en général un groupe ou une commande.
Composition : pipes, jq et scripts
Avec MCP, « every intermediate result must pass through the model », comme le dit le même article d’Anthropic. Une liste de 500 factures que l’agent doit seulement compter atterrit quand même dans son contexte.
Dans un shell, l’agent filtre avant de lire. tm payments outstanding --json | jq '[.data[].summary.outstanding_micros] | add / 1000000' renvoie un seul nombre : le total impayé en euros. tm invoices list --all --json | jq '[.data[] | select(.status == "draft")] | length' compte les brouillons sur toutes les pages. Les mêmes lignes fonctionnent dans une tâche cron ou un script shell, sans aucun agent.
Authentification : OAuth ou clé API
Dans MCP, l’autorisation est optionnelle. Les serveurs distants en HTTP doivent suivre le flux OAuth 2.1 de la spécification ; les serveurs locaux en stdio prennent leurs identifiants dans l’environnement. Pour une application de chat où chaque utilisateur se connecte avec son propre compte, OAuth est l’option la plus confortable.
Une CLI fonctionne généralement avec une clé API. C’est simple, mais cela demande du soin : la clé ne doit jamais apparaître dans ce que lit l’agent. tm la conserve dans un fichier local avec les droits 600 ou dans une variable d’environnement, échange une clé d’écriture contre un token valable une heure et n’affiche jamais la clé, même avec --verbose ou --dry-run. Un token issu de cet échange ne peut ni créer de nouvelles clés ni supprimer le compte.
Testabilité : simulation et même commande pour vous
Chaque appel qu’un agent fait via une CLI est une ligne que vous pouvez copier, lire et lancer vous-même. --dry-run va plus loin et montre méthode, URL et corps de la requête sans rien envoyer. Le travail de l’agent devient vérifiable avant qu’il ait lieu, ce qui compte surtout pour les factures.
MCP a aussi des outils pour cela, comme le MCP Inspector pour les développeurs. Mais un appel d’outil n’est pas quelque chose que vous tapez dans votre propre terminal pour voir ce qui se passe.
Versions : figer ou laisser évoluer
Une CLI est un paquet avec une version. Vous pouvez la figer (npx -y @time-momentum/cli@0.3.0), revenir en arrière (tm update --to <version>) et savoir qu’un script qui marchait hier marche aujourd’hui. Quand l’API change d’une façon qu’une ancienne version interpréterait mal, le serveur refuse cette version avec une erreur claire et la commande de mise à jour.
MCP versionne le protocole par date et permet aux serveurs d’annoncer des changements de leur liste d’outils à l’exécution. Un serveur distant décide lui-même des outils que vous obtenez aujourd’hui. C’est pratique tant que rien ne casse.
Portée : tout agent doté d’un shell
Claude Code, Codex, Cursor et la plupart des agents de code peuvent exécuter des commandes shell. Une CLI fonctionne dans tous sans que le client ait à prendre en charge quoi que ce soit d’autre, y compris dans les bacs à sable et la CI.
Quand MCP est le meilleur choix
- Les clients sans shell. claude.ai, Claude Desktop et les applications mobiles Claude accèdent aux outils externes via des connecteurs, qui sont des serveurs MCP (documentation Claude). Une CLI n’y peut rien.
- La découverte standardisée. Chaque serveur MCP répond à
tools/listde la même façon, et le registre officiel MCP recense les serveurs. Chaque CLI se documente à sa manière. - La connexion par utilisateur. OAuth permet à chacun de connecter son propre compte sans manipuler de clé.
- Les utilisateurs non techniques. Ajouter un connecteur dans une application de chat est plus simple qu’installer une ligne de commande.
Comment fait Time Momentum
Les agents de nos utilisateurs travaillent déjà dans un shell, sur des projets clients. Time Momentum n’a donc pas de serveur MCP. Il a tm, une ligne de commande qui pilote tout le produit : effort, clients, commandes, projets, factures et factures électroniques, paiements, rapports d’activité et rentabilité.
tm n’a aucune dépendance d’exécution. Chaque opération de l’API REST destinée à la ligne de commande a exactement une commande, 143 opérations dans la version 0.3.0, et un test l’impose à chaque modification de l’API. tm skill renvoie le guide d’utilisation correspondant à la version installée. Dans Claude Code, tm skill --install ajoute un court skill qui y renvoie, et Time Momentum existe aussi en plugin Claude Code.
Émettre ou annuler une facture et supprimer exigent un --yes explicite. Sans terminal, tm s’arrête sinon.
Pour aller plus loin
Pour les agents IA
Ce que votre agent peut faire dans Time Momentum via
Pour les agents IAtm, le modèle de sécurité et l’installation.Logiciels de gestion pour agents IA
Comment savoir si un logiciel permet à votre agent de travailler en sécurité avec clients, factures et paiements.
Lire le guide
Laissez votre agent gérer la facturation depuis le shell
- 30 jours de Pro
- Sans carte bancaire
- Ensuite, vous continuez avec Free
Questions fréquentes
Une CLI ou un serveur MCP : lequel est meilleur pour les agents IA ?
Pour les agents dotés d’un shell, comme Claude Code, Codex ou Cursor, une CLI bien conçue est généralement meilleure : elle ne charge que ce que l’agent demande, les résultats se filtrent avec des pipes avant que le modèle les lise, et vous pouvez refaire chaque appel vous-même. Pour les applications de chat sans shell, MCP est la seule option.
Les définitions d’outils MCP consomment-elles la fenêtre de contexte ?
Dans beaucoup de clients, oui : Anthropic écrivait en novembre 2025 que la plupart des clients MCP chargent toutes les définitions d’outils d’emblée. Claude Code les diffère désormais par défaut et ne charge que les noms d’outils au démarrage.
Qu’est-ce qui rend une CLI adaptée aux agents ?
Un catalogue de commandes lisible par machine, exactement un document JSON par appel, des erreurs en JSON, des codes de sortie qui ont un sens, aucune question interactive sans terminal, un flag de confirmation explicite pour les étapes destructrices, une simulation et aucun secret dans la sortie.
Time Momentum a-t-il un serveur MCP ?
Non. Les agents utilisent la ligne de commande tm, qui couvre chaque opération de l’API qui lui est destinée. Claude Code reçoit en plus un skill et un plugin.