mcp-translation-text


Namemcp-translation-text JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
SummaryMCP provider wrapping the Niutrans translation API
upload_time2025-11-06 09:24:09
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseMIT
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"
}
        
Elapsed time: 1.69580s