verbatra mcp
Démarre le serveur MCP en stdio qui expose les outils de verbatra à n'importe quel client MCP.
Page traduite automatiquement
Démarre un serveur Model Context Protocol en stdio : le transport standard en processus local que les clients MCP (Claude Desktop, Claude Code, Cursor et d'autres) utilisent pour lancer un serveur d'outils et lui parler. Il donne à un agent hébergé dans un terminal ou headless les mêmes capacités de statut de traduction, de glossaire et d'édition que les outils d'agent navigateur de Studio exposent, sans navigateur, sans port et sans application monopage servie.
Disponible à partir de @verbatra/mcp 0.2.0
Synopsis
verbatra mcp [flags]@verbatra/mcp fournit aussi son propre binaire, donc un client MCP peut le lancer directement sans passer par la CLI verbatra :
verbatra-mcp [flags]Les deux formes prennent les trois mêmes options et démarrent le même serveur, mais ce qui l'entoure diffère :
verbatra mcpcharge.env.localpuis.envdepuis le répertoire de travail avant de démarrer ;verbatra-mcpne charge ni l'un ni l'autre, donc passe toute clé d'API dans l'environnement avec lequel le client MCP le lance.verbatra mcprejette une option inconnue comme erreur d'utilisation et sort avec2;verbatra-mcpignore les options inconnues.- Une erreur de démarrage ou de config sort avec
2depuisverbatra mcpet avec1depuisverbatra-mcp. verbatra mcps'arrête de force avec le code de sortie130sur une seconde interruption pendant l'extinction ;verbatra-mcpn'a pas ce chemin.
Options
| Option | Argument | Défaut | Effet |
|---|---|---|---|
--cwd | <path> | répertoire courant | résout la config et les fichiers de locale depuis ce répertoire |
--config | <path> | recherche automatique | charge ce fichier de config au lieu d'en chercher un |
--allow-spend | aucun | désactivé | expose les deux outils qui appellent un fournisseur de traduction |
Quand --allow-spend est absente, le serveur lit à la place la variable d'environnement VERBATRA_MCP_ALLOW_SPEND : 1, true, yes ou on (insensible à la casse) compte comme activé. L'option CLI l'emporte toujours sur la variable d'environnement. Sans l'une ni l'autre, translation.retranslateEntry et translation.translatePending ne sont pas exposés du tout : un client MCP qui liste les outils ne les voit jamais, et les appeler par leur nom échoue comme un outil inconnu. C'est une garantie par processus, pas une vérification par appel : un outil soumis à l'autorisation de dépense est donc structurellement impossible à appeler, et pas seulement refusé au moment de l'appel.
Configurer un client MCP
Pointe ton client MCP vers le binaire verbatra-mcp. Pour Claude Desktop, ajoute ceci à ton claude_desktop_config.json :
{
"mcpServers": {
"verbatra": {
"command": "npx",
"args": ["-y", "@verbatra/mcp", "--cwd", "/path/to/your/project"],
"env": {
"ANTHROPIC_API_KEY": "your-api-key-here"
}
}
}
}Omets complètement le bloc env et son --allow-spend pour un serveur en lecture seule et édition locale uniquement : project.snapshot, les outils de statut et de glossaire, et translation.editEntry n'appellent jamais de fournisseur et n'ont besoin d'aucune clé. Ajoute --allow-spend au tableau args dès que tu veux aussi disposer de translation.retranslateEntry et translation.translatePending, et définis la variable d'environnement de clé d'API que lit ton fournisseur configuré (voir Fournisseurs).
Si tu invoques déjà tout via la CLI verbatra, lance-le plutôt comme sous-commande :
{
"mcpServers": {
"verbatra": {
"command": "npx",
"args": ["-y", "@verbatra/cli", "mcp", "--cwd", "/path/to/your/project"]
}
}
}Outils
| Outil | Ce qu'il fait | Lecture seule | Appelle un fournisseur |
|---|---|---|---|
project.snapshot | config résolue : locale source, locales cibles, format, motif de fichiers (files.pattern), id du fournisseur, origine de la config, indicateur de glossaire | oui | non |
status.check | nombre de clés manquantes, obsolètes et à jour par locale | oui | non |
status.diff | liste par locale des clés qui seraient ajoutées, retraduites ou orphelines | oui | non |
glossary.get | chaque terme du glossaire et sa traduction, expurgé des secrets | oui | non |
glossary.write | ajoute, remplace ou supprime un terme du glossaire | non | non |
lock.state | version du fichier de verrouillage et, par locale cible, son nombre de clés enregistrées ainsi que ses décomptes de clés manquantes, obsolètes et à jour | oui | non |
key.integrity | dérive des placeholders, du balisage en ligne et d'ICU d'une clé par rapport à la référence du fichier de verrouillage, par locale (ne vérifie que les clés dont le texte source a changé depuis la référence ; un tableau entries vide signifie vérifiée et inchangée) | oui | non |
key.value | texte source et cible actuel d'une clé | oui | non |
translation.editEntry | écrit une traduction manuelle pour une clé dans une locale, soumise à la barrière d'intégrité des placeholders, du balisage en ligne et d'ICU | non | non |
translation.retranslateEntry | demande au fournisseur configuré de retraduire une clé dans une locale | non | oui |
translation.translatePending | traduit chaque clé manquante ou obsolète dans toutes les locales cibles | non | oui |
review.queue | clés que la dernière exécution a signalées pour une révision humaine, et pourquoi | oui | non |
usage.summary | utilisation des tokens et statut du budget de la dernière exécution, y compris budget.standing et budget.supported | oui | non |
translation.retranslateEntry et translation.translatePending ne sont exposés que lorsque le serveur a été démarré avec --allow-spend. L'entrée de chaque outil, et la sortie de chaque outil dont la forme de résultat est petite et fermée, est un schéma JSON dérivé du même schéma zod contre lequel le serveur valide l'appel. Appeler un nom d'outil inconnu est une erreur au niveau du protocole ; appeler un outil connu avec une entrée qui échoue à la validation renvoie un résultat qui nomme le champ fautif, pour qu'un agent puisse lire l'échec et se corriger lui-même.
Les deux outils qui écrivent une entrée, translation.editEntry et translation.retranslateEntry, sont en outre protégés par outil, par locale et par clé : pendant qu'un appel pour une entrée donnée est encore en cours, un second appel au même outil nommant les mêmes locale et key n'est ni mis en file ni exécuté en parallèle. Il reçoit un résultat isError dont le texte indique qu'un appel correspondant est déjà en cours, pour que deux agents (ou un agent qui réessaie) ne se disputent pas la même entrée via le même outil. Les appels pour d'autres clés ou d'autres locales continuent de s'exécuter en même temps. translation.translatePending n'a pas de tel verrou.
Entrées et résultats
status.check,status.diffetkey.integrityprennent un tableaulocalesfacultatif (au moins une entrée) qui restreint le résultat à ces locales ;key.integrityprend aussi lakeyà vérifier.translation.editEntryprendlocale,keyetvalue, avecvaluelimitée à 20 000 caractères.glossary.writeprend{ term, translation }, avectermlimité à 200 caractères ettranslationà 2 000 ;translation: nullsupprime le terme. Il nécessite un glossaire stocké dans un fichier (la cléglossaryde la config pointant vers un fichier JSON) ; un glossaire inline ou l'absence de glossaire échoue avecGLOSSARY_NOT_FILE_BACKED.translation.editEntryettranslation.retranslateEntryrenvoient{ accepted, value, reason?, details? }. Une valeur refusée portereason, parmiplaceholder,markup,icu,degenerateouempty, etdetailsqui nomme ce qui a échoué ;translation.retranslateEntryajoutereviewReasonsà un résultat accepté : les signalements des heuristiques de révision pour la nouvelle valeur, vide quand aucune ne s'est déclenchée.lock.staterenvoieexistset, quand le fichier de verrouillage existe, saversionainsi que, par locale, les décompteskeyCount,missing,staleetupToDate.usage.summaryrenvoie l'usagede la dernière exécution et, quand un budget de tokens était configuré, unbudgetdont lestandingvautwithin,stopped-before-ceilingoureached, et dont lesupportedindique si le chiffre compté provient entièrement de l'utilisation rapportée par le fournisseur lui-même.
Disponible à partir de @verbatra/mcp 0.2.1
Les contrôles de balisage en ligne dans key.integrity (markupMatches, markupDetails) et dans translation.editEntry (la raison markup), un id de format custom: dans project.snapshot et budget.standing dans usage.summary sont arrivés avec cette version.
Expurgation des secrets
Chaque résultat d'outil et chaque ligne de log passe par la même expurgation des secrets que Studio utilise : une valeur ayant la forme d'une clé d'API de fournisseur, ou la valeur exacte actuelle d'une variable d'environnement de fournisseur configurée, est remplacée par [REDACTED] avant même d'atteindre le client ou stderr. glossary.get et glossary.write signalent aussi quels termes ont été expurgés, pour que tu puisses distinguer un placeholder expurgé du vrai texte et ne jamais le réécrire.
stdout est le canal du protocole
Le transport stdio de MCP utilise stdout exclusivement pour les messages du protocole. verbatra mcp et verbatra-mcp n'impriment jamais de bannière, de ligne de log ni rien d'autre sur stdout ; tous les logs et diagnostics vont sur stderr à la place. Le serveur charge la config avant de connecter le transport, donc une erreur de config est écrite sur stderr immédiatement et le processus sort sans jamais parler le protocole. Une fois en marche, les diagnostics par appel (un appel échoué, un appel rejeté parce qu'un appel correspondant est en cours, un outil inconnu) vont aussi sur stderr.
Installation
@verbatra/mcp est un paquet à part, atteint via un import dynamique pour que le reste de la CLI fonctionne sans lui. S'il n'est pas installé, verbatra mcp sort avec le code 2 en affichant :
Verbatra's MCP server requires @verbatra/mcp. Install it with: pnpm add -D @verbatra/mcpLancer verbatra-mcp directement ne nécessite aucune CLI : installe @verbatra/mcp seul, ou laisse npx le récupérer à la demande comme montré ci-dessus.
Exemples
# start the MCP server with only local, non-spending tools
verbatra mcp
# also advertise the provider-calling tools
verbatra mcp --allow-spend
# resolve a project outside the current directory
verbatra mcp --cwd /path/to/project --config verbatra.config.tsCodes de sortie
Voici les codes de sortie de verbatra mcp ; le binaire autonome verbatra-mcp diffère comme décrit dans le synopsis ci-dessus.
| Code | Signification |
|---|---|
0 | arrêté proprement par une seule interruption (Ctrl-C ou SIGTERM) |
1 | l'arrêt a échoué : la fermeture du serveur a levé une erreur pendant l'extinction |
2 | n'a pas pu démarrer : une erreur de config, @verbatra/mcp non installé, ou une erreur d'utilisation |
130 | arrêté de force par une seconde interruption pendant que l'extinction était en cours |
Voir aussi
verbatra studioet Piloter Studio avec un agent de navigateur couvrent la surface d'agent basée sur le navigateur que ce serveur complète.- Fournisseurs documente de quelle variable d'environnement chaque fournisseur lit sa clé d'API.
verbatra checketverbatra diffsont les mêmes calculs questatus.checketstatus.diffexposent.