Python REPL服务

一个提供持久化Python REPL的服务,支持多会话、沙盒保护和超时保护,适用于需要跨多次调用执行Python代码的LLM代理。

  • by aazizisoufiane
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 aazizisoufiane/mcp-python-repl

使用说明

🐍 mcp python repl

A. 生产级 MCP服务器提供具有多会话支持、沙盒和超时保护的持久Python REPL。

为需要在多个回合中执行Python代码的LLM代理构建 在调用之间持续存在的变量.

✨ 特性

特性 描述
多会话 具有唯一ID的隔离会话--运行并行工作流
持久命名空间 变量在会话内的调用中存活
超时保护 可配置的执行超时(Unix上的SIGALRM)
沙箱 可选模式阻止危险模块(subprocess, socket等等)
软件包安装 动态安装pip包(首选 uv 速度)
文件执行 快跑 .py 持久会话中的文件
双重运输 stdio(本地)和可流式传输的http(远程)
全面反省 列出变量,获取历史记录,检查服务器状态
基于Env的配置 所有设置通过 REPL_* 环境变量

🚀 快速开始

使用克劳德桌面/光标(stdio)

添加到MCP配置中:

{
  "mcpServers": {
    "python-repl": {
      "command": "uvx",
      "args": ["mcp-python-repl"]
    }
  }
}

使用uv(本地开发)

# Clone and run
git clone https://github.com/soufiane-aazizi/mcp-python-repl.git
cd mcp-python-repl
uv run mcp-python-repl

HTTP传输(远程/多客户端)

REPL_TRANSPORT=streamable-http REPL_PORT=8000 uv run mcp-python-repl

🛠️ 工具

代码执行

工具 说明
repl_run_code 使用持久命名空间执行Python代码
repl_run_file 执行a .py 会话中的文件
repl_install_package 安装pip包(使用 uv 如果可用)

命名空间管理

工具 说明
repl_list_namespace 列出会话中的所有变量
repl_get_variable 获取变量的完整值
repl_set_variable 从JSON中注入变量
repl_delete_variable 删除特定变量
repl_clear_namespace 清除会话中的所有变量

会话管理

工具 说明
repl_list_sessions 列出所有活动会话
repl_delete_session 删除会话及其数据

调试

工具 说明
repl_get_history 获取会话的执行历史记录
repl_server_status 服务器配置、Python版本、会话计数

🔄 毅力是如何发挥作用的

Call 1:  repl_run_code(code="data = [1,2,3]; total = sum(data); result = total")
         → returns: {"result": 6, "session_id": "a1b2c3d4e5f6", "new_variables": ["data", "total"]}

Call 2:  repl_run_code(code="doubled = [x*2 for x in data]; result = doubled", session_id="a1b2c3d4e5f6")
         → returns: {"result": [2,4,6], "new_variables": ["doubled"]}

重要提示: 这 result 变量用于将输出返回给调用者。确实如此 非 坚持。请改用命名变量。

⚙️ 配置

所有设置均可通过环境变量进行配置:

变量 默认值 描述
REPL_TIMEOUT 30 最大执行时间(秒)
REPL_MAX_SESSIONS 50 最大并发会话数
REPL_SESSION_TTL 120 会话到期时间(分钟)
REPL_MAX_OUTPUT 1048576 最大stdout/stderr捕获量(字节)
REPL_SANDBOX false 启用沙盒(true/false)
REPL_TRANSPORT stdio 运输: stdio 或 streamable-http
REPL_HOST 127.0.0.1 HTTP主机(使用HTTP传输时)
REPL_PORT 8000 HTTP端口(使用HTTP传输时)
REPL_WORKDIR cwd 执行工作目录

沙盒模式

当 REPL_SANDBOX=true,以下模块被阻止:

subprocess, shutil, ctypes, socket, http.server, xmlrpc, ftplib, smtplib, telnetlib, webbrowser

以下内置组件已被移除: exec, eval, compile, __import__ (替换为受限版本)。

🧪 发展

# Install dev dependencies
uv sync --extra dev

# Run tests
uv run pytest -v

# Lint
uv run ruff check src/ tests/

# Test with MCP Inspector
npx @modelcontextprotocol/inspector uv run mcp-python-repl

📦 项目结构

mcp-python-repl/
├── src/mcp_python_repl/
│   ├── __init__.py       # Package metadata
│   ├── config.py         # Env-based configuration
│   ├── session.py        # Multi-session manager with TTL
│   ├── executor.py       # Python code executor (timeout + sandbox)
│   └── server.py         # MCP server with all tools
├── tests/
│   └── test_core.py      # Unit + integration tests
├── pyproject.toml        # uv/hatch project config
├── LICENSE               # MIT
└── README.md

📄 许可证

麻省理工学院——见 许可证.