Skip to main content

Trans MCP Server

Belindoc 翻译开放 API 的 MCP 服务:文档(PDF / Word / Excel / Markdown / 图片)和视频翻译、 字幕改写。

两种运行方式

stdio HTTP 远程
入口 belindoc-mcp trans-mcp-http
跑在哪 用户自己的机器上 一台服务器上,多人共用
API Key 服务端从 BELINDOC_API_KEY 每个客户端自己带 Authorization: Bearer <key>,服务器不存任何密钥
传输 stdio Streamable HTTP(SSE + Mcp-Session-Id

两种方式的工具、行为完全一致,包括服务端直接向用户弹窗确认(elicitation)和等待期间的 进度通知。部署 HTTP 模式看 DEPLOY.md

安装

从 PyPI 装即可,不用 clone 源码:

uvx belindoc-mcp       # 试跑一下;客户端配置里也直接这么写,不用预装
# 或者
pipx install belindoc-mcp

uvx 这条路得先有 uv——uvx 是它带的命令。没装过就先装:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows(PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

机器上已经有 Homebrew 或 pip 的话,brew install uvpip install uv 也一样。

装完重开一个终端再往下走uv 要新开的 shell 才进得了 PATH。这步漏掉,后面客户端一 律报找不到 uvx——是整个流程里最常见的失败原因,没有之一。

pipx 那条路不需要 uv。

从源码装(开发、或要改代码)见 开发

环境变量

变量 用在哪 说明
BELINDOC_API_KEY stdio 必需。格式 ft_ + 40 位随机串,共 43 字符
BELINDOC_API_BASE_URL 上游地址。不设即生产 https://belindoc.com/api;要打到别的环境才需要设
MCP_HOST / MCP_PORT HTTP 监听地址与端口,默认 0.0.0.0:8080
MCP_PATH HTTP MCP 服务端点路径,默认 /mcp。同域名下落地页占了 /mcp 时挪开
MCP_LOCALE 用户可见文案的语言,默认 zh。见下方「输出语言」

HTTP 模式不读 BELINDOC_API_KEY——别把真实 key 写进服务器的 .env。 完整注释见 .env.example

获取 API Key

登录 https://belindoc.com → 「开放平台」→「API Key 管理」→ 创建。

客户端接入

stdio

{
  "mcpServers": {
    "belindoc-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": ["belindoc-mcp"],
      "env": {
        "BELINDOC_API_KEY": "ft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "BELINDOC_API_BASE_URL": "https://belindoc.com/api"
      }
    }
  }
}

BELINDOC_API_BASE_URL 填的就是默认值,不写也一样;要打到别的环境才改它。

配置文件位置:Claude Desktop 是 ~/Library/Application Support/Claude/claude_desktop_config.json, Codex 是 ~/.codex/config.json

不想手改 JSON 的话,两个客户端都有命令行可以一把加:

# Claude Code
claude mcp add belindoc-mcp \
  -e BELINDOC_API_KEY=ft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  -e BELINDOC_API_BASE_URL=https://belindoc.com/api \
  -- uvx belindoc-mcp

# Codex
codex mcp add belindoc-mcp \
  --env BELINDOC_API_KEY=ft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  --env BELINDOC_API_BASE_URL=https://belindoc.com/api \
  -- uvx belindoc-mcp

两条只差传环境变量的写法:claude-ecodex--env-- 后面是真正要跑的命令, 别漏。

uvx 会自己拉包、自己建隔离环境,用户不用预装本项目,也不用管路径——代价是机器上得先有 uv 本身,见上面的安装

从源码装的话command 必须填绝对路径——pip install -e . 之后 venv 里会生成 belindoc-mcp 这个可执行文件,填它的完整路径(形如 /path/to/trans-mcp/.venv/bin/belindoc-mcp)。客户端不走登录 shell,PATH 里通常没有 这个 venv,写裸命令名会起不来。

不想把 key 写进客户端配置的话,也可以放进项目根目录的 .env,启动时自己加载:

cp .env.example .env   # 填入 API Key
source .env && belindoc-mcp

其他客户端

stdio 这套配置在各家客户端里是同一个东西,换客户端只有三处要对:配置文件在哪、顶层的键叫 什么、以及那三行本项目自己的内容(command: uvxargs: ["belindoc-mcp"]env 里的两个 变量)。第三项到哪都一样,抄上面的 JSON 即可。

前两项:

客户端 配置文件 顶层键
Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json mcpServers
Claude Code 项目根 .mcp.json(或直接 claude mcp add mcpServers
Codex ~/.codex/config.json(或直接 codex mcp add mcpServers
Cursor 项目 .cursor/mcp.json,或全局 ~/.cursor/mcp.json mcpServers
Windsurf ~/.codeium/windsurf/mcp_config.json mcpServers
VS Code 项目 .vscode/mcp.json servers

这张表会过期——各家的路径和键名都改过不止一次,装之前对一眼自己客户端的当前文档。跟本项目 有关的部分不会变。

装完起不来,先查两条:uvx 在不在客户端能看到的 PATH 里(客户端不走登录 shell,装完 uv 没重开终端最常见),以及 key 有没有填对。

HTTP 远程

{
  "mcpServers": {
    "belindoc": {
      "type": "streamablehttp",
      "url": "https://mcp.belindoc.com/api/mcp",
      "headers": {
        "Authorization": "Bearer ft_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    }
  }
}

Codex CLI 的 HTTP MCP 发不了自定义请求头,只能用 Bearer;走 ~/.codex/config.toml 的话:

[mcp_servers.belindoc]
url = "https://mcp.belindoc.com/api/mcp"
bearer_token_env_var = "BELINDOC_API_KEY"

接上之后

调一次 get_account_status 验证密钥通不通,顺便看余额。想知道这个客户端支不支持服务端 弹窗确认(关系到视频提交走一步还是两步),用 MCP_DEBUG_TOOLS=1 起服务,调一次 probe_elicitation——它不翻译、不提交任务、不扣额度。

典型流程

文档upload_document 取预签名链接 → 按返回的 uploadCommand 上传 → (PDF 才要)check_pdf_ocr 看是不是扫描件 → translate_document 提交 → wait_for_translation 跟进 → get_document_translation_result 取下载链接。

视频upload_video → 上传 → calculate_video_translation_quota 试算 → translate_video 提交(两步确认,见下)→ wait_for_video_translation 跟进。 想改字幕重出一版:get_video_subtitlescalculate_rewrite_quotarewrite_video_subtitlesget_video_rewrite_status

上传由调用方自己执行返回的 uploadCommand,服务端不碰用户机器上的文件;下载给的是 签名链接,问号后面的签名参数一个字符都不能改,截掉就是 403。

工具列表

账户与元信息

工具 说明
get_supported_languages 支持的语言列表(79 种,语言码 → 显示名)
get_model_list 当前账户可用的翻译模型
get_account_status 可用额度、会员档位、各项限额(单视频时长 / 并发数 / 单文件大小)

文档翻译

工具 说明
upload_document 取文档的预签名上传链接
check_pdf_ocr 判断已上传的 PDF 是不是扫描件 / 双层 PDF
translate_document 提交文档翻译任务
wait_for_translation 等待任务完成,进度一有变化就返回
get_document_translation_status 查单个任务状态
get_document_translation_result 取译文下载链接
list_document_translations 分页查任务列表
get_document_translation_by_batch 按批次号查任务

视频翻译

工具 说明
upload_video 取视频的预签名上传地址
calculate_video_translation_quota 试算要花多少额度,不扣费
translate_video 提交视频翻译任务(会真扣额度,两步确认)
wait_for_video_translation 等待任务完成,进度一有变化就返回
get_video_translation_status 查单个任务状态
list_video_translations 分页查任务列表(只有最近 15 天)
cancel_video_translation 取消任务

字幕改写

工具 说明
get_video_subtitles 取原文与译文字幕下载地址
calculate_rewrite_quota 试算改写要花多少额度,不扣费
rewrite_video_subtitles 用编辑后的字幕重新生成视频(会真扣额度,两步确认)
get_video_rewrite_status 查改写进度

排查

默认不挂出来,设 MCP_DEBUG_TOOLS=1 才有。

工具 说明
probe_elicitation 自检:这个客户端到底吃不吃 elicitation。不翻译、不提交、不扣额度

扣费确认

translate_videorewrite_video_subtitles 会真扣额度,所以提交是两步,第一次 一定不会提交:

  • 客户端支持 elicitation 时,服务端直接弹窗问用户,一次调用即可;
  • 不支持时退回确认码:第一次调用返回 409 + 一段给用户看的话 + 一张菜单(配音 × 字幕的各种组合,每格自带额度和 confirmToken),把菜单原样给用户看、他挑了哪一项, 就用那一项的 confirmToken 重调一次,这一次才真的提交。

之所以不能只信一个 user_confirmed=true:那种布尔量永远是模型自己填的,服务端无法验证 背后到底有没有问过人。想知道某个客户端走哪条路,开 MCP_DEBUG_TOOLS=1 调一次 probe_elicitation

输出语言

会被念给用户听的那部分文案(任务状态、产出说明、进度行、失败原因、下载说明)支持九种 语言:zh / zh-Hant / en / ja / ko / de / fr / ru / ar。工具描述和给模型 的操作指令始终是中文——那是写给模型的。

优先级:工具参数 locale > 服务端 MCP_LOCALE > zh

故障排除

认证失败 (10004)

API Key 不对、没注册、或格式错(必须 ft_ 开头共 43 字符)。先 echo $BELINDOC_API_KEY 确认,再去平台看 key 的状态。

密钥类错误码 (30306 / 30307 / 30308 / 30309 / 30312)

这几个上游一律用 HTTP 200 送回来,业务码在响应体里。工具会把它们翻成一句可执行的话 (key 没复制全 / 被禁用要重新启用 / 已过期 / IP 不在白名单 / 需联系客服),并明确标注 重试、换参数、重新上传都没有用。只有 30311 是该退避重试的。

接口不存在 (404)

返回里会写明「接口 X 在当前服务地址(Y)上不存在」。这不是网络故障,是该功能在这个环境 没部署,或者 BELINDOC_API_BASE_URL 指错了环境。重试无用。

连接超时

检查后端是否在跑、网络是否通、防火墙是否放行。

开发

cd /path/to/trans-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/

发布到 PyPI

pip install build twine
python -m build            # 出 dist/*.whl 和 dist/*.tar.gz
twine upload dist/*

发之前先把 pyproject.tomlversion 加上去——PyPI 的同一版本号只能传一次。 python -m build 之前先 rm -rf dist/,否则旧版本会跟着一起传上去。

包是公开的,所以别往仓库里放任何只该留在内部的东西:README.md 会原样变成 PyPI 首页,tests/ 会进 sdist。加内容前对着 tar tzf dist/*.tar.gz 看一眼。

根目录的 test_api.py / test_upload.py 是手动连真实 API 的冒烟脚本,不是用例, pytest 只收集 tests/

项目结构

PyPI 包名是 belindoc-mcp,仓库目录和 Python 模块仍叫 trans-mcp / trans_mcp—— 后两个用户看不见,跟着改要动 Dockerfile、systemd 单元和已在跑的服务器的升级路径。 trans-mcp / trans-mcp-http 这两个命令也照旧留着,部署脚本在调它们。

trans-mcp/
├── README.md              # 本文件
├── DEPLOY.md              # HTTP 远程模式的部署
├── INTEGRATION.md         # 客户端配置速查
├── CONFIG.md              # 环境变量速查
├── pyproject.toml
├── .env.example
├── src/trans_mcp/
│   ├── server.py          # stdio 入口
│   ├── http_server.py     # HTTP 入口(Streamable HTTP)
│   ├── tools.py           # 工具定义与处理器(两种模式共用)
│   ├── client.py          # 上游 API 客户端
│   └── i18n.py            # 用户可见文案的九种语言
├── tests/
├── deploy.sh              # Docker 部署
├── deploy-linux.sh        # systemd 部署
└── server.sh              # 本机起停

许可证

MIT License

Release files for belindoc-mcp 0.1.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for belindoc-mcp 0.1.5
File Size Uploaded
belindoc_mcp-0.1.5.tar.gz 144.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for belindoc-mcp 0.1.5
File Interpreter ABI Platform
belindoc_mcp-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 257.6 kB

Release files / belindoc_mcp-0.1.5.tar.gz

Download URL belindoc_mcp-0.1.5.tar.gz
Size 144.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7d5f554fbfd5e9e4a162e39e911f584113253ffadec7b2ed7f34a1b90c36e5c8
BLAKE2b-256 checksum
How to use checksums
e21df8f7d27ce96dab1161455f45e7579a09d0484235099721bb0538028d2f68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release files / belindoc_mcp-0.1.5-py3-none-any.whl

Download URL belindoc_mcp-0.1.5-py3-none-any.whl
Size 113.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9e2b0662bdf906ac5737a020f27c920fb48594b760ef0d378d9f747bff04e11b
BLAKE2b-256 checksum
How to use checksums
d1ee629de181c91b0f6fa5c37c660df35d4fa46742dda782614272998d85a417
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 20, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page