Zum Inhalt springen
Sonenta

MCP

Claude Desktop einrichten

Sonenta liefert einen nativen MCP-Server, damit jeder MCP-fähige Client, Claude Desktop, Cursor, dein eigener Agent, Keys suchen, Übersetzungen vorschlagen, PRs reviewen und die Missing-Key-Queue inspizieren kann. Zwei Zeilen Config, dein Token, fertig.

1. API-Key holen

Geh in deinem Dashboard zu Org Settings → API Keys → Create. Vergib den Scope mcp:* (deckt alle fünf Tools unten ab). Das Secret wird nur einmal angezeigt; kopiere den vollständigen snt_live_<prefix>.<secret>-String.

Speichere ihn im OS-Keychain oder in einer lokalen .env, niemals committen. Der Key ist an deine Org gebunden (und optional an ein Projekt); Calls außerhalb des Scopes liefern 404. Aus dem Dashboard jederzeit widerrufbar; widerrufene Keys liefern beim nächsten Call 401.

2. Installieren (oder überspringen)

Der MCP-Server ist auf npm und Homebrew veröffentlicht. Mit npx musst du nichts installieren, Claude Desktop zieht bei jedem Start die neueste Version. Mit brew bekommst du ein gepinntes lokales Binary, nützlich hinter strikten Firewalls.

npx (empfohlen)
1// keine Installation nötig, npx zieht das neueste @sonenta/mcp on demand2npx -y @sonenta/mcp --version
Homebrew (Alternative) Tap erscheint zu V1
1// optional: einmal global installieren, kommt mit dem V1-Launch2brew install sonenta/tap/sonenta-mcp

3. Claude Desktop verdrahten

Öffne die Config-Datei von Claude Desktop, füge den sonenta-Eintrag unter mcpServers hinzu, beende die App und starte sie neu.

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": "snt_live_<prefix>.<secret>",10        "SONENTA_PROJECTS": "<uuid1>,<uuid2>"11      }12    }13  }14}

Drei Env-Variablen insgesamt: SONENTA_TOKEN (erforderlich), SONENTA_PROJECT (optional, pre-scope ein Projekt, damit der Agent nicht zuerst list_projects aufrufen muss) und SONENTA_API_BASE (optional, Default https://api.sonenta.dev; überschreibe für Self-Hosted oder Staging).

SONENTA_PROJECTS erfordert @sonenta/mcp ≥ 0.11.0. Bei älteren Releases siehe Rückwärtskompatibilität weiter unten.

Tool-Aufrufe über mehrere Projekte

Wenn SONENTA_PROJECTS mehr als eine UUID auflistet, kann der Agent nicht erraten, von welchem Projekt Sie sprechen, jeder Tool-Aufruf muss project_uuid enthalten. Mit einer einzelnen UUID (oder nur dem alten SONENTA_PROJECT) ist es optional und der Aufruf greift standardmäßig auf dieses Projekt zurück.

tools/call-Argumente
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}

Formulieren Sie Ihren Prompt mit dem Projekt im Sinn (« im Checkout-Projekt, liste die fehlenden Schlüssel für ja auf »), der Agent löst das Projekt zu seiner UUID auf und übergibt project_uuid beim Tool-Aufruf. Bei einem über mehrere Projekte mehrdeutigen Prompt ruft der Agent zuerst list_projects auf.

Cursor (und andere MCP-Clients)

Gleiches JSON, andere Datei. In Cursor leg sie unter .cursor/mcp.json ab (projektweit) oder ~/.cursor/mcp.json (userweit). Für andere Clients folge der MCP-Config-Doku deines Clients, der mcpServers.sonenta-Eintrag bleibt gleich.

.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": "snt_live_<prefix>.<secret>" }8    }9  }10}

Die 5 V1-Tools

Nach der Konfiguration stehen dem Agent diese Tools zur Verfügung. Du rufst sie nicht namentlich auf, beschreib deine Absicht im Chat, der Agent wählt aus. Die Namen unten sind die kanonischen Identifier, nützlich beim Lesen von Agent-Traces oder beim Bauen eigener Agents auf demselben Server.

list_projects Listet die Projekte auf, auf die der aktuelle API-Key zugreifen kann. Nützlich, um zu Beginn eines Chats einen Workspace zu wählen.

Args

  • limit number optionales Limit für die Anzahl zurückgegebener Projekte

Beispiel-Prompt

„List my Sonenta projects."

get_project_info Holt Projekt-Metadaten: Quellsprache, Zielsprachen, Namespaces, Gesamtanzahl Keys.

Args

  • project_uuid string required

Beispiel-Prompt

„Welche Sprachen und Namespaces shipt das Checkout-Projekt?"

