Skip to main content
Glama
tianfn

MCP Translation Text

by tianfn

translate_text

Translate text between 450+ languages using Niutrans API. Accepts language codes or common aliases and returns standardized translations with API response data.

Instructions

使用小牛翻译 API 将文本从 source 语种翻译到 target 语种。

支持 450+ 种语言代码,并可自动处理常见别名。返回结构包含译文和 API 原始响应。

Args:
    text (str): 待翻译的原文文本,可以是任意长度的字符串。
    source (str): 源语言代码或常见别名(例如 "zh"、"中文"、"chinese")。
    target (str): 目标语言代码或常见别名(例如 "en"、"英文"、"english")。

Returns:
    Dict[str, Any]: 包含以下字段的字典:
        - source: 标准化后的源语言代码
        - target: 标准化后的目标语言代码
        - original_text: 原文
        - translated_text: 译文
        - raw: 小牛翻译 API 的原始响应数据

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYes待翻译的原文文本,可以是任意长度的字符串。
sourceYes源语言代码或常见别名(例如 "zh"、"中文"、"chinese")。
targetYes目标语言代码或常见别名(例如 "en"、"英文"、"english")。

Implementation Reference

  • The main handler function for the 'translate_text' tool. It validates input languages, constructs the API payload, calls the Niutrans translation API via _call_niutrans helper, and returns a structured response with the translation.
    @mcp.tool()
    def translate_text(
        text: Annotated[str, Field(description="待翻译的原文文本,可以是任意长度的字符串。")],
        source: Annotated[str, Field(description='源语言代码或常见别名(例如 "zh"、"中文"、"chinese")。')],
        target: Annotated[str, Field(description='目标语言代码或常见别名(例如 "en"、"英文"、"english")。')],
    ) -> Dict[str, Any]:
        """使用小牛翻译 API 将文本从 source 语种翻译到 target 语种。
    
        支持 450+ 种语言代码,并可自动处理常见别名。返回结构包含译文和 API 原始响应。
    
        Args:
            text (str): 待翻译的原文文本,可以是任意长度的字符串。
            source (str): 源语言代码或常见别名(例如 "zh"、"中文"、"chinese")。
            target (str): 目标语言代码或常见别名(例如 "en"、"英文"、"english")。
    
        Returns:
            Dict[str, Any]: 包含以下字段的字典:
                - source: 标准化后的源语言代码
                - target: 标准化后的目标语言代码
                - original_text: 原文
                - translated_text: 译文
                - raw: 小牛翻译 API 的原始响应数据
        """
        api_key = os.getenv("NIUTRANS_API_KEY")
        if not api_key:
            raise RuntimeError("缺少环境变量 NIUTRANS_API_KEY")
    
        source_code = _ensure_language_code("source", source)
        target_code = _ensure_language_code("target", target)
    
        payload: Dict[str, Any] = {
            "apikey": api_key,
            "from": source_code,
            "to": target_code,
            "src_text": text,
        }
    
        data = _call_niutrans(payload)
    
        translated = data.get("tgt_text") or data.get("target_text")
        if translated is None:
            raise RuntimeError(f"小牛翻译接口未返回译文: {data}")
    
        return {
            "source": source_code,
            "target": target_code,
            "original_text": text,
            "translated_text": translated,
            "raw": data,
        }
  • Pydantic schema for tool inputs using Annotated types and Field descriptions for text, source language, and target language.
    def translate_text(
        text: Annotated[str, Field(description="待翻译的原文文本,可以是任意长度的字符串。")],
        source: Annotated[str, Field(description='源语言代码或常见别名(例如 "zh"、"中文"、"chinese")。')],
        target: Annotated[str, Field(description='目标语言代码或常见别名(例如 "en"、"英文"、"english")。')],
    ) -> Dict[str, Any]:
  • The @mcp.tool() decorator registers the translate_text function as an MCP tool.
    @mcp.tool()
  • Helper function that makes the HTTP POST request to the Niutrans API, handles errors, and returns the parsed response.
    def _call_niutrans(payload: Dict[str, Any]) -> Dict[str, Any]:
        api_url = os.getenv("NIUTRANS_API_URL", DEFAULT_NIUTRANS_API_URL)
        try:
            response = requests.post(api_url, data=payload, timeout=10)
        except requests.RequestException as exc:
            raise RuntimeError(f"调用小牛翻译接口失败: {exc}") from exc
    
        if response.status_code != 200:
            raise RuntimeError(
                f"小牛翻译接口返回非 200 状态码 {response.status_code}: {response.text}"
            )
    
        try:
            data: Dict[str, Any] = response.json()
        except ValueError as exc:
            raise RuntimeError("小牛翻译接口返回非 JSON 内容") from exc
    
        error_code = data.get("error_code") or data.get("errorCode")
        if error_code not in (None, "0", 0):
            message = data.get("error_msg") or data.get("errorMessage") or "Unknown error"
            raise RuntimeError(f"小牛翻译接口报错 {error_code}: {message}")
    
        return data
  • Helper function to normalize and validate source/target language codes using synonyms and aliases.
    def _ensure_language_code(label: str, value: str) -> str:
        if not value:
            raise RuntimeError(f"缺少 {label} 语言代码")
    
        raw = value.strip()
        if raw in LANGUAGE_CODES:
            return raw
    
        normalized = _normalize_alias(raw)
    
        if normalized in LANGUAGE_CODES:
            return normalized
    
        alias_code = LANGUAGE_SYNONYMS.get(normalized) or LANGUAGE_SYNONYMS.get(
            normalized.replace(" ", "")
        )
        if alias_code:
            return alias_code
    
        normalized_lower = raw.lower()
        for code in LANGUAGE_CODES:
            if code.lower() == normalized_lower:
                return code
    
        raise RuntimeError(
            f"不支持的 {label} 语言代码: {value}。请参考 language-catalog 资源提供的列表后重新选择。"
        )
Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tianfn/mcp-translation-text'

If you have feedback or need assistance with the MCP directory API, please join our Discord server