Python环境管理服务

dev-env-mcp是一个本地MCP服务器,为编码代理提供安全、结构化的Python环境管理功能,适用于项目工作区内的虚拟环境创建、依赖安装和冻结。

  • by Tova501
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Tova501/Dev-Env-MCP

使用说明

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客户端消息。


示例客户端工作流(工具调用序列)

典型药剂流:

  1. 选择项目工作区
  2. 创建venv
  3. 安装依赖项
  4. 冻结要求

示例调用:

  • 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。
  • 对于非常大的软件包,安装可能仍然需要时间——目标是安全、可预测和可验证。

许可证

麻省理工学院