verbatra mcp
Arranca el servidor MCP por stdio que expone las herramientas de verbatra a cualquier cliente MCP.
Página traducida automáticamente
Arranca un servidor Model Context Protocol por stdio: el transporte estándar de proceso local que usan los clientes MCP (Claude Desktop, Claude Code, Cursor y otros) para lanzar un servidor de herramientas y hablar con él. Le da a un agente alojado en terminal o headless las mismas capacidades de estado de traducción, glosario y edición que exponen las herramientas de agente del navegador de Studio, sin navegador, sin puerto y sin servir una aplicación de una sola página.
Disponible a partir de @verbatra/mcp 0.2.0
Sinopsis
verbatra mcp [flags]@verbatra/mcp también incluye su propio binario, así que un cliente MCP puede lanzarlo directamente sin pasar por la CLI de verbatra:
verbatra-mcp [flags]Ambas formas aceptan los mismos tres flags y arrancan el mismo servidor, pero lo que lo rodea difiere:
verbatra mcpcarga.env.localy luego.envdesde el directorio de trabajo antes de arrancar;verbatra-mcpno carga ninguno de los dos, así que pasa cualquier clave de API en el entorno con el que lo lanza el cliente MCP.verbatra mcprechaza un flag desconocido como error de uso y sale con2;verbatra-mcpignora los flags desconocidos.- Un error de arranque o de configuración sale con
2desdeverbatra mcpy con1desdeverbatra-mcp. verbatra mcpse detiene a la fuerza con el código de salida130ante una segunda interrupción durante el apagado;verbatra-mcpno tiene esa vía.
Flags
| Flag | Argumento | Por defecto | Efecto |
|---|---|---|---|
--cwd | <path> | directorio actual | resuelve la configuración y los archivos de locale desde este directorio |
--config | <path> | busca uno | carga este archivo de configuración en lugar de buscar uno |
--allow-spend | ninguno | desactivado | expone las dos herramientas que llaman a un proveedor de traducción |
Cuando falta --allow-spend, el servidor lee en su lugar la variable de entorno VERBATRA_MCP_ALLOW_SPEND: 1, true, yes u on (sin distinguir mayúsculas) cuenta como activado. El flag de la CLI siempre gana sobre la variable de entorno. Sin ninguno de los dos, translation.retranslateEntry y translation.translatePending no se exponen en absoluto: un cliente MCP que liste las herramientas nunca las ve, y llamarlas por nombre falla como herramienta desconocida. Esta es una garantía por proceso, no una comprobación por llamada, así que una herramienta bloqueada por gasto es estructuralmente imposible de llamar, no simplemente rechazada en el momento de la llamada.
Configurar un cliente MCP
Apunta tu cliente MCP al binario verbatra-mcp. Para Claude Desktop, añade esto a tu 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"
}
}
}
}Omite por completo el bloque env y su --allow-spend para un servidor solo de lectura y edición local: project.snapshot, las herramientas de estado y glosario, y translation.editEntry nunca llaman a un proveedor ni necesitan una clave. Añade --allow-spend al array args en cuanto también quieras translation.retranslateEntry y translation.translatePending disponibles, y define la variable de entorno de la clave de API que lee tu proveedor configurado (consulta Proveedores).
Si ya invocas todo a través de la CLI de verbatra, ejecútalo como subcomando en su lugar:
{
"mcpServers": {
"verbatra": {
"command": "npx",
"args": ["-y", "@verbatra/cli", "mcp", "--cwd", "/path/to/your/project"]
}
}
}Herramientas
| Herramienta | Qué hace | Solo lectura | Llama a un proveedor |
|---|---|---|---|
project.snapshot | configuración resuelta: locale de origen, locales de destino, formato, patrón de archivos (files.pattern), id del proveedor, origen de la configuración, indicador de glosario | sí | no |
status.check | recuento por locale de claves faltantes, obsoletas y al día | sí | no |
status.diff | lista por locale de las claves que se añadirían, se retraducirían o quedarían huérfanas | sí | no |
glossary.get | cada término del glosario y su traducción, con los secretos redactados | sí | no |
glossary.write | añade, reemplaza o elimina un término del glosario | no | no |
lock.state | versión del archivo de bloqueo y, por locale de destino, su recuento de claves registradas más los recuentos de faltantes, obsoletas y al día | sí | no |
key.integrity | desfase de placeholders, marcado en línea e ICU de una clave respecto a la línea base del archivo de bloqueo, por locale (solo revisa claves cuyo texto de origen cambió desde la línea base; un array entries vacío significa revisada y sin cambios) | sí | no |
key.value | texto de origen y destino actual de una clave | sí | no |
translation.editEntry | escribe una traducción manual para una clave en un locale, verificada por la puerta de integridad de placeholders, marcado en línea e ICU | no | no |
translation.retranslateEntry | pide al proveedor configurado que retraduzca una clave en un locale | no | sí |
translation.translatePending | traduce cada clave faltante u obsoleta en todos los locales de destino | no | sí |
review.queue | claves que la última ejecución marcó para revisión humana, y por qué | sí | no |
usage.summary | uso de tokens y estado del presupuesto de la última ejecución, incluidos budget.standing y budget.supported | sí | no |
translation.retranslateEntry y translation.translatePending solo se exponen cuando el servidor se inició con --allow-spend. La entrada de cada herramienta, y la salida de cada herramienta cuya forma de resultado es pequeña y cerrada, es un JSON Schema derivado del mismo esquema zod contra el que el servidor valida la llamada. Llamar a un nombre de herramienta desconocido es un error a nivel de protocolo; llamar a una herramienta conocida con una entrada que falla la validación devuelve un resultado que nombra el campo problemático, así que un agente puede leer el fallo y autocorregirse.
Los dos escritores de entradas, translation.editEntry y translation.retranslateEntry, están además protegidos por herramienta, locale y clave: mientras una llamada para una entrada sigue en curso, una segunda llamada a la misma herramienta que nombre el mismo locale y la misma key no se encola ni se ejecuta en paralelo. Recibe un resultado isError cuyo texto indica que ya hay una llamada equivalente en curso, así que dos agentes (o un agente que reintenta) no pueden competir por la misma entrada a través de la misma herramienta. Las llamadas para otras claves u otros locales siguen ejecutándose a la vez. translation.translatePending no tiene esa protección.
Entradas y resultados
status.check,status.diffykey.integrityaceptan un arraylocalesopcional (con al menos una entrada) que limita el resultado a esos locales;key.integritytambién recibe lakeyque se va a comprobar.translation.editEntryrecibelocale,keyyvalue, convaluelimitado a 20.000 caracteres.glossary.writerecibe{ term, translation }, contermlimitado a 200 caracteres ytranslationa 2.000;translation: nullelimina el término. Necesita un glosario respaldado por archivo (la claveglossaryde la configuración apuntando a un archivo JSON); un glosario en línea, o no tener ninguno, falla conGLOSSARY_NOT_FILE_BACKED.translation.editEntryytranslation.retranslateEntrydevuelven{ accepted, value, reason?, details? }. Un valor rechazado llevareason, uno deplaceholder,markup,icu,degenerateoempty, ydetailsnombrando lo que falló;translation.retranslateEntryañadereviewReasonsa un resultado aceptado: las señales de las heurísticas de revisión para el nuevo valor, vacío cuando no saltó ninguna.lock.statedevuelveexistsy, cuando el archivo de bloqueo existe, suversiony, por locale, los recuentoskeyCount,missing,staleyupToDate.usage.summarydevuelve elusagede la última ejecución y, cuando se configuró un presupuesto de tokens, unbudgetcuyostandingeswithin,stopped-before-ceilingoreached, y cuyosupportedindica si la cifra contada es en su totalidad el uso que informó el propio proveedor.
Disponible a partir de @verbatra/mcp 0.2.1
Las comprobaciones de marcado en línea en key.integrity (markupMatches, markupDetails) y en translation.editEntry (el motivo markup), un id de formato custom: en project.snapshot y budget.standing en usage.summary llegaron en esta versión.
Redacción de secretos
Cada resultado de herramienta y cada línea de log pasa por la misma redacción de secretos que usa Studio: un valor con forma de clave de API de proveedor, o el valor exacto actual de una variable de entorno de proveedor configurada, se reemplaza por [REDACTED] antes de llegar siquiera al cliente o a stderr. glossary.get y glossary.write también informan de qué términos se redactaron, así que puedes distinguir un placeholder redactado del texto real y no volver a escribirlo nunca.
stdout es el canal del protocolo
El transporte stdio de MCP usa stdout exclusivamente para mensajes de protocolo. verbatra mcp y verbatra-mcp nunca imprimen un banner, una línea de log ni nada más en stdout; todo log y diagnóstico va a stderr en su lugar. El servidor carga la configuración antes de conectar el transporte, así que un error de configuración se escribe en stderr de inmediato y el proceso sale sin llegar a hablar el protocolo. Una vez en marcha, los diagnósticos por llamada (una llamada fallida, una llamada rechazada porque ya hay una equivalente en curso, una herramienta desconocida) también van a stderr.
Instalación
@verbatra/mcp es un paquete aparte, al que se llega mediante un import dinámico para que el resto de la CLI funcione sin él. Si no está instalado, verbatra mcp sale con 2 y este mensaje:
Verbatra's MCP server requires @verbatra/mcp. Install it with: pnpm add -D @verbatra/mcpEjecutar verbatra-mcp directamente no necesita la CLI en absoluto: instala @verbatra/mcp por separado, o deja que npx lo obtenga bajo demanda como se muestra arriba.
Ejemplos
# 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.tsCódigos de salida
Estos son los códigos de salida de verbatra mcp; el verbatra-mcp independiente difiere como se describe en la sinopsis de arriba.
| Código | Significado |
|---|---|
0 | detenido limpiamente por una sola interrupción (Ctrl-C, o SIGTERM) |
1 | la parada falló: cerrar el servidor lanzó un error durante el apagado |
2 | no se pudo arrancar: un error de configuración, @verbatra/mcp no instalado, o un error de uso |
130 | detenido a la fuerza por una segunda interrupción mientras el apagado estaba en curso |
Relacionado
verbatra studioy Opera Studio con un agente del navegador cubren la superficie de agente basada en navegador que este servidor complementa.- Proveedores documenta de qué variable de entorno lee cada proveedor su clave de API.
verbatra checkyverbatra diffson los mismos cálculos que exponenstatus.checkystatus.diff.