返回市场
开发管理器-mcp

开发管理器-mcp

作者:BloopAI15 星标更新:2025-11-07

项目介绍

MCP 开发服务器管理器

一个守护进程,接受来自MCP客户端的请求以启动开发服务器,并分配唯一的端口以避免冲突,在120秒无活动后关闭空闲连接。

示例

  • 用户启动守护进程
  • 用户的第一个MCP客户端(例如编码CLI)请求运行一个开发服务器
    • 开发服务器在端口3010上启动
  • 用户的第二个MCP客户端(例如编码CLI)请求运行一个开发服务器
    • 开发服务器在端口3011上启动

功能

  • 并行运行多个开发服务器:如果你想要使用自动化测试工具如PlaywrightGoogle Dev Tools MCP,这非常有用。
  • 避免端口冲突:当你处理网站时,如果要运行多个开发服务器,通常需要指定不同的端口。
  • 自动端口分配:从端口3010开始,支持端口复用。
  • 日志捕获:每个服务器有512KB环形缓冲区。
  • 自动清理:在120秒(可通过--idle-timeout配置)无活动后清理空闲会话。

安装与使用

需求:Node.js >= 18

推荐通过npx使用dev-manager-mcp:

快速开始

确保守护进程在某个终端中运行:

npx -y dev-manager-mcp

在你的编码CLI中添加这个MCP配置:

{
  "mcpServers": {
    "dev-manager": {
      "command": "npx",
      "args": ["dev-manager-mcp", "stdio"]
    }
  }
}

最后,让您的编码CLI启动一个开发服务器。您应该能看到它使用了MCP服务器。

MCP 工具

start

启动一个开发服务器。自动生成一个独特的4位会话密钥。

参数:

  • command (字符串):要执行的shell命令(例如:"npm run dev","python -m http.server 8080")
  • cwd (可选字符串):命令的工作目录。当使用STDIO传输时,默认为客户端的工作目录。

返回值:

{
  "status": "started",
  "port": 3010,
  "session_key": "A3X9"
}

stop

停止正在运行的开发服务器会话。

参数:

  • session_key (字符串):会话标识符

返回值:

{
  "status": "stopped",
  "session_key": "A3X9"
}

status

获取一个或所有开发服务器会话的状态。

参数:

  • session_key (可选字符串):特定会话查询,或者省略以查询所有会话

返回值:

{
  "sessions": [
    {
      "session_key": "B7K2",
      "port": 3010,
      "running": true
    }
  ]
}

tail

获取开发服务器会话的stdout/stderr日志。

参数:

  • session_key (字符串):会话标识符(例如:"A3X9")

返回值:

{
  "session_key": "A3X9",
  "stdout": "Server started on port 3010...",
  "stderr": ""
}

架构

模块

  • port_allocator.rs - 从3010开始顺序分配端口,带有自由列表
  • log_buffer.rs - 带有Clone支持的512KB环形缓冲区
  • server_entry.rs - 带异步日志捕获的进程包装器
  • manager.rs - 带有自动清理清扫器的共享状态管理器
  • service.rs - 带有工具定义的MCP服务
  • main.rs - HTTP/SSE守护进程服务器

状态管理

  • 单个Arc<Manager>跨所有客户端连接共享
  • 每个连接都会获得一个新的DevManagerService实例
  • 使用Mutex保护的HashMap存储会话
  • 背景清扫器每5秒运行一次,清理空闲会话(默认超过120秒)

会话密钥

  • 自动生成的4位大写字母数字代码(例如:"A3X9","K7M2")
  • 在活跃会话中保证唯一性
  • 1,679,616种可能组合(36^4)

端口分配

  • 从端口3010开始顺序递增
  • 维护用于复用的自由列表
  • 分配前使用TcpListener探测可用性

日志捕获

  • 每个服务器启动两个异步任务来捕获stdout/stderr
  • 日志存储在带字节跟踪的有限VecDeque中
  • 达到512KB限制时移除最旧条目
  • 使用行缓冲进行非阻塞读取

测试多客户端行为

  1. 启动守护进程:npx -y dev-manager-mcp daemon
  2. 连接客户端A并启动一个会话
  3. 连接客户端B并查询状态 - 应该看到客户端A的会话
  4. 客户端B可以停止客户端A的会话
  5. 所有客户端共享相同的会话状态

从源码构建

如果您希望从源码构建或需要离线/高级使用:

cargo build --release

二进制文件位于target/release/dev-manager-mcp

要使用已构建的二进制文件,请在上述所有示例中将npx dev-manager-mcp替换为./target/release/dev-manager-mcp

许可证

MIT