| Name | mcp-translation-text JSON |
| Version |
1.0.2
JSON |
| download |
| home_page | None |
| Summary | MCP provider wrapping the Niutrans translation API |
| upload_time | 2025-11-06 09:24:09 |
| maintainer | None |
| docs_url | None |
| author | None |
| requires_python | >=3.9 |
| license | MIT |
| keywords |
mcp
translation
niutrans
ai
|
| VCS |
 |
| bugtrack_url |
|
| requirements |
No requirements were recorded.
|
| Travis-CI |
No Travis.
|
| coveralls test coverage |
No coveralls.
|
# MCP 翻译服务
基于小牛翻译(Niutrans)API 的 MCP Provider,提供文字翻译工具和语种目录资源,方便在 Cursor/mcp-cli 等客户端中引用。
## 快速开始
### 使用 uv 安装并启动发布版
```bash
uv tool install mcp-translation-text
```
## 环境变量
- `NIUTRANS_API_KEY`(必填):小牛翻译开放平台提供的 API Key,可免费使用, 请登录后获取:https://niutrans.com/cloud/account_info/info。
## MCP 客户端配置示例
若通过 `uv tool install` 安装,可在 `mcp.json` 中写:
```json
{
"mcpServers": {
"translation": {
"type": "stdio",
"command": "uv",
"args": [
"tool",
"run",
"mcp-translation-text"
],
"env": {
"NIUTRANS_API_KEY": "${env.NIUTRANS_API_KEY}"
}
}
}
}
```
启动 Cursor 后执行 `ListTools` 即可看到 `translate_text`,同时支持 `ListResources` 读取 `language://catalog`。
## 可用功能
### 工具:`translate_text`
- **参数**:
- `text`:待翻译内容。
- `source`:源语言代码或别名(会通过本地映射表规范化)。
- `target`:目标语言代码或别名。
- **返回**:
```json
{
"source": "zh",
"target": "en",
"original_text": "你好",
"translated_text": "Hello",
"raw": { ... 小牛原始响应 ... }
}
```
### 资源:`language://catalog`
提供所有可用语种及别名,示例如下:
```json
{
"total": 655,
"languages": [
{"code": "zh", "zh": "中文(简体)", "en": "Chinese (Simplified)"},
{"code": "en", "zh": "英语", "en": "English"}
// ... 其余省略 ...
],
"aliases": {
"zhongwenjianti": "zh",
"english": "en"
// ... 其余省略 ...
}
}
```
推荐在客户端的 LLM 中先读取该资源,完成语种描述到代码的映射后,再调用 `translate_text`。
## 调试与常见问题
- **缺少 API Key**:启动时报 `缺少环境变量 NIUTRANS_API_KEY`,请确认已在 `.env` 或系统环境中设置。
- **语种不支持**:`translate_text` 会校验语种代码/别名,若报错请检查是否使用了 `language://catalog` 中列出的值。
- **路径或依赖问题**:脚本依赖 `uv`,请先安装 `pip install uv` 或参考 [uv 文档](https://github.com/astral-sh/uv)。
- **命令名称**:通过 PyPI 安装后,可直接运行 `mcp-translation-text`;若 global PATH 中找不到,记得激活虚拟环境或使用 `python -m mcp_translation_text`。
- **发布/升级包**:
```bash
python -m build
twine upload dist/*
```
## 目录结构(关键文件)
```
E:\MCP
├── pyproject.toml
├── server.py # 入口包装,确保 python server.py 可运行
├── src/
│ └── translation_server.py
├── scripts/
│ ├── start.ps1
│ └── start.sh
├── .env.example
├── LICENSE
└── README.md
```
发布后,用户只需设置 Niutrans API Key,即可通过 `mcp-translation-text` 直接加载该 Provider。
Raw data
{
"_id": null,
"home_page": null,
"name": "mcp-translation-text",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "mcp, translation, niutrans, ai",
"author": null,
"author_email": "Niutrans <tianfengning@niutrans.com>",
"download_url": "https://files.pythonhosted.org/packages/df/27/d1231ca69ad7f5923bf92d3014431b51a0553935142d9e75af17aa12a6cc/mcp_translation_text-1.0.2.tar.gz",
"platform": null,
"description": "# MCP \u7ffb\u8bd1\u670d\u52a1\r\n\r\n\u57fa\u4e8e\u5c0f\u725b\u7ffb\u8bd1\uff08Niutrans\uff09API \u7684 MCP Provider\uff0c\u63d0\u4f9b\u6587\u5b57\u7ffb\u8bd1\u5de5\u5177\u548c\u8bed\u79cd\u76ee\u5f55\u8d44\u6e90\uff0c\u65b9\u4fbf\u5728 Cursor/mcp-cli \u7b49\u5ba2\u6237\u7aef\u4e2d\u5f15\u7528\u3002\r\n\r\n## \u5feb\u901f\u5f00\u59cb\r\n\r\n### \u4f7f\u7528 uv \u5b89\u88c5\u5e76\u542f\u52a8\u53d1\u5e03\u7248\r\n\r\n```bash\r\nuv tool install mcp-translation-text\r\n```\r\n\r\n## \u73af\u5883\u53d8\u91cf\r\n\r\n- `NIUTRANS_API_KEY`\uff08\u5fc5\u586b\uff09\uff1a\u5c0f\u725b\u7ffb\u8bd1\u5f00\u653e\u5e73\u53f0\u63d0\u4f9b\u7684 API Key,\u53ef\u514d\u8d39\u4f7f\u7528, \u8bf7\u767b\u5f55\u540e\u83b7\u53d6:https://niutrans.com/cloud/account_info/info\u3002\r\n\r\n## MCP \u5ba2\u6237\u7aef\u914d\u7f6e\u793a\u4f8b\r\n\r\n\u82e5\u901a\u8fc7 `uv tool install` \u5b89\u88c5\uff0c\u53ef\u5728 `mcp.json` \u4e2d\u5199\uff1a\r\n\r\n```json\r\n{\r\n \"mcpServers\": {\r\n \"translation\": {\r\n \"type\": \"stdio\",\r\n \"command\": \"uv\",\r\n \"args\": [\r\n \"tool\",\r\n \"run\",\r\n \"mcp-translation-text\"\r\n ],\r\n \"env\": {\r\n \"NIUTRANS_API_KEY\": \"${env.NIUTRANS_API_KEY}\"\r\n }\r\n }\r\n }\r\n}\r\n```\r\n\r\n\u542f\u52a8 Cursor \u540e\u6267\u884c `ListTools` \u5373\u53ef\u770b\u5230 `translate_text`\uff0c\u540c\u65f6\u652f\u6301 `ListResources` \u8bfb\u53d6 `language://catalog`\u3002\r\n\r\n## \u53ef\u7528\u529f\u80fd\r\n\r\n### \u5de5\u5177\uff1a`translate_text`\r\n\r\n- **\u53c2\u6570**\uff1a\r\n - `text`\uff1a\u5f85\u7ffb\u8bd1\u5185\u5bb9\u3002\r\n - `source`\uff1a\u6e90\u8bed\u8a00\u4ee3\u7801\u6216\u522b\u540d\uff08\u4f1a\u901a\u8fc7\u672c\u5730\u6620\u5c04\u8868\u89c4\u8303\u5316\uff09\u3002\r\n - `target`\uff1a\u76ee\u6807\u8bed\u8a00\u4ee3\u7801\u6216\u522b\u540d\u3002\r\n- **\u8fd4\u56de**\uff1a\r\n ```json\r\n {\r\n \"source\": \"zh\",\r\n \"target\": \"en\",\r\n \"original_text\": \"\u4f60\u597d\",\r\n \"translated_text\": \"Hello\",\r\n \"raw\": { ... \u5c0f\u725b\u539f\u59cb\u54cd\u5e94 ... }\r\n }\r\n ```\r\n\r\n### \u8d44\u6e90\uff1a`language://catalog`\r\n\r\n\u63d0\u4f9b\u6240\u6709\u53ef\u7528\u8bed\u79cd\u53ca\u522b\u540d\uff0c\u793a\u4f8b\u5982\u4e0b\uff1a\r\n\r\n```json\r\n{\r\n \"total\": 655,\r\n \"languages\": [\r\n {\"code\": \"zh\", \"zh\": \"\u4e2d\u6587(\u7b80\u4f53)\", \"en\": \"Chinese (Simplified)\"},\r\n {\"code\": \"en\", \"zh\": \"\u82f1\u8bed\", \"en\": \"English\"}\r\n // ... \u5176\u4f59\u7701\u7565 ...\r\n ],\r\n \"aliases\": {\r\n \"zhongwenjianti\": \"zh\",\r\n \"english\": \"en\"\r\n // ... \u5176\u4f59\u7701\u7565 ...\r\n }\r\n}\r\n```\r\n\r\n\u63a8\u8350\u5728\u5ba2\u6237\u7aef\u7684 LLM \u4e2d\u5148\u8bfb\u53d6\u8be5\u8d44\u6e90\uff0c\u5b8c\u6210\u8bed\u79cd\u63cf\u8ff0\u5230\u4ee3\u7801\u7684\u6620\u5c04\u540e\uff0c\u518d\u8c03\u7528 `translate_text`\u3002\r\n\r\n## \u8c03\u8bd5\u4e0e\u5e38\u89c1\u95ee\u9898\r\n\r\n- **\u7f3a\u5c11 API Key**\uff1a\u542f\u52a8\u65f6\u62a5 `\u7f3a\u5c11\u73af\u5883\u53d8\u91cf NIUTRANS_API_KEY`\uff0c\u8bf7\u786e\u8ba4\u5df2\u5728 `.env` \u6216\u7cfb\u7edf\u73af\u5883\u4e2d\u8bbe\u7f6e\u3002\r\n- **\u8bed\u79cd\u4e0d\u652f\u6301**\uff1a`translate_text` \u4f1a\u6821\u9a8c\u8bed\u79cd\u4ee3\u7801/\u522b\u540d\uff0c\u82e5\u62a5\u9519\u8bf7\u68c0\u67e5\u662f\u5426\u4f7f\u7528\u4e86 `language://catalog` \u4e2d\u5217\u51fa\u7684\u503c\u3002\r\n- **\u8def\u5f84\u6216\u4f9d\u8d56\u95ee\u9898**\uff1a\u811a\u672c\u4f9d\u8d56 `uv`\uff0c\u8bf7\u5148\u5b89\u88c5 `pip install uv` \u6216\u53c2\u8003 [uv \u6587\u6863](https://github.com/astral-sh/uv)\u3002\r\n- **\u547d\u4ee4\u540d\u79f0**\uff1a\u901a\u8fc7 PyPI \u5b89\u88c5\u540e\uff0c\u53ef\u76f4\u63a5\u8fd0\u884c `mcp-translation-text`\uff1b\u82e5 global PATH \u4e2d\u627e\u4e0d\u5230\uff0c\u8bb0\u5f97\u6fc0\u6d3b\u865a\u62df\u73af\u5883\u6216\u4f7f\u7528 `python -m mcp_translation_text`\u3002\r\n- **\u53d1\u5e03/\u5347\u7ea7\u5305**\uff1a\r\n ```bash\r\n python -m build\r\n twine upload dist/*\r\n ```\r\n\r\n## \u76ee\u5f55\u7ed3\u6784\uff08\u5173\u952e\u6587\u4ef6\uff09\r\n\r\n```\r\nE:\\MCP\r\n\u251c\u2500\u2500 pyproject.toml\r\n\u251c\u2500\u2500 server.py # \u5165\u53e3\u5305\u88c5\uff0c\u786e\u4fdd python server.py \u53ef\u8fd0\u884c\r\n\u251c\u2500\u2500 src/\r\n\u2502 \u2514\u2500\u2500 translation_server.py\r\n\u251c\u2500\u2500 scripts/\r\n\u2502 \u251c\u2500\u2500 start.ps1\r\n\u2502 \u2514\u2500\u2500 start.sh\r\n\u251c\u2500\u2500 .env.example\r\n\u251c\u2500\u2500 LICENSE\r\n\u2514\u2500\u2500 README.md\r\n```\r\n\r\n\u53d1\u5e03\u540e\uff0c\u7528\u6237\u53ea\u9700\u8bbe\u7f6e Niutrans API Key\uff0c\u5373\u53ef\u901a\u8fc7 `mcp-translation-text` \u76f4\u63a5\u52a0\u8f7d\u8be5 Provider\u3002\r\n\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "MCP provider wrapping the Niutrans translation API",
"version": "1.0.2",
"project_urls": {
"Homepage": "https://niutrans.com",
"Source": "https://github.com/niutrans/mcp-translation-text"
},
"split_keywords": [
"mcp",
" translation",
" niutrans",
" ai"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "eee165d019dd04369ca36536e77cdac1d48224fc8d585551cad53f734aea619f",
"md5": "213dd51046eadfa3519b9d5f89a26226",
"sha256": "1515f08be03af23387fc5dbb5220d2ccd172fe7adbf8b9a3fe269aa65f1a35a5"
},
"downloads": -1,
"filename": "mcp_translation_text-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "213dd51046eadfa3519b9d5f89a26226",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 13893,
"upload_time": "2025-11-06T09:24:08",
"upload_time_iso_8601": "2025-11-06T09:24:08.119683Z",
"url": "https://files.pythonhosted.org/packages/ee/e1/65d019dd04369ca36536e77cdac1d48224fc8d585551cad53f734aea619f/mcp_translation_text-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "df27d1231ca69ad7f5923bf92d3014431b51a0553935142d9e75af17aa12a6cc",
"md5": "2990075d63b1dcddd84003a1adec7a3d",
"sha256": "9c5e9ec7b5289ee5f8ae172ad28f664bc3680cc42ebc52c79915fe7dc34b11ca"
},
"downloads": -1,
"filename": "mcp_translation_text-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "2990075d63b1dcddd84003a1adec7a3d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 13571,
"upload_time": "2025-11-06T09:24:09",
"upload_time_iso_8601": "2025-11-06T09:24:09.475914Z",
"url": "https://files.pythonhosted.org/packages/df/27/d1231ca69ad7f5923bf92d3014431b51a0553935142d9e75af17aa12a6cc/mcp_translation_text-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-11-06 09:24:09",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "niutrans",
"github_project": "mcp-translation-text",
"github_not_found": true,
"lcname": "mcp-translation-text"
}