项目简介

python-interpreter-mcp 是一个实验性的MCP服务器,旨在为大型语言模型(LLM)提供执行Python脚本的能力。它通过定义 'run_script' 工具,接收LLM客户端发送的Python代码,并在隔离的环境中执行,最后将脚本的stdout输出返回给客户端。该服务器使用 uv 保证代码运行环境的隔离性和可复现性。

请注意,该项目尚处于早期开发阶段,存在安全风险。务必在受信任和沙箱环境中谨慎使用,并对LLM的输入进行严格的验证和安全防护。

主要功能点

  • 执行Python脚本: 提供 'run_script' 工具,允许LLM客户端发送Python代码并执行。
  • 环境隔离: 使用 'uv run' 命令在子进程中执行脚本,实现基本的环境隔离,避免脚本执行对服务器环境造成污染。
  • 标准输出返回: 将脚本的标准输出 (stdout) 作为工具的返回值,方便LLM获取脚本执行结果。
  • MCP协议支持: 基于 'fastmcp' 库构建,遵循 Model Context Protocol (MCP) 协议,可以与任何兼容MCP协议的LLM客户端进行交互。

安装步骤

  1. 安装 python-interpreter-mcp 包:

    pip install python-interpreter-mcp

    这将安装MCP服务器代码及其依赖。

  2. 启动 MCP 服务器:

    在命令行中运行以下命令启动服务器:

    python -m python_interpreter_mcp

    服务器启动后,将监听来自MCP客户端的请求。

服务器配置

MCP服务器需要配置到MCP客户端中才能使用。客户端需要提供启动服务器的命令和参数。以下是针对不同MCP客户端的配置示例:

对于 OpenAI Agents SDK 或其他通用 MCP 客户端:

需要配置服务器的 'command' 和 'args'。'command' 指定执行的命令,'args' 是命令的参数。

{
  "serverName": "interpreter",  //  服务器名称,可以自定义
  "command": "uvx",           //  执行命令,这里使用 uvx,确保在虚拟环境中执行
  "args": ["python-interpreter-mcp"] //  命令参数,指定运行 python-interpreter-mcp 包
}

对于 Claude Desktop 客户端:

Claude Desktop 需要在 'claude_desktop_config.json' 文件中配置 'mcpServers' 字段。

"mcpServers": {
  "interpreter": {       // 服务器名称,必须与客户端代码中使用的名称一致
    "command": "uvx",    // 执行命令,这里使用 uvx,确保在虚拟环境中执行
    "args": ["python-interpreter-mcp"] // 命令参数,指定运行 python-interpreter-mcp 包
  }
}

配置参数说明:

  • 'serverName' 或 服务器名称: 为服务器指定一个名称,用于在客户端中引用。可以自定义。
  • 'command': 启动 MCP 服务器的命令。推荐使用 'uvx',它类似于 'uv run',但会自动激活项目虚拟环境,确保环境隔离。
  • 'args': 传递给 'command' 的参数。对于 'python-interpreter-mcp',参数为 '["python-interpreter-mcp"]',表示运行 'python-interpreter-mcp' 包。

确保您的系统已安装 'uv'。 如果未安装,请根据 uv 安装指南 进行安装。

基本使用方法

  1. 启动 MCP 服务器 (参考 "服务器配置" 步骤)。
  2. 配置 MCP 客户端 (例如 OpenAI Agents SDK 或 Claude Desktop),将上面提供的服务器配置信息添加到客户端配置中。
  3. 在 LLM 应用中使用 'run_script' 工具。 当 LLM 需要执行 Python 代码时,可以调用 'run_script' 工具,并将Python代码字符串作为输入传递给工具。
  4. 接收脚本执行结果。 工具执行完成后,LLM客户端将收到包含脚本标准输出的响应。

示例 (概念性):

假设您正在使用 OpenAI Agents SDK,并已成功配置了 'interpreter' MCP 服务器。在您的 Agent 代码中,您可以这样使用 'run_script' 工具:

from agents import Agent, Runner
from agents.mcp import MCPServerStdio  # 或其他 MCP 客户端连接方式

async def main():
    async with MCPServerStdio(  #  或根据您的客户端选择合适的连接方式
            params={
                "command": "uvx",
                "args": ["python-interpreter-mcp"],
            },
            server_name="interpreter" #  与配置文件中的 serverName 一致
    ) as server:
        agent = Agent(
            # ... agent 配置 ...
            tools=["interpreter.run_script"] #  使用 interpreter 服务器的 run_script 工具
        )

        code_to_run = "print('Hello from Python script!')"
        result = await Runner.run(agent, f"请执行以下Python代码: ```python\n{code_to_run}\n```")
        print(result.final_output) #  打印脚本执行结果

请参考 'example/example.py' 和您的 MCP 客户端文档,了解更详细的使用方法。

安全警告再次提醒: 'run_script' 工具可以执行任意Python代码,请务必谨慎使用,并采取必要的安全措施,例如输入验证、沙箱环境限制等。

信息

分类

AI与计算