项目简介
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客户端进行交互。
安装步骤
-
安装 python-interpreter-mcp 包:
pip install python-interpreter-mcp这将安装MCP服务器代码及其依赖。
-
启动 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 安装指南 进行安装。
基本使用方法
- 启动 MCP 服务器 (参考 "服务器配置" 步骤)。
- 配置 MCP 客户端 (例如 OpenAI Agents SDK 或 Claude Desktop),将上面提供的服务器配置信息添加到客户端配置中。
- 在 LLM 应用中使用 'run_script' 工具。 当 LLM 需要执行 Python 代码时,可以调用 'run_script' 工具,并将Python代码字符串作为输入传递给工具。
- 接收脚本执行结果。 工具执行完成后,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与计算