AutoBuildMCP是一款强大的、基于配置文件的自动化构建服务器,由模型上下文协议(MCP)提供支持。它允许符合MCP标准的客户端(如Cursor)无缝管理、执行和监控多个项目的构建过程。
该服务器采用持久化、有状态的架构,使用构建队列来管理并发操作,避免系统过载。
builds.json文件中,确保服务器重启后配置仍然保留。stdout和stderr都会捕获到一个专用日志文件中,便于调试。安装过程在Windows和Linux/macOS环境下都很简单。
此脚本将创建一个Python虚拟环境,并从requirements.txt安装所有必要的依赖项,包括用于进程管理的psutil。
在Windows上:
.\build.bat
在Linux/macOS上:
./build.sh
这将启动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中的任何文件更改。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."
}
}
}