使用说明
dev-env-mcp
当地人 MCP(模型上下文协议) 为编码代理提供 安全、结构化的Python环境管理方式 在项目工作空间内。
与其让代理运行任意shell命令, dev-env-mcp 公开了一个小型的、定义良好的API,用于:
- 选择项目工作空间
- 在该工作空间内创建/使用虚拟环境
- 跑步 受限制的
pip在那个地方的行动 - 冻结对的依赖关系
requirements.txt
为什么存在
代理经常难以可靠地管理Python envs,因为:
- 环境细节是隐式的(哪个解释器?哪个venv?)
- shell命令执行功能强大,但有风险
- 在Windows上安装可能很慢/挂起,并导致状态不一致
dev-env-mcp 进行环境管理 明确且可验证:
- 所有操作都作用于所选的工作区根目录
- 这 主动静脉曲张 按工作区持久化
关键概念
工作区
A. 工作区 是允许服务器修改的项目目录。
所有文件路径都被沙盒化到活动工作区根目录。
选择它:
workspace_use(path)
活动工作区是全局持久化的,因此服务器可以在重新启动时记住它。
主动静脉
在每个工作区内,服务器跟踪哪个venv当前处于活动状态。
主动静脉持续存在于:
<workspace>/.dev-env-mcp/state.json
特性
工作空间管理
workspace_use(path)- 选择活动工作区根目录(通常在以下位置
pyproject.toml/.git生活) - 所有后续操作仅限于此工作区
- 选择活动工作区根目录(通常在以下位置
虚拟环境管理
env_create(path=".venv")- 在活动工作区内创建一个venv并将其标记为活动
env_use(path=".venv")- 选择活动工作区内的现有venv并将其标记为活动
限制pip操作
pip(action, packages=None, options=None, confirm=False)- 行动:
install | uninstall | list | show | check - 跑
python -m pip ...使用 主动式venv python - Pip选项已分配
- 卸载需要
confirm=true
- 行动:
冻结依赖关系
freeze(path="requirements.txt")- 将固定需求从活动venv写入工作区中的文件
可靠性和稳定性
- 有界执行: 每个操作超时+上限stdout/stderr。
- 岗位条件验证: 如果
pip/venv达到所需状态后挂起,服务器验证状态,停止进程,并返回审计跟踪成功。 - 进程树终止: 停止完整的子进程树以避免孤儿。
安全模型
本MCP有意限制:
- ✅ 无任意命令执行(无
shell=True) - ✅ 工作区沙盒:所有文件路径都必须在活动工作区内解析
- ✅ pip仅通过活动的venv python运行(
<venv>/python -m pip) - ✅ pip选项被分配(未知标志被拒绝)
- ✅ 破坏性行为需要明确确认(
confirm=true用于卸载) - ✅ 输出被截断以防止日志泛滥
- ✅ 每个工作区的审核日志
审核日志:
<workspace>/.dev-env-mcp/audit.log
需求
- Python 3.10+(在Windows上测试)
uv推荐(快速运行+可重复安装)- 运行时依赖关系(来自
pyproject.toml):mcp[cli]psutil
运行服务器(stdio传输)
此服务器旨在由MCP客户端(Codex/Cursor/Inspector)使用以下命令启动 标准.
从repo根目录:
uv run server.py
如果您手动运行它,它将在stdin上等待MCP客户端消息。
示例客户端工作流(工具调用序列)
典型药剂流:
- 选择项目工作区
- 创建venv
- 安装依赖项
- 冻结要求
示例调用:
workspace_use("C:\\path\\to\\project")env_create(".venv")pip(action="install", packages=["requests", "python-dotenv"])freeze("requirements.txt")
项目结构
dev-env-mcp/
dev_env_mcp/
server.py # MCP tool definitions and orchestration
workspace.py # workspace root detection + sandbox path resolver
state.py # per-workspace + global persistent state
audit.py # JSONL audit logging
runner.py # safe subprocess runner (timeouts, caps, process-tree kill)
venv_ops.py # venv create/use helpers (+ optional soft verify)
pip_ops.py # allowlisted pip actions + verification-based early exit
freeze.py # requirements.txt generation
config.py # timeouts, caps, allowlists
server.py # entrypoint
pyproject.toml
README.md
注释/限制
- 此服务器有意支持一组狭窄的操作。
- 它不会修改全局Python安装。
- 它的设计不支持conda/poetry。
- 对于非常大的软件包,安装可能仍然需要时间——目标是安全、可预测和可验证。
许可证
麻省理工学院
