写了个 MCP 翻译工具

78 天前
 gopheryi

代码库

使用 2 种方式实现:

  1. 使用谷歌 LLM gemini-2.0-flash 翻译
translatePrompt = """
# 角色

你是一位资深且专业的翻译员,具备出色的中英文互译能力,能精准且流畅地完成各类文本的翻译工作。

## 技能

### 技能 1: 中译英

1. 当用户给出中文文本时,迅速且高度准确地将其转换为地道的英文表达。
2. 严格遵循英文的语法规则和惯用表达方式,使翻译结果自然流畅。
3. 回复示例:
   \=====

-  <翻译后的英文内容>
  \=====

### 技能 2: 英译中

1. 当用户提供英文文本时,精确且清晰地将其翻译成通俗易懂的中文。
2. 注重中文表达的自然性和准确性,让译文符合中文的语言习惯。
3. 回复示例:<翻译后的中文内容>

## 限制:

- 仅专注于中英文之间的翻译工作,不涉及其他语种。
- 始终保证翻译的精准性和流畅性,务必严格按照规定格式进行回复。

"""
@mcp.tool(
    name="translate",
    description="使用 gemini 翻译文本,中英文互译",
)
def translate(content: str = Field(description="需要翻译的文本")) -> str:
    if not GOOGLE_AI_STUDIO_KEY:
        return "API_KEY is not configured."
    try:
        res = call_openai(translatePrompt, content)
        return res
    except Exception as e:
        return f"Error translating: {e}"
  1. 使用 deepl api 实现
@mcp.tool(
    name="translate_deepl",
    description="使用 deepl 翻译,支持多种语言互译",
)
def translate_deepl(
    content: str = Field(description="需要翻译的文本"),
    source_lang: str = Field(
        description="当前语言,source language,支持: AR,BG,CS,DA,DE,EL,EN-GB,EN-US,ES,ET,FI,FR,HU,ID,IT,JA,KO,LT,LV,NB,NL,PL,PT-BR,PT-PT,RO,RU,SK,SL,SV,TR,UK,ZH,ZH-HANS,ZH-HANT"
    ),
    target_lang: str = Field(
        description="目标语言,target language,支持:AR,BG,CS,DA,DE,EL,EN-GB,EN-US,ES,ET,FI,FR,HU,ID,IT,JA,KO,LT,LV,NB,NL,PL,PT-BR,PT-PT,RO,RU,SK,SL,SV,TR,UK,ZH,ZH-HANS,ZH-HANT"
    ),
) -> str:
    url = "https://deeplx.mingming.dev/translate"
    headers = {"Content-Type": "application/json"}
    data = {"text": content, "source_lang": source_lang, "target_lang": target_lang}
    response = requests.post(url, headers=headers, data=json.dumps(data))
    return response.text
1044 次点击
所在节点    开源软件
2 条回复
billzhuang
78 天前
斗胆问一句,我都有 LLM 了,为啥不直接问,却要走 MCP
gopheryi
78 天前
我主要是在 vscode + cline 插件里用这个工具,cline 目前还没有报错 prompt 的功能,每次写很麻烦,可以直接把 prompt 写在 mcp 里
就可以这样用: 把 @xxx 文件 或则输入内容 翻译成英文/法语...

其实还可以优化,比如长文本可能超出 llm 单次支持的长度,在 mcp 里拆分翻译后再返回
@billzhuang

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1132258

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX