构建运行程序MCP服务器
一种模型上下文协议(MCP)服务器,提供结构化的构建、编译和测试操作以及解析输出,以减少令牌使用并提高可读性。
特性
- Java版本切换 通过SDKMAN(
sdk use java) - 编译 具有结构化错误输出
- 构建/打包 附成功/失败总结
- 测试执行 解析测试结果(通过、失败、跳过)
- 多构建系统支持:Maven、Gradle、npm/pnpm/yarn
安装
# Clone the repository
git clone
cd build-runner-mcp
# Install dependencies
npm install
# Build the project
npm run build配置
添加到您的克劳德代码设置(~/.claude.json):
{
"mcpServers": {
"build-runner": {
"command": "node",
"args": ["/path/to/build-runner-mcp/build/index.js"]
}
}
}可用工具
detect_project
检测项目类型、构建系统、测试框架和配置。
{
"projectPath": "/path/to/project"
}返回:项目信息,包括语言、构建系统、包管理器和测试框架。
set_java_version
在运行命令之前,使用SDKMAN切换Java版本。
可用版本:17.0.16-amzn、21.0.8-tem、21.0.9-amzn、25.0.1-tem
{
"version": "17.0.16-amzn"
}compile_project
使用Maven或Gradle编译Java项目。
{
"projectPath": "/path/to/project",
"javaVersion": "17.0.16-amzn",
"clean": false,
"module": "core"
}返回:包含文件、行、列和消息的结构化编译错误和警告。
build_project
构建/打包Java项目。
{
"projectPath": "/path/to/project",
"javaVersion": "21.0.8-tem",
"skipTests": true,
"clean": true
}返回:使用路径和大小、持续时间和任何错误构建工件。
run_tests
使用结构化结果运行Java项目的测试。
{
"projectPath": "/path/to/project",
"javaVersion": "17.0.16-amzn",
"testPattern": "UserServiceTest",
"module": "api",
"failFast": true
}退货:
{
"success": false,
"summary": { "total": 50, "passed": 47, "failed": 2, "skipped": 1, "duration": "12.5s" },
"failures": [
{
"testClass": "UserServiceTest",
"testMethod": "testLogin",
"message": "Expected 200 but got 401",
"stackTrace": "...",
"file": "UserServiceTest.java",
"line": 42
}
]
}node_build
构建Node.js/TypeScript项目。
{
"projectPath": "/path/to/project",
"script": "build",
"packageManager": "pnpm"
}node_typecheck
使用以下命令对TypeScript项目进行类型检查 tsc --noEmit.
{
"projectPath": "/path/to/project"
}node_test
运行Node.js/TypeScript项目(Jest、Vitest或Mocha)的测试。
{
"projectPath": "/path/to/project",
"testPattern": "user.test.ts",
"failFast": true,
"coverage": true
}代币节省
之前(原始Maven测试输出):~500行
[INFO] Scanning for projects...
[INFO] --- maven-surefire-plugin:3.0.0:test ---
... (hundreds of lines)
[ERROR] Tests run: 50, Failures: 2, Errors: 0, Skipped: 1之后(结构化):~20行
{
"success": false,
"summary": { "total": 50, "passed": 47, "failed": 2, "skipped": 1 },
"failures": [
{ "testClass": "UserServiceTest", "testMethod": "testLogin", "message": "Expected 200 but got 401" }
]
}SDKMAN集成
服务器会自动获取SDKMAN,并在指定时切换Java版本:
source "$HOME/.sdkman/bin/sdkman-init.sh" && sdk use java 17.0.16-amzn && mvn compile发展
# Run in development mode
npm run dev
# Build
npm run build
# Clean build artifacts
npm run clean许可证
麻省理工学院