list_missing_keys Listet ausstehende Missing-Key-Events auf, die vom Runtime-SDK erfasst wurden (cursor-paginiert). Filterbar nach Namespace oder Sprache.

Args

  • project_uuid string required
  • namespace string auf einen Namespace eingrenzen (z. B. "checkout")
  • language_code string auf eine Sprache eingrenzen (z. B. "ja")
  • cursor string Pagination-Cursor aus einem vorherigen Call
  • limit number Page-Size (Default 20)

Beispiel-Prompt

„Welche Übersetzungs-Keys fehlen für ja im Checkout-Namespace?"

propose_translation Reicht einen Übersetzungswert für einen Key in einer Zielsprache ein. Wird immer als Draft geschrieben; ein menschlicher Reviewer promotet später, Sonenta ist der Manager, nicht die Engine.

Args

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

Beispiel-Prompt

„Propose \"Confirmer la commande\" for checkout.review.confirm in fr-CA."

validate_translations Lintet eine JSON-i18next-Payload vor dem Push: ICU-Placeholder-Parität, fehlende/zusätzliche Keys, Type-Drift zwischen Locales.

Args

  • project_uuid string required
  • language_code string required
  • payload object required Übersetzungs-Map im JSON-i18next-Format

Beispiel-Prompt

„Validate this translation file against the project's English source."

Limits & Kontingente pro Plan

Sie zahlen, wenn ein Agent Ihr Projekt verändert, nicht wenn er es beobachtet. Lesezugriffe und Auflistungen sind kostenlos; Schreibvorgänge kosten eine Einheit; Bulk- und KI-unterstützte Vorgänge skalieren mit der geleisteten Arbeit.

Was als abrechenbarer Aufruf zählt

Lesezugriffe, kostenlos

list_missing, list_keys, get_translation, search, plus auth / discover / Meta. Durchstöbern Sie die Warteschlange fehlender Schlüssel den ganzen Tag, sie berührt Ihr Kontingent nie.

Schreibvorgänge, 1 Einheit

Jeder set / create / update / delete an einem Schlüssel oder einer Übersetzung kostet eine Einheit, unabhängig von der Payload-Größe.

Bulk, 1 Einheit pro Schlüssel

Endpunkte für mehrere Schlüssel (z. B. acknowledge) rechnen pro berührtem Schlüssel ab: ein Acknowledge von 50 Schlüsseln belastet 50 Einheiten, mit Rollback bei partiellem Reject.

KI / Auto-Translate, ×5

Aufrufe, die ein LLM aufrufen (Auto-Translate, AI Quality Review, suggest), rechnen 5 Einheiten pro Aufruf ab. Das höhere Gewicht spiegelt die Modellkosten wider.

Obergrenzen pro Plan

Monatliches Kontingent, hartes Limit pro Minute, gleichzeitige MCP-Sitzungen und ob Schreibvorgänge erlaubt sind. Dieselben Werte speisen den Header X-MCP-Quota-Remaining bei jeder Antwort.

Plan Einheiten / Monat Rate Sitzungen Schreibvorgänge
Free NaN NaNReq/min NaN blockiert
Hobby NaN NaNReq/min NaN blockiert
Pro NaN NaNReq/min NaN blockiert
Team NaN NaNReq/min NaN blockiert

Wenn Sie eine Obergrenze erreichen

Über der Rate pro Minute → 429 mcp_rate_limited mit Retry-After (Sekunden). Über dem monatlichen Kontingent → 429 mcp_quota_exceeded mit Retry-After, ausgerichtet auf den Rollover. Schreibvorgänge im Free-Plan → 403 mcp_writes_disabled. Kontingente werden am 1. jedes Kalendermonats um Mitternacht UTC zurückgesetzt.

Funktion prüfen

  1. 1 Starte Claude Desktop komplett neu (beenden, neu starten, die Config wird beim Start gelesen).
  2. 2 Öffne einen neuen Chat. Das Hammer-Icon sollte sonenta mit 5 verfügbaren Tools zeigen.
  3. 3 Tippe „List my Sonenta projects." Der Agent sollte list_projects aufrufen und deine Workspaces zurückgeben.

Hängst fest? Schau in die Logs von Claude Desktop unter ~/Library/Logs/Claude/mcp*.log (macOS). 90 % der Probleme sind Tippfehler im JSON oder ein veralteter Token.

Rückwärtskompatibilität

Die älteren Namen SONENTA_TOKEN und SONENTA_API_BASE (pre-0.4.0) werden weiterhin als Fallback akzeptiert; das SDK liest sie still, wenn die kanonischen Namen nicht gesetzt sind.

Weiter