Token导航 LogoToken导航

MCP Server · 开发工具

MCP Server Py2many

一个基于py2many的MCP服务器,提供将Python代码转译为多种编程语言(如C++、Rust、Go等)的工具,支持确定性规则翻译和LLM辅助翻译。

stdio官方级别未说明来源级核验工具 4
开发工具PythonClaude

快速开始

作者 / 组织
py2many
提供方
py2many
运行时
Python

工具数量

4

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

1

仓库热度

收录来源

1 个

MCP World

选型结论

MCP Server Py2many 属于开发工具类 MCP Server,公开资料标注 4 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前先确认权限范围。

分类

开发工具

传输方式

stdio

认证方式

无需认证

部署方式

公开资料未说明

安装与配置

安装命令

uv run mcp-server-py2many

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 4 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

mcp-server-py2many

一个模型上下文协议(MCP)服务器,提供将Python代码转换为多种编程语言的工具,使用 py2many.

概述

此MCP服务器公开了允许LLM将Python代码转换为各种目标语言的工具,包括C++、Rust、Go、Kotlin、Dart、Julia、Nim、V、Mojo、D、SMT和Zig。

安装

使用紫外线(推荐)

# Clone the repository
git clone 
cd mcp-server-py2many

# Install dependencies
uv sync

# Run the server
uv run mcp-server-py2many

使用pip

pip install mcp-server-py2many

配置

将此服务器添加到MCP客户端配置中:

Claude桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "py2many": {
      "command": "uvx",
      "args": ["mcp-server-py2many"]
    }
  }
}

或者使用本地安装:

{
  "mcpServers": {
    "py2many": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-server-py2many", "mcp-server-py2many"]
    }
  }
}

可用工具

1. transpile_python

使用基于确定性规则的翻译将Python代码转换为另一种编程语言。

参数:

  • python_code (string,必填):要转换的Python代码
  • target_language (字符串,必填):目标语言(cpp、rust、go、kotlin、dart、julia、nim、vlang、mojo、dlang、smt、zig)

2. transpile_python_with_llm

在LLM的帮助下,使用py2many转换Python代码,以更好地处理复杂的习惯用法。

参数:

  • python_code (string,必填):要转换的Python代码
  • target_language (字符串,必填):目标语言(cpp、rust、go、kotlin、dart、julia、nim、vlang、mojo、dlang、smt、zig)

3. list_supported_languages

列出所有支持转译的目标语言。

4. verify_python

使用SMT和z3求解器验证Python代码。此工具使用 --smt 然后通过z3进行验证,以检查前/后条件的逆是否不饱和。

参数:

  • python_code (string,必填):要验证的Python代码

它是如何工作的:

  1. 使用以下命令将Python代码转换为SMT-LIB格式 py2many --smt
  2. 从生成的SMT中提取先决条件(函数以结尾 -pre)
  3. 构造一个验证查询,检查是否存在反例,其中:

- 前提条件成立(有效输入) - 实现与规范不同

  1. 在验证查询上运行z3
  2. 如果发现错误/反例,则返回SAT,如果验证,则返回UNSAT

示例:三角形分类错误检测

此示例使用 triangle_buggy.py py2many的测试用例,用于检测三角形分类实现中的错误:

from adt import adt as sealed

from py2many.smt import check_sat, default_value, get_model
from py2many.smt import pre as smt_pre

@sealed
class TriangleType:
    EQUILATERAL: int
    ISOSCELES: int
    RIGHT: int
    ACUTE: int
    OBTUSE: int
    ILLEGAL: int

a: int = default_value(int)
b: int = default_value(int)
c: int = default_value(int)

def classify_triangle_correct(a: int, b: int, c: int) -> TriangleType:
    """Correct implementation that properly sorts sides before classification"""
    if a == b and b == c:
        return TriangleType.EQUILATERAL
    elif a == b or b == c or a == c:
        return TriangleType.ISOSCELES
    else:
        if a >= b and a >= c:
            if a * a == b * b + c * c:
                return TriangleType.RIGHT
            elif a * a = a and b >= c:
            if b * b == a * a + c * c:
                return TriangleType.RIGHT
            elif b * b  TriangleType:
    """Buggy implementation - assumes a >= b >= c without sorting"""
    # Pre-condition: all sides must be positive and satisfy triangle inequality
    if smt_pre:
        assert a > 0
        assert b > 0
        assert c > 0
        assert a = b and b >= c:
        if a == c or b == c:
            if a == b and a == c:
                return TriangleType.EQUILATERAL
            else:
                return TriangleType.ISOSCELES
        else:
            # BUG: Not sorting sides, assuming a is largest
            if a * a != b * b + c * c:
                if a * a  0]
        }
        for item in data
        if item.get('active') and len(item.get('values', [])) > 5
    ]

# Dynamic behavior
class DynamicClass:
    def __getattr__(self, name):
        return lambda *args: f"Called {name} with {args}"

决策流程图

Is your Python code...
│
├─ Simple functions/algorithms?
│  └─ Yes → Use deterministic ✓
│
├─ Standard data structures and control flow?
│  └─ Yes → Use deterministic ✓
│
├─ Complex decorators, metaclasses, dynamic behavior?
│  └─ Yes → Use LLM-assisted 🧠
│
├─ Heavy use of Python-specific idioms?
│  └─ Yes → Use LLM-assisted 🧠
│
├─ Did deterministic translation fail?
│  └─ Yes → Try LLM-assisted 🧠
│
└─ Need idiomatic target language output?
   └─ Yes → Use LLM-assisted 🧠

支持的语言

语言代码注释
C cpp完全支持STL容器
生锈rust所有权意识翻译
去吧go成语Go代码生成
KotlinkotlinJVM兼容输出
飞镖dart颤振友好
朱莉娅julia科学计算重点
尼姆nim系统编程
五、 vlang简单、快速的编译
MojomojoAI/ML性能计算
D dlang系统编程
齐格zig现代系统编程

与SMT签订合同设计

py2many支持SMT(满意模理论) 契约式设计 编程——编写可以使用Z3或其他SMT求解器进行形式验证的规范。与其他目标语言不同,SMT输出不是一种直接的终端用户编程语言,而是一种用于验证的规范语言。

关键概念:

  • 前置条件:函数执行前必须满足的约束
  • 岗位条件:函数执行后必须保持的约束
  • 细化类型:具有附加约束的类型(例如。, int 哪里 `1 bool:

if smt_pre: assert x > 2 # pre-condition assert y bool: if smt_pre: assert 9.8 + 2 * z == z + 9.11 True

assert equation(x, y) assert fequation(z) check_sat() get_value((x, y, z))


生成的SMT-LIB 2.0输出:

(declare-const x Int) (declare-const y Int) (declare-const z Real)

(define-fun equation-pre ((x Int) (y Int)) Bool (and (> x 2) ( #include

std::string greet(std::string name) { return "Hello, " + name + "!"; }


### 示例2:复杂数据处理(LLM辅助)

Python input with complex comprehensions

def analyze_sales(data): return { region: { 'total': sum(s['amount'] for s in sales), 'count': len(sales), 'avg': sum(s['amount'] for s in sales) / len(sales) } for region, sales in data.items() if any(s['amount'] > 1000 for s in sales) }

Better results with LLM-assisted translation for idiomatic target language


## 发展

Install development dependencies

uv sync

Run the server

uv run mcp-server-py2many

Test the server manually

uv run python -m mcp_server_py2many


## 运作原理

1. MCP服务器接收包含Python代码和目标语言的请求
1. 使用代码创建一个临时Python文件
1. 跑 `py2many --{language}` (或与 `--llm` 标志)在文件上
1. 捕获生成的输出和任何错误
1. 将转换后的代码返回给LLM客户端

## 局限性

- 并非所有目标语言都支持所有Python功能
- 一些Python标准库函数可能没有直接的等价物
- 复杂的动态Python代码在转译后可能需要手动调整
- LLM辅助模式需要为py2many配置LLM API密钥

## 许可证

MIT许可证-有关详细信息,请参阅许可证文件。

## 贡献

欢迎投稿!请在存储库中打开问题并拉取请求。

## 相关项目

- [py2many](https://github.com/adsharma/py2many) -此MCP服务器包装的转译器
- [主控程序](https://modelcontextprotocol.io/) -模型上下文协议规范

工具与能力

工具数量

4

资源数量

0

提示词数量

0

能力标签

代码转译Python本地部署多语言支持Python工具开发工具LLM辅助

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

让助手直接读代码

把仓库、提交记录和 issue 交给模型检索,补全和重构时不用来回复制文件。

在对话里跑命令

触发构建、测试和脚本,执行结果直接回到上下文,省去切终端。

接进开发流程

把 PR、CI 状态和代码审查接进助手,减少在几个工具之间跳。

选择建议

值得选的地方

  • 只提供 4 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在开发工具场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
MCP Server Py2many

MCP World · 本页

4stdio有1 个2026-05-17
Git 838e2ec1

MCP World

12stdio有2 个2026-05-17
Markitdown MCP 2c653a5f

MCP World

1stdio有1 个2026-05-17
Context7 MCP C671e75a

MCP World

0stdio有1 个2026-05-17
Context7 831acf40

MCP World

0stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

MCP Server Py2many 怎么安装?

公开资料给出的安装命令是 uv run mcp-server-py2many,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

MCP Server Py2many 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

MCP Server Py2many 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

MCP Server Py2many 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

MCP Server Py2many 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP