Saltar al contenido
Sonenta

MCP

Configurar Claude Desktop

Sonenta incluye un servidor MCP nativo para que cualquier cliente compatible con MCP — Claude Desktop, Cursor, tu propio agente — pueda buscar claves, proponer traducciones, revisar PRs e inspeccionar la cola de claves faltantes. Dos líneas de config, tu token, listo.

1. Obtén una API key

En tu dashboard, ve a Org Settings → API Keys → Create. Asígnale el scope mcp:* (cubre las cinco herramientas de abajo). El secret se muestra una sola vez; copia la cadena completa vrb_live_<prefix>.<secret>.

Guárdala en el llavero del SO o en un .env local — nunca la commitees. La key está ligada a tu org (y opcionalmente a un proyecto); las llamadas fuera de ese scope devuelven 404. Revoca desde el dashboard cuando quieras; las keys revocadas devuelven 401 en la siguiente llamada.

2. Instala (o sáltatelo)

El servidor MCP se publica en npm y Homebrew. Con npx no necesitas instalar nada — Claude Desktop tira de la última versión en cada arranque. Con brew obtienes un binario local fijado, útil tras firewalls estrictos.

npx (recomendado)
1// sin instalación — npx tira de la última @sonenta/mcp bajo demanda2npx -y @sonenta/mcp --version
Homebrew (alternativa) Tap se publica en V1
1// opcional: instalar globalmente una vez — llega con el lanzamiento V12brew install sonenta/tap/sonenta-mcp

3. Conecta Claude Desktop

Abre el archivo de config de Claude Desktop, añade la entrada verbumia bajo mcpServers, luego cierra y vuelve a abrir la app.

claude_desktop_config.json
1// macOS:   ~/Library/Application Support/Claude/claude_desktop_config.json2// Windows: %APPDATA%/Claude/claude_desktop_config.json3{4  "mcpServers": {5    "sonenta": {6      "command": "npx",7      "args": ["-y", "@sonenta/mcp"],8      "env": {9        "SONENTA_API_KEY": "vrb_live_<prefix>.<secret>",10        "SONENTA_PROJECTS": "<uuid1>,<uuid2>"11      }12    }13  }14}

Tres variables de entorno en total: SONENTA_TOKEN (obligatoria), SONENTA_PROJECT (opcional — pre-fija un proyecto para que el agente no tenga que llamar a list_projects primero) y SONENTA_API_BASE (opcional — por defecto https://api.sonenta.com; sobrescríbela para self-hosted o staging).

SONENTA_PROJECTS requires @sonenta/mcp ≥ 0.11.0. On older releases, see Backwards compatibility below.

Multi-project tool calls

When SONENTA_PROJECTS lists more than one UUID, the agent can't infer which project you mean — every tool call must include project_uuid. With a single UUID (or only the legacy SONENTA_PROJECT set), it's optional and defaults to that project.

tools/call arguments
1// list_missing_keys — project_uuid is REQUIRED when SONENTA_PROJECTS lists more than one UUID2{3  "name": "list_missing_keys",4  "arguments": {5    "project_uuid": "<uuid1>",6    "namespace": "checkout",7    "language_code": "ja"8  }9}

Phrase your prompt with the project in mind (« in the Checkout project, list missing keys for ja ») — the agent will resolve the project to its UUID and pass project_uuid on the tool call. For ambiguous prompts across multiple projects, the agent will call list_projects first.

Cursor (y otros clientes MCP)

Mismo JSON, archivo distinto. En Cursor, ponlo en .cursor/mcp.json (scope de proyecto) o ~/.cursor/mcp.json (scope de usuario). Para otros clientes, sigue la doc de configuración MCP de tu cliente — la entrada mcpServers.verbumia es idéntica.

.cursor/mcp.json
1// .cursor/mcp.json (project-scoped) or ~/.cursor/mcp.json (user-scoped)2{3  "mcpServers": {4    "sonenta": {5      "command": "npx",6      "args": ["-y", "@sonenta/mcp"],7      "env": { "SONENTA_API_KEY": "vrb_live_<prefix>.<secret>" }8    }9  }10}

Las 5 herramientas V1

Una vez configurado, el agente dispone de estas herramientas. No las llamas por nombre — describe tu intención en el chat y el agente las elige. Los nombres de abajo son los identificadores canónicos, útiles al leer trazas del agente o construir agentes propios sobre el mismo servidor.

list_projects Enumera los proyectos a los que la API key actual tiene acceso. Útil para elegir un workspace al inicio de un chat.

Args

  • limit number límite opcional sobre el número de proyectos devueltos

Prompt de ejemplo

"Lista mis proyectos de Sonenta."

get_project_info Obtén metadatos del proyecto: idioma fuente, idiomas destino, namespaces, total de claves.

Args

  • project_uuid string required

Prompt de ejemplo

"¿Qué idiomas y namespaces lleva el proyecto Checkout?"

list_missing_keys Lista los eventos pendientes de claves faltantes capturados por el SDK en runtime (paginado por cursor). Filtra por namespace o idioma.

Args

  • project_uuid string required
  • namespace string limita a un namespace (p. ej. "checkout")
  • language_code string limita a un idioma (p. ej. "ja")
  • cursor string cursor de paginación devuelto por una llamada previa
  • limit number tamaño de página (default 20)

Prompt de ejemplo

"¿Qué claves de traducción faltan para ja en el namespace checkout?"

propose_translation Envía un valor de traducción para una clave en un idioma destino. Siempre se escribe como draft; un revisor humano la promueve después — Sonenta es el gestor, no el motor.

Args

  • project_uuid string required
  • key string required
  • namespace string required
  • language_code string required
  • value string required

Prompt de ejemplo

"Propón \"Confirmer la commande\" para checkout.review.confirm en fr-CA."

validate_translations Lintea un payload JSON i18next antes de pushear: paridad de placeholders ICU, claves faltantes/sobrantes, drift de tipos entre locales.

Args

  • project_uuid string required
  • language_code string required
  • payload object required mapa de traducciones con forma JSON i18next

Prompt de ejemplo

"Valida este archivo de traducción contra la fuente inglesa del proyecto."

Plan limits & quotas

You pay when an agent mutates your project, not when it observes it. Reads and listings are free; writes burn one unit; bulk and AI-assisted ops scale with the work they do.

What counts as a billable call

Reads — free

list_missing, list_keys, get_translation, search, plus auth / discover / meta. Browse the missing-key queue all day — it never touches your quota.

Writes — 1 unit

Each set / create / update / delete on a key or translation costs one unit, regardless of payload size.

Bulk — 1 unit per key

Multi-key endpoints (e.g. acknowledge) bill per key touched: a 50-key acknowledge debits 50 units, with rollback on partial-reject.

AI / auto-translate — ×5

Calls that invoke an LLM (auto-translate, AI Quality Review, suggest) bill 5 units per call. Higher weight reflects model cost.

Per-plan ceilings

Monthly quota, hard per-minute rate, concurrent MCP sessions, and whether writes are allowed. The same numbers feed the X-MCP-Quota-Remaining header on every response.

Plan Units / month Rate Sessions Writes
Free NaN NaNreq/min NaN blocked
Hobby NaN NaNreq/min NaN blocked
Pro NaN NaNreq/min NaN blocked
Team NaN NaNreq/min NaN blocked

When you hit a ceiling

Over the per-minute rate → 429 mcp_rate_limited with Retry-After (seconds). Over the monthly quota → 429 mcp_quota_exceeded with Retry-After set to the rollover. Free plan writes → 403 mcp_writes_disabled. Quotas reset on the 1st of each calendar month, UTC.

Verificar que funciona

  1. 1 Reinicia Claude Desktop completamente (cierra, relanza — la config se lee al arranque).
  2. 2 Abre un chat nuevo. El icono del martillo debe mostrar verbumia con 5 herramientas disponibles.
  3. 3 Escribe "List my Sonenta projects." El agente debería llamar a list_projects y devolver tus workspaces.

¿Atascado? Revisa los logs de Claude Desktop en ~/Library/Logs/Claude/mcp*.log (macOS). El 90% de los problemas son typos en el JSON o un token caducado.

Backwards compatibility

Los nombres anteriores SONENTA_TOKEN y SONENTA_API_BASE (pre-0.4.0) siguen aceptándose como fallback; el SDK los lee en silencio si los canónicos no están definidos.

Siguiente