paraglide-i18n-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@paraglide-i18n-mcpshow me which strings are still untranslated in French"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
paraglide-i18n-mcp
MCP server for Paraglide JS / inlang i18n catalogs. Lets an MCP-aware client (Claude Code, Codex, etc.) manage translations, variants, and plural forms without parsing catalog files itself.
This is a pre-release scaffold at v0.1.0. The package is not on npm yet; install from source. Sister project of xcstrings-mcp, which does the same job for Apple .xcstrings.
What it does
Exposes 24 tools and 4 MCP resources over stdio. The client calls them, the server does the catalog I/O.
The interesting part is what it refuses to do. Translation work belongs to the LLM. The server does not generate text. It validates placeholders, plural completeness against CLDR, markup balance, schema integrity. Writes go through an atomic protocol: temp file, fsync, rename, fsync parent, per-file mutex. Path traversal, OOM via oversized inputs, and ReDoS regexes all get rejected at the boundary, not at the handler.
Tools group by area:
Area | Tools |
Project lifecycle |
|
Translation |
|
Keys |
|
Variants, plurals |
|
Locale |
|
Diff, build |
|
Every tool description carries a structured shape (Use after, Errors, Capabilities, Response, Limits, Pair with) so the LLM knows when to call it and what to expect back without round-tripping through the input schema.
Related MCP server: i18n-tools
Install (local, pre-npm)
Clone and build:
git clone https://github.com/Murzav/paraglide-i18n-mcp.git
cd paraglide-i18n-mcp
bun install --frozen-lockfile
bun run buildThis produces dist/bin/cli.mjs (ESM). Runs on Node ≥22.17 or Bun ≥1.3.
If you don't have bun installed, get it from bun.sh (one-line installer) or use npm equivalents at your own risk (the lockfile is bun.lock, so install order may differ).
Wire it into your MCP client
Claude Code
Add to your MCP settings (the file path varies by platform; check Claude Code docs):
{
"mcpServers": {
"paraglide": {
"command": "node",
"args": ["/abs/path/to/paraglide-i18n-mcp/dist/bin/cli.mjs"]
}
}
}Codex CLI
# ~/.codex/config.toml
[[mcp_servers]]
name = "paraglide"
command = "node"
args = ["/abs/path/to/paraglide-i18n-mcp/dist/bin/cli.mjs"]Any MCP client
The server speaks JSON-RPC over stdio. Spawn node dist/bin/cli.mjs and hold stdin/stdout open. The CLI takes no runtime flags; configure it via the env vars below.
To verify the binary works at all:
node dist/bin/cli.mjs --version
node dist/bin/cli.mjs --helpConfiguration
Environment variables:
Var | Default | What it does |
|
|
|
|
|
|
|
|
|
| unset | Set to |
|
| After this many ms idle, a cached project is evicted (handle closed, ~200 MB RSS released). Next access re-parses from disk. Set to |
Quick workflow
A typical session looks like:
discover_filesto find inlang projects under a directory, or skip straight to step 2 if you already know the path.parse_paraglideto load and cache it.get_untranslated(orget_coverage) to see what's missing.submit_translationsfor flat bundles, oradd_variant_arm/submit_plural_formsfor variant bundles, to write.validate_translationsto catch placeholder, plural, or markup issues before they reach production.compile_messagesto run paraglide-js codegen.
get_diff between snapshots tells you what changed since the last parse_paraglide. health_check reports server version, installed @inlang/sdk version, and cached projects. Use it as a smoke test when wiring the server into a new client.
Status & quality
3 ultrareview rounds across the codebase. 50 unique findings, 49 fixed, 1 deferred with documented rationale.
610 tests across 92 files. Coverage: statements 97%, branches 90%, functions 99%, lines 97%.
v0.1.0 supports
plugin-message-formatv4 only. Other plugins resolve to a read-only stub. Full multi-plugin write support lands in v0.1.x.@inlang/sdkpinned to exact2.9.3.health_checkwarns on an installed-version mismatch.
See docs/spec.md for design decisions, CHANGELOG.md for release notes.
Development
bun run test # vitest one-shot
bun run test:watch # vitest watch
bun run coverage # v8 coverage report
bun run lint # oxlint
bun run format:check # oxfmt
bun run typecheck # tsc --noEmit
bun run dev # run the server with --watchThe pre-commit hook runs lint + format + typecheck on staged files. Don't bypass it.
License
Dual-licensed under either of:
Apache License 2.0 (LICENSE-APACHE)
MIT License (LICENSE-MIT)
at your option.
This server cannot be deployed
Maintenance
Related MCP Connectors
Lingo.dev MCP Server - World-class i18n implementation with ICU MessageFormat.
MCP server for Crowdin — projects, files, strings, translation progress, tasks, and members.
- TypeshipOAuthdev.typeship
Generate a typed SDK, CLI, and MCP server from any OpenAPI or GraphQL spec, and keep them current.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to perform local code search, indexing, and analysis across Java, JavaScript/TypeScript, .NET/C#, and Python projects through the MCP protocol.1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceProvides internationalization MCP tools enabling AI agents to perform translations, locale management, and i18n operations.37 npmMIT
- FlicenseNot gradedqualityCmaintenanceA production-oriented MCP runtime providing orchestration tools for IDE and agent integrations, including task management, diagnostics, and token usage reporting.-
- AlicenseCqualityCmaintenanceEnables MCP clients to inspect, validate, test, export, and query Godot projects, including live state from an open editor via a bridge addon.2024 npmMIT