README
🚀 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.sh
2. 运行服务器
这将启动AutoBuildMCP服务器及其后台构建工作进程。服务器将在http://localhost:5307可用。
在Windows上:
.\run.bat
在Linux/macOS上:
./run.sh
现在服务器已运行,准备好接受来自MCP客户端的请求。
📚 详细文档
服务器提供了一组工具,任何符合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."
}
}
}
微信扫一扫