Token导航 LogoToken导航TokenDH.com
MCP Server Py2many logo
开发工具stdio官方级别未说明来源级核验

MCP Server Py2many

MCP Server

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

工具数

4

提示词数

0

GitHub Stars

1

资源数

0
开发工具PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

py2many

提供方

py2many

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run mcp-server-py2many

详细介绍

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/) -模型上下文协议规范

目录标签

目录标签

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

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

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

来源信息

继续浏览同类 MCP