
Paraglide Messages Mcp
io.github.whazeted由 GitHub 账号 whazeted 发布v0.3.0更新于 Oct 24, 2026
Validated, sub-agent per-locale translation of Paraglide JS / inlang message-format projects.
概览
一个本地 MCP 服务器,通过 OpenAI Batch API 翻译 Paraglide JS / inlang 消息目录,并将校验后的译文按语言合并回项目文件。
- 可以做什么
- 检查 Paraglide/inlang 项目:语言列表、源语言、消息数量与启动时的风格说明,并按前缀和状态分页列出、读取或搜索消息键与内容。提交可持久化的 OpenAI Batch 翻译任务,可按目标语言和键前缀限定范围,也可刷新已有译文,并在重启后跟踪、列出或取消任务。收集已完成的批次:归档输出、逐条校验译文并把通过的译文合并进语言文件,报告已保存、失败与冲突数量。对已有键保存经过校验的人工修正。
- 适用场景
- 适用于 Paraglide JS 或 inlang 项目需要把消息目录翻译成多种语言,并希望借助 OpenAI Batch 异步完成、而不是在实时代理循环中翻译的场景。适合需要按语言校验、冲突报告和可恢复任务的团队。
- 运行要求
- 通过 npx 以 stdio 在本地运行,需要 Node.js 22.12 或更高版本。翻译需要可访问所配置 Batch 模型的 OpenAI API 密钥,通过环境变量 OPENAI_API_KEY 提供。项目路径可用 --project 指定,或从 .inlang 目录自动发现。检查项目和保存人工修正无需密钥。
安装
在 SourceWeft 中
- 打开 控制台中的 Paraglide Messages Mcp,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
paraglide-messages-mcp
Stateless MCP service for translating Paraglide JS / inlang message files through the OpenAI Batch API.
OpenAI does the translation asynchronously. The MCP client submits a job and later collects it; the client and server can disconnect or restart while OpenAI works. Each request includes flat message keys as usage context, source text, existing target text, placeholders, a style brief, and a small sample of existing target copy. The default is gpt-6-luna with reasoning.effort: "low" (“Luna light”).
Requires Node.js 22.12+ and an OpenAI API key with access to the configured Batch model. Inspecting projects and saving manual corrections work without a key.
Connect
Use your client's secret/environment configuration to supply the key; don't commit credentials. --project is optional when there is a discoverable .inlang directory. --model <id> overrides the default. --jobs-dir <path> overrides the local job directory.
Translate
-
Call
project_infoto inspect locales and missing counts. -
Call
start_translation_jobwith a stablejobId, for example:Omit
targetLocalesfor every locale except the source. The source defaults to the project base locale. Omitprefixfor the whole catalog. Usemode: "all"to refresh existing translations. A per-jobtranslationStyleoverrides the startup brief. -
Keep the returned ID and periodically call
get_translation_job. Batch jobs have a 24-hour completion window; a tool call checks once instead of holding a connection open. Reuse the same ID after errors.list_translation_jobsdiscovers jobs after a restart without calling OpenAI. -
On a terminal batch, collection archives output/error files, validates individual translations, and merges accepted values into the locale files. Check
saved,failed,lastError, andcleanedUp; a remotecompletedstatus alone does not mean everything was saved. Failure details are capped at 50 in tool responses; the job record contains every outcome. Failed or conflicted messages can be corrected withsave_translationsor translated in a new scoped job.
An empty scope finishes locally without an API request. A reused ID with different options is rejected. Use a new ID for new work; retrying an existing ID resumes its original snapshot.
Durability and cleanup
Job snapshots and IDs are atomically persisted in project.inlang/.paraglide-batches/. Keep this directory on persistent storage and exclude it from source control: it contains message text and archived model outputs. API keys are never stored in job records. Locks serialize job reconciliation and catalog writes across processes on the same host. Source or target edits made during the batch are preserved and reported as conflicts. Per-locale merges can be replayed after an interrupted collection.
Lost batch creation responses are reconciled through OpenAI batch metadata and the input file ID. An uncertain submission is never automatically repeated, which avoids duplicate paid batches. If reconciliation finds no matching batch, the job stays pending and reports lastError; inspect it in OpenAI before deciding to submit replacement work. OpenAI validates model availability asynchronously; unsupported models are reported through batch errors.
There is no “close completed batch” operation. Once results are safely archived and applied, the service deletes the remote input, output, and error files. Cleanup failures remain resumable. Both uploaded and generated files have a 30-day expiration as a fallback; collect before they expire. cancel_translation_job records cancellation before sending it to OpenAI. Cancellation can take up to 10 minutes; keep collecting until terminal and cleanedUp: true. Successful partial results from cancelled or expired batches are validated and applied too.
For unattended collection, run this command periodically through your own scheduler:
It reconciles every unfinished local job once, prints JSON summaries, and exits. No timers or workers remain attached to MCP sessions. It returns a nonzero exit code for collection errors or rejected translations.
Tools
The old agent translation loops, workflow prompts, duplicate resources and destructive catalog/locale management tools have been removed from the MCP surface. Existing TranslationService library helpers remain available for callers that need them. MCP saves no longer expose validation bypasses or arbitrary new-key creation.
Stateless HTTP
The CLI uses SDK v2 serveStdio; the library also exports a web-standard HTTP handler:
The handler creates a fresh MCP server for each request and supports the 2026-07-28 protocol without initialization or session IDs. Legacy clients are served statelessly through SDK compatibility. Deployments must mount authentication and Host/Origin checks ahead of fetch as described in the SDK HTTP guide. The filesystem store supports one host, or a persistent single-writer deployment; multi-host replicas need a shared transactional job/catalog store and distributed locking.
See COMPATIBILITY.md for supported message formats and DEVELOPMENT.md for architecture and tests. The optional agent skill teaches the batch workflow.
License
来源:README.md,提交 6586963
工具
0版本历史
1- v0.3.0最新Sep 16, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分