Skip to main content
Glama
mangogogogoman

mcp-auto-build

MCP 前后端自动打包服务

一个基于 Node.js 的前后端项目自动打包服务,支持 Maven(后端)和 npm(前端)项目的自动化打包。

功能特性

  • 📦 后端打包:支持 Maven 项目,自动生成带版本号的 jar 文件

  • 📱 前端打包:支持 npm 项目,自动生成带版本号的 zip 压缩包

  • 📊 版本管理:自动获取 SVN 版本号,支持向上查找多层目录

  • 🎯 分步执行:提供多个独立工具,便于流程编排和调试

  • 🔄 错误处理:完善的异常处理,不影响 MCP 服务稳定性

Related MCP server: MCP Universal Test Suite Generator

环境要求

  • Node.js >= 18.0.0

  • Java/Maven(后端项目打包)

  • Node.js/npm(前端项目打包)

  • SVN 客户端(版本号获取)

安装依赖

npm install

启动服务

npm start

MCP Tools

1. getProjectInfo

获取项目基本信息,包括项目名称、类型和 SVN 版本信息。

参数:

参数

类型

必填

说明

projectRoot

string

本地工程的根路径

返回示例:

{
  "projectName": "my-project",
  "projectType": "frontend",
  "hasSvn": true,
  "projectRoot": "/path/to/project",
  "currentRevision": "123",
  "maxRevision": "125"
}

2. buildBackend

对后端 Java 项目进行 Maven 打包。

参数:

参数

类型

必填

说明

projectRoot

string

本地工程的根路径

projectName

string

项目名称

revision

string

SVN 版本号

返回示例:

{
  "projectName": "my-project",
  "revision": "123",
  "outputPath": "/path/to/project/ruoyi-admin/target/ruoyi-admin-2026-6-28-r123.jar"
}

3. buildFrontend

对前端项目进行 npm 打包。

参数:

参数

类型

必填

说明

projectRoot

string

本地工程的根路径

projectName

string

项目名称

revision

string

SVN 版本号

返回示例:

{
  "projectName": "my-project",
  "revision": "123",
  "outputPath": "/path/to/project/dist/my-project-2026-6-28-r123.zip"
}

4. buildPackage

完整打包工程,包含所有步骤。

参数:

参数

类型

必填

说明

projectRoot

string

本地工程的根路径

saveProjectName

string

保存项目名称的路径

返回示例:

{
  "projectName": "my-project",
  "currentRevision": "123",
  "maxRevision": "125"
}

使用流程

分步执行模式

Step 1: getProjectInfo → 获取项目类型、名称、SVN版本号
Step 2: buildFrontend / buildBackend → 根据 projectType 执行打包

一键打包模式

buildPackage → 自动完成所有步骤

Dify 流程编排示例

可在 Dify 中创建工作流,将各个工具串联使用:

  1. 输入节点:接收 projectRoot 参数

  2. getProjectInfo:获取项目信息

  3. 条件分支:根据 projectType 选择打包方式

    • 前端 → buildFrontend

    • 后端 → buildBackend

  4. 输出节点:返回打包结果

项目结构

src/
├── mcpServer.js          # MCP Server 入口
├── entry/
│   └── index.js          # 工具函数入口
├── build/
│   ├── index.js          # 打包入口
│   ├── buildBackendProject.js   # 后端打包逻辑
│   └── buildFrontendProject.js  # 前端打包逻辑
├── svnRevision/
│   └── index.js          # SVN版本获取
└── utils/
    └── common.js         # 通用工具函数

注意事项

  1. 后端项目需包含 pom.xml 文件,前端项目需包含 package.json 文件

  2. SVN 版本号通过读取 .svn/wc.db 数据库获取,支持向上查找最多 10 层目录

  3. 后端项目默认输出路径为 ruoyi-admin/target/,可根据实际项目结构调整

  4. 前端项目打包命令优先使用 npm run build:prod,其次使用 npm run build

License

ISC

Available Tools

4 tools
buildBackend后端项目打包B

对后端Java项目进行Maven打包,支持若依框架。打包结果为带有日期和SVN版本号的jar文件。

使用场景:

  • 单独对后端项目进行打包

  • 在CI/CD流程中分步执行

ParametersJSON Schema
NameRequiredDescriptionDefault
revisionYesSVN版本号
projectNameYes项目名称
projectRootYes本地工程的根路径

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the full behavioral burden. It states the output artifact (jar with date and SVN revision) and the build system (Maven), adding useful context. However, it does not disclose prerequisites, side effects, error behavior, or the return format, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the core purpose in the first sentence and a short list of use cases. No fluff is present, and the key information is front-loaded, though the usage scenarios add only modest value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three required parameters, no annotations, and no output schema, the description is incomplete. It explains the build output but fails to specify what the tool returns or outputs to the caller, nor any preconditions like Maven being installed, leaving agents to guess about execution results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already described in the schema. The description does not add further detail about parameter formats, defaults, or relationships, so it provides no value beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs Maven packaging for a backend Java project, mentions RuoYi framework support, and specifies the output is a jar file with date and SVN version. This distinct action and resource make it easy to differentiate from the sibling buildFrontend, though it does not explicitly distinguish from the generic buildPackage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides two usage scenarios: standalone backend packaging and stepwise execution in CI/CD, giving some context for when to use the tool. However, it does not state exclusions or recommend alternatives, leaving differentiation between buildBackend and buildPackage/buildFrontend to the agent's inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buildFrontend前端项目打包A

对前端项目进行npm打包,支持Vue/React等框架。打包结果为带有日期和SVN版本号的zip压缩包。

使用场景:

  • 单独对前端项目进行打包

  • 在CI/CD流程中分步执行

ParametersJSON Schema
NameRequiredDescriptionDefault
revisionYesSVN版本号
projectNameYes项目名称
projectRootYes本地工程的根路径

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the output format (zip with date and SVN version) but does not disclose side effects such as whether it runs npm install, modifies the project directory, or how failures are handled. Some context is provided, but significant behavioral aspects remain unexplained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with the main action and output format stated upfront. The usage scenarios are brief and add context without redundancy. There is no unnecessary elaboration. It is well-structured and front-loaded, though it could arguably be even more compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 required parameters, no output schema, and no annotations, the description provides a reasonable overview but lacks some details. It does not explain the output location or how the zip is returned, nor any prerequisites (e.g., Node.js, npm install). The usage scenarios help, but an agent might still need to infer certain operational aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter already has a clear description in the schema. The tool description does not add any additional parameter-specific details beyond what the schema provides. It only references the revision indirectly in the output format, which does not enhance parameter understanding. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: npm packaging for frontend projects, with support for Vue/React. It specifies the output format (zip with date and SVN version). It distinguishes from buildBackend by the word 'frontend', but does not explicitly differentiate from the generic buildPackage sibling, so it falls short of a full 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists two usage scenarios: standalone frontend packaging and step-by-step execution in CI/CD. This gives clear context on when to use it, but it does not mention any exclusions or alternatives (e.g., when to use buildPackage instead). No explicit when-not-to-use guidance, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

buildPackage打包工程A

完整打包工程,包含获取项目信息、获取SVN版本号、执行打包等全部步骤。支持本地工程的打包,打包结果为带有SVN版本的标准格式。

使用场景:

  • 需要一次性完成整个打包流程

  • 简单的打包任务

ParametersJSON Schema
NameRequiredDescriptionDefault
projectRootYes本地工程的根路径
saveProjectNameNo保存项目名称的路径,如果没有当前工程,则使用项目根目录的名称

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses the major steps and the output format, but does not mention potential side effects such as files written to disk, interaction with SVN servers, required permissions, or whether the operation modifies the working copy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well structured: the first sentence defines scope and output, and the use-case list adds practical invocation context. There is no filler or redundant repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the overall workflow, local support, and output format, which is adequate for a high-level understanding. However, it omits output location, artifact naming conventions, prerequisites like a valid SVN working copy, and how it relates to the separate backend/frontend build tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters with 100% coverage, so the baseline is 3. The description adds only general context about local packaging and does not clarify saveProjectName beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as an end-to-end packaging operation: it gathers project info, obtains the SVN revision, and executes the packaging, with a standard-format output. It is distinguishable from siblings through its emphasis on the complete single-flow packaging, though it does not explicitly name or contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use scenarios: when the user wants the entire packaging flow done at once and for simple packaging tasks. It does not explicitly state when not to use this tool or mention alternatives such as buildBackend/buildFrontend, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getProjectInfo获取项目信息A

获取项目的基本信息,包括项目名称、类型(前端/后端/未知)和是否有SVN版本控制。

使用场景:

  • 在打包前确认项目类型

  • 检查项目是否有SVN版本信息

ParametersJSON Schema
NameRequiredDescriptionDefault
projectRootYes本地工程的根路径

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full burden of disclosing side effects, safety, and failure modes. It only says 'get' information and lists return fields; it does not state that the operation is read-only, requires no modifications, or may fail on invalid paths. This leaves behavioral expectations ambiguous for an unannotated tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and then lists two concrete usage scenarios in bullet form. Every sentence contributes actionable information with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter get-info tool with no output schema, the description adequately covers the return content and typical call context. It lacks explicit failure-mode or side-effect notes, which would matter more for mutation tools; this gap is minor here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single parameter projectRoot, which already includes a clear description of the path. The tool description adds no parameter-specific guidance, so the schema alone does the heavy lifting; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (获取项目的基本信息 – get basic project info) and lists the exact fields returned (name, type with enum, SVN status). It is unmistakably a read/info tool, and the sibling build* tools make the contrast obvious even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage scenarios are given: 'before packaging to confirm project type' and 'check if project has SVN version info'. This provides clear context on when to call it. It does not explicitly name sibling tools as alternatives, but the listed use cases naturally route away from the build tools, so a 4 is warranted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv1.0.0
    • First observedbuildBackend
    • First observedbuildFrontend
    • First observedbuildPackage
    • First observedgetProjectInfo

TDQS

A3.9/5.0

Scored across 4 tools

Disambiguation4/5

buildPackage is clearly the full end-to-end workflow, while buildBackend and buildFrontend are explicitly scoped to individual project types. getProjectInfo is distinct as an informational tool, so an agent can choose correctly based on whether a full or partial build is needed. There is minor potential overlap between buildPackage and the specific build tools, but the use-case descriptions resolve it.

Naming Consistency5/5

All tool names follow a consistent camelCase verb-first pattern: buildPackage, buildBackend, buildFrontend, getProjectInfo. The verbs are descriptive and the naming style is uniform across the entire server.

Tool Count5/5

Four tools is well-scoped for a build automation server: one full-build orchestrator, two project-type-specific builders, and one information-gathering tool. Each tool has a clear role, and none feel redundant or missing.

Completeness5/5

The tool surface covers the full build lifecycle: retrieving project metadata, building backend projects, building frontend projects, and performing a complete packaged build. There are no obvious dead ends or missing operations within the stated build-automation purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers