netcafe-translate
Translation that never breaks structure: .srt timings, i18n key trees, PDF layout.
我該用這個嗎
品質與安全性
發現項目(7)
- HIGH
- MEDIUM在 translate_i18n_json 中
- MEDIUM在 translate_text 中
- MEDIUM在 check_grammar 中
- MEDIUM在 check_job 中
- LOW在 translate_srt 中
- INFO在 translate_i18n_json 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"netcafe-translate": {
"url": "https://ainetcafe.com/mcp/translate?s=registry"
}
}
}遠端端點
https://ainetcafe.com/mcp/translate?s=registrystreamable-http它能做什麼
工具清單
工具(7)
🟢what_can_you_do(task)
Describe a task in plain language (any language) and get back exactly which tools on this server do it, with ready-to-run example calls — instead of reading the whole catalogue and guessing. Also returns multi-step recipes when a task needs several tools chained (invoices to a ledger, a bank statement reconciled, a messy CSV turned into a deliverable). Deterministic and free: it calls no model, costs nothing, and never runs out of quota. Call this FIRST when you are not sure what this server offers.
輸入結構描述
{
"type": "object",
"properties": {
"task": {
"type": "string",
"description": "What you are trying to do, e.g. \"reconcile a bank statement against my books\" or \"把一堆发票整理成能入账的表格\""
}
},
"required": [
"task"
]
}輸出結構描述
{
"type": "object",
"additionalProperties": true
}🟢translate_text(text, target, source)
Translate text between languages using a self-hosted LibreTranslate engine (fully offline, no big-tech API). For whole PDFs with layout preserved, use translate_pdf instead. Example — GET https://ainetcafe.com/t/translate_text?text=hello+world&to=zh
輸入結構描述
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "Text to translate (≤5000 chars)."
},
"target": {
"type": "string",
"description": "Target language code, e.g. \"zh\", \"en\", \"ja\"."
},
"source": {
"type": "string",
"description": "Source language code; default \"auto\"."
}
},
"required": [
"text",
"target"
]
}輸出結構描述
{
"type": "object",
"additionalProperties": true
}🟢translate_srt(srt, url, to)
Translate an .srt subtitle file into another language while keeping every timestamp and cue number byte-identical. Cues are anchored by index and refilled in code, so the timeline cannot drift — the usual failure mode when you hand a whole .srt to a model.
輸入結構描述
{
"type": "object",
"properties": {
"srt": {
"type": "string",
"description": "The .srt file content."
},
"url": {
"type": "string",
"description": "Or a link to the .srt file."
},
"to": {
"type": "string",
"description": "Target language, e.g. \"English\", \"日本語\"."
}
},
"required": []
}輸出結構描述
{
"type": "object",
"additionalProperties": true
}🟢translate_i18n_json(json, url, to, existing_json)
Translate an i18n JSON locale file, keeping the key structure identical and placeholders ({name}, {{count}}, %s, HTML tags) intact. Pass existing_json to translate only the keys that are missing from it — the incremental sync people usually hand-roll a script for.
輸入結構描述
{
"type": "object",
"properties": {
"json": {
"type": "string",
"description": "Source locale file content (JSON)."
},
"url": {
"type": "string",
"description": "Or a link to the source JSON."
},
"to": {
"type": "string",
"description": "Target language."
},
"existing_json": {
"type": "string",
"description": "Existing target locale; only missing keys get translated."
}
},
"required": []
}輸出結構描述
{
"type": "object",
"additionalProperties": true
}🟢check_grammar(text, language)
Check text for grammar, spelling and style issues in 30+ languages (self-hosted LanguageTool). Returns each issue with a suggested replacement — apply them to produce corrected text. Example — GET https://ainetcafe.com/t/check_grammar?text=Their+going+to+the+park
輸入結構描述
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text to check (≤10000 chars)."
},
"language": {
"type": "string",
"description": "Language code like \"en-US\", \"zh-CN\"; default \"auto\"."
}
},
"required": [
"text"
]
}輸出結構描述
{
"type": "object",
"additionalProperties": true
}🟢check_job(job_id)
Get the status or result of a job started by deep_research, translate_pdf, or make_slides. Poll every 15-30 seconds until status is "done" or "error". While work is pending, follow retry_after_seconds and next_action; when complete, prefer structured_result when present. Example — GET https://ainetcafe.com/t/check_job?job_id=<id-from-a-job-tool>
輸入結構描述
{
"type": "object",
"properties": {
"job_id": {
"type": "string",
"description": "The job_id returned when the task was started."
}
},
"required": [
"job_id"
]
}輸出結構描述
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"kind": {
"type": "string"
},
"status": {
"type": "string"
},
"is_terminal": {
"type": "boolean"
},
"retry_after_seconds": {
"type": "integer"
},
"next_action": {
"type": [
"object",
"null"
]
},
"result": {},
"structured_result": {},
"error": {
"type": "string"
}
},
"required": [
"job_id",
"status"
]
}🟢translate_pdf(url, lang_to, pages)
Translate a PDF from a URL while preserving the original layout — formulas, figures and two-column academic typesetting stay intact, unlike ordinary translators that flatten the document. Returns a job_id; poll check_job for the download links (translated-only and bilingual side-by-side). Typically 20-60 seconds for a few pages. Powered by PDFMathTranslate (36k stars) hosted at AI NetCafé. Example — tools/call translate_pdf {"url":"<pdf-url>","target":"zh"} → poll check_job
輸入結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Direct URL to the PDF (e.g. an arXiv PDF link)."
},
"lang_to": {
"type": "string",
"description": "Target language, e.g. \"Simplified Chinese\", \"Japanese\". Default Simplified Chinese."
},
"pages": {
"type": "string",
"enum": [
"first",
"first5",
"all"
],
"description": "How much to translate. first = 1 page, first5 = first 5 pages (default), all = whole document (slow and expensive)."
}
},
"required": [
"url"
]
}輸出結構描述
{
"type": "object",
"properties": {
"job_id": {
"type": "string"
},
"status": {
"type": "string"
},
"poll_interval_seconds": {
"type": "integer"
}
},
"required": [
"job_id",
"status"
]
}社群
證據