AutoBuildMCP:MCP驱动的构建自动化服务器
AutoBuildMCP是一个强大的、基于配置文件的构建自动化服务器,由模型上下文协议(MCP)提供支持。它允许兼容MCP的客户端(如Cursor)无缝管理、执行和监控多个项目的构建过程。
服务器构建在持久的、有状态的架构上,该架构使用构建队列来管理并发操作,防止系统过载。
特性
- 基于配置文件的管理: 为每个项目定义独特的构建“配置文件”。每个配置文件都封装了项目的路径、构建命令、环境变量和超时。
- 持久状态: 所有构建配置文件都存储在一个简单的
builds.json文件,确保您的配置在服务器重启后仍然有效。 - 构建排队系统: 一个复杂的排队系统管理一个并发构建池(默认值:2),防止服务器因多个同时的请求而过载。当插槽可用时,新的构建会排队并执行。
- 异步、非阻塞执行: 构建作为后台进程运行,允许服务器在构建过程中保持响应并处理其他API调用。
- 全生命周期管理: 一套完整的工具,用于配置、启动、监视、停止和删除构建。
- 日志捕获: 完整版
stdout和stderr每个构建运行的日志都被捕获到一个专用的日志文件中,以便于调试。 - 重新启动弹性: 如果服务器在执行过程中重新启动,服务器会智能地检测并标记构建为“未知”,从而防止陷入“运行”状态。
设置和安装
安装过程在Windows和Linux/macOS环境中都得到了简化。
1.营造环境
此脚本创建一个Python虚拟环境,并从安装所有必要的依赖项 requirements.txt,包括 psutil 用于过程管理。
在Windows上:
.\build.bat在Linux/macOS上:
./build.sh2.运行服务器
这将启动AutoBuildMCP服务器及其后台构建工作程序。服务器将在以下时间可用 http://localhost:5307.
在Windows上:
.\run.bat在Linux/macOS上:
./run.sh服务器现在正在运行,并准备接受来自MCP客户端的请求。
API/工具参考
服务器公开了一组工具,任何符合MCP的客户端都可以调用这些工具。
______________________________________________________________________
configure_build
创建或更新生成配置文件。
profile_name(str):配置文件的唯一名称(例如。,my-web-app).project_path(str):项目根目录的绝对或相对路径。build_command(str):为构建执行的shell命令(例如。,npm run build).environment(dict,可选):为构建过程设置的环境变量字典。timeout(int,可选):以秒为单位的构建超时(尚未实现)。
______________________________________________________________________
toggle_autobuild
启用或禁用配置文件的自动生成文件监视器。
profile_name(str):要修改的配置文件的名称。enabled(bool):设置为true启用自动构建,或false禁用它。
______________________________________________________________________
list_builds
列出所有已配置的构建配置文件及其最后已知状态。
______________________________________________________________________
get_build_status
检索特定生成配置文件的当前状态。
profile_name(str):要检查的配置文件的名称。- 退货: 状态,可以是
configured,queued,running,succeeded,failed,stopped,或unknown.
______________________________________________________________________
start_build
将配置文件的构建请求添加到队列中。
profile_name(str):要构建的配置文件的名称。- 退货: 确认消息和构建在队列中的位置。
______________________________________________________________________
stop_build
停止当前正在运行的构建。
profile_name(str):要停止的运行配置文件的名称。
______________________________________________________________________
delete_build_profile
从服务器中删除生成配置文件。
profile_name(str):要删除的配置文件的名称。
______________________________________________________________________
get_build_log
检索配置文件上次运行的日志文件。
profile_name(str):配置文件的名称。lines(int,可选):如果提供,则仅返回日志的最后N行(日志尾随)。
自动构建系统
该服务器包括一个强大的自动构建系统,可以在每个配置文件的基础上启用。
运作原理
- 启用: 使用
toggle_autobuild工具为特定配置文件启用该功能。 - 观看: 服务器将开始监视配置文件的
project_path对于任何文件更改。 - 去抖动: 当检测到变化时,会启动一个5秒的倒计时。如果再次发生变化,计时器将重置。这可以防止在保存多个文件时出现构建风暴。
- 触发: 定时器完成后,服务器检查配置文件的状态:
- 如果配置文件是 闲置,新版本将添加到队列中。 - 如果配置文件是 忙碌 (running 或 queued),它设置了一个 rebuild_on_completion 旗帜。构建工作程序将在当前构建完成后立即自动重新排队。
这 builds.json 状态文件
此文件是服务器的核心,存储所有配置文件配置及其上次运行状态。您可以查看它以查看系统的当前状态。
示例 builds.json:
{
"my-web-app": {
"project_path": "C:/Users/Admin/projects/my-app",
"build_command": "npm install && npm run build",
"environment": {
"NODE_ENV": "production"
},
"timeout": 600,
"status": "succeeded",
"autobuild_enabled": true,
"rebuild_on_completion": false,
"last_run": {
"run_id": "08f7e57e-e46c-4ac3-b564-f3588018b9fd",
"pid": 12052,
"start_time": "2025-06-29T22:45:00.123456Z",
"end_time": "2025-06-29T22:46:12.123456Z",
"log_file": "logs/08f7e57e-e46c-4ac3-b564-f3588018b9fd.log",
"outcome_note": "Build status is unknown; server was restarted during execution."
}
}
}