🐍 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-replHTTP传输(远程/多客户端)
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📄 许可证
麻省理工学院——见 许可证.
