MCP Maven Server
The MCP Maven Server allows AI assistants like Claude to interact with Maven and Spring Boot projects, returning structured JSON output instead of raw build logs.
Build Operations
compileProject– Compile a project and get structured error output (file, line, column, message)getCompilationErrors– Run compile and return only the error listverifyProject– Runmvn verify(compile + test + integration checks)packageProject– Build a JAR/WAR artifact (skips tests by default)cleanProject– Clean build artifactsexecuteMavenCommand– Execute any arbitrary Maven command with custom arguments
Test Operations
runTests– Run all tests and get structured resultsrunSingleTest– Run a single test class by namerunSingleMethod– Run a single test method within a classgetFailedTests– Read existing test reports and return only failed/errored tests (no re-run)getTestReports– Read all existing test reports from disk without re-running tests
Spring Boot Lifecycle
springBootRun– Start the application, detecting port and capturing logsspringBootStop– Stop the app gracefully (actuator shutdown first, SIGTERM fallback)springBootRestart– Restart the applicationspringBootStatus– Check current status (port, PID, uptime, health endpoint)springBootLogs– Retrieve recent log lines from the running application
Project & Environment Info
getProjectInfo– Detect project structure, modules, and Java version frompom.xmlgetJavaInfo– Identify which JDK is in usegetMavenInfo– Get Maven version and installation pathping– Health check to verify the server is alive and responding
Provides tools to manage Spring Boot application lifecycle: start, stop, restart, check status, and view logs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Maven Serverrun all tests in the project"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Maven Server
An MCP (Model Context Protocol) server that wraps Maven and Spring Boot operations for Claude Code. Provides structured JSON output instead of raw build logs — saving tokens and allowing Claude to focus on code fixes.
Prerequisites
Node.js 18+ (with npm)
Maven 3.6+ (in PATH or configured via
MCP_MAVEN_COMMAND)Java 8–21+ (detected automatically)
Related MCP server: Cursor Agent MCP Server
Installation
# Clone
cd C:\Java
git clone https://github.com/Christian-Carminati/mcp-maven-server.git
cd mcp-maven-server
# Install and build
npm install
npm run buildIntegration with Claude Code
1. MCP Server Configuration
Add to ~\.claude.json:
{
"mcpServers": {
"mcp-maven": {
"type": "stdio",
"command": "node",
"args": ["C:\\Java\\mcp-maven-server\\dist\\index.js"],
"env": {
"MCP_MAVEN_TIMEOUT_MS": "300000",
"MCP_MAVEN_MAX_LOG_LINES": "500",
"MCP_MAVEN_COMMAND": "C:\\Program Files\\JetBrains\\IntelliJ IDEA 2025.3.6\\plugins\\maven\\lib\\maven3\\bin\\mvn.cmd"
}
}
}
}
MCP_MAVEN_COMMANDis optional — set it ifmvnis not in your system PATH. Omitting it makes the server look formvnvia PATH.
2. Block Maven via Bash (Permissions)
Add to ~\.claude\settings.json:
{
"permissions": {
"deny": ["Bash(mvn *)", "Bash(./mvnw *)", "Bash(java -jar *)"]
}
}3. PreToolUse Hook (Bash Interception)
Add to ~\.claude\settings.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "C:\\Java\\mcp-maven-server\\hooks\\maven-intercept.bat"
}
]
}
]
}
}4. CLAUDE.md Instruction
Add to ~\.claude\CLAUDE.md:
## Maven MCP Server
For ALL Maven operations (compile, test, verify, package, clean, spring-boot)
use ONLY the `mcp-maven` MCP tools. Available:
compileProject, runTests, runSingleTest, runSingleMethod, getFailedTests,
verifyProject, packageProject, cleanProject, executeMavenCommand,
getCoverageReport,
springBootRun, springBootStop, springBootRestart, springBootStatus, springBootLogs,
getProjectInfo, getJavaInfo, getMavenInfo, ping,
getCacheInfo, clearCache.
The Bash tool is blocked for mvn/java commands by permission rules.
Do not attempt to run mvn via Bash — it will be denied.
### Example
- ❌ "Run `mvn test` in the terminal"
- ✅ "Run tests using mcp-maven's runTests tool"
- ❌ "Compile with `mvn compile` via Bash"
- ✅ "Compile using mcp-maven's compileProject tool"
- ❌ "Start Spring Boot with `mvn spring-boot:run`"
- ✅ "Start Spring Boot using mcp-maven's springBootRun tool"Available Tools
Build
Tool | Description | Key Parameters |
| Compile with structured error output (file, line, column, message) |
|
| Compile + test + integration-check |
|
| Build JAR/WAR artifact (skips tests by default) |
|
| Clean build artifacts |
|
| Run arbitrary Maven with parsed error output |
|
Test
Tool | Description | Key Parameters |
| Execute tests with build cache (second call is instant) |
|
| Run one test class |
|
| Run one test method |
|
| Read failed tests without re-running |
|
| Read existing reports from disk |
|
runTestscaching: By default, checks if any source/test files changed since the last run. If nothing changed, returns cached results instantly — no Maven execution. Useforce: trueto bypass cache and re-run all tests. Useparallel: true(default) for parallel execution (-T 2 -DforkCount=2). Response includes_cached: trueflag when served from cache.
Cache Management
Tool | Description |
| Show which modules are cached and how old |
| Invalidate cache for a module (or all) |
Coverage
Tool | Description | Key Parameters |
| Read JaCoCo coverage report (lines, branches, methods per package) |
|
Spring Boot
Tool | Description | Key Parameters |
| Start the application (detects port, captures logs) |
|
| Stop gracefully (actuator shutdown first, SIGTERM fallback) |
|
| Restart the app |
|
| Check status, port, PID, health endpoint |
|
| View recent log lines |
|
Code Quality (SonarQube)
Tool | Description | Key Parameters |
| Run |
|
Zero LLM token waste: the analysis runs locally via Maven. The MCP server only fetches structured JSON results from the SonarQube API.
Project Info
Tool | Description | Key Parameters |
| Detect project structure, modules, Java version |
|
| Detect JDK version and vendor |
|
| Get Maven version and home | — |
| Health check | — |
projectPath: all build/test/project tools accept an optionalprojectPathparameter. Use it to target a specific module without changing Claude Code's working directory. Example:runTests({ projectPath: "C:/Java/BancomatPay/be-bancomatpay" })
Configuration
All settings are optional and configured via environment variables (set in the MCP server env block):
Variable | Default | Description |
| 300000 | Build timeout in milliseconds |
| 500 | Max stdout lines to keep |
| 500 | Spring Boot log ring buffer size |
| 120000 | Max wait for Spring Boot startup |
| true | Enable/disable build caching |
| — | Default Maven profile |
| — | Override JDK path |
|
| Full path to |
|
| Enable/disable build cache |
|
| SonarQube server URL |
| — | SonarQube authentication token (user token, not project-scoped) |
| — | Default SonarQube project key (e.g. |
Project Structure
src/
├── index.ts # Entry point
├── core/ # Server setup, types, config
│ ├── server.ts # MCP server init, tool registration
│ ├── config.ts # Environment variable loader
│ └── types.ts # Shared TypeScript interfaces
├── project/ # Project discovery
│ ├── discovery.ts # pom.xml upward scan, module resolution
│ ├── pom-parser.ts # XML parser for pom.xml
│ └── java-env.ts # JDK version detection (all sources)
├── maven/ # Maven execution
│ ├── runner.ts # mvn process spawn with execa
│ ├── parser.ts # Javac error parser (JDK 8–21)
│ ├── reports.ts # Surefire/Failsafe XML reader
│ └── process-manager.ts # Process queue, cancel, timeout
├── tools/ # MCP tool implementations
│ ├── index.ts # Tool registry
│ ├── compile.ts # compileProject, getCompilationErrors
│ ├── test.ts # runTests, runSingleTest, getFailedTests
│ ├── build.ts # verifyProject, packageProject, cleanProject
│ ├── project.ts # getProjectInfo, getJavaInfo, getMavenInfo, ping
│ └── spring-boot.ts # Spring Boot lifecycle tools
└── utils/
└── spring-boot-manager.ts # Long-running process managementLicense
MIT
Available Tools
20 toolscleanProjectC
Clean the project (mvn clean)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It says it runs 'mvn clean', which is a destructive operation (removes target directory), but this is not explicitly stated as a side effect or irreversible action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), which is concise, but it omits necessary details like parameter semantics and usage guidance, making it insufficiently informative for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, parameter descriptions, and output schema, the description does not adequately complete the tool's interface. It fails to explain the module parameter or any return value behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'module' with no description, and the tool description does not explain its purpose (e.g., which module to clean). Schema description coverage is 0%, so the description adds no value beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool cleans the project using 'mvn clean', which is a specific verb and resource. However, it doesn't fully distinguish from sibling tools like 'compileProject' or 'verifyProject' that may also affect build state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., before a fresh compile, or which Maven module targets). The description lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compileProjectB
Compile the Maven project and return structured compilation errors
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) | |
| profile | No | Maven profile to activate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral burden. It only states compilation and structured errors, but omits details like whether it runs tests, modifies files, or requires a specific project structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action. It is concise and to the point, though it could be slightly more descriptive without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and optional parameters, the description lacks context about the expected output format, side effects, and relationship with sibling tools like cleanProject or runTests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters having descriptions. The description adds no additional meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it compiles a Maven project and returns structured compilation errors. The verb 'Compile' and resource 'Maven project' are specific, and it distinguishes from sibling tools like cleanProject or getCompilationErrors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like executeMavenCommand or cleanProject. There is no mention of prerequisites, context, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
executeMavenCommandB
Execute an arbitrary Maven command with custom arguments. Output is parsed for errors.
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes | Maven arguments (e.g. ["dependency:tree", "-DoutputFile=deps.txt"]) | |
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that output is parsed for errors, but lacks details on side effects, destructive potential, or auth requirements. For a generic command executor, more transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no unnecessary words. Front-loaded with the core action and immediate behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema, annotations, and the complexity of a generic command executor, the description is insufficient. It does not explain return format, error handling details, or the role of the optional module parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only 'args' described). The description adds no additional parameter information beyond the schema example. The 'module' parameter is left unexplained, and no context is given for how parameters affect behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes arbitrary Maven commands, distinguishing it from specific sibling tools like compileProject or packageProject. The mention of output parsing adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus siblings. The existence of specific lifecycle tools implies use for custom commands, but the description does not articulate this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getCompilationErrorsC
Run compile and return only the structured error list (no success noise)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | ||
| profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates side effects (running compile), but lacks details on potential performance impact, failure modes, or whether it modifies project state. No annotations provided to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at 9 words, front-loading the purpose. However, it omits critical details, making it insufficient for effective use.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (compilation side effects, no output schema), the description is incomplete. It does not describe the return format or explicitly differentiate from similar siblings, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description does not explain the two parameters (module, profile), leaving the agent without guidance on how to use them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs compile and returns only a structured error list, distinguishing it from siblings like compileProject or getFailedTests. However, it could be more specific about what 'compile' entails (e.g., Maven compile).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like compileProject or getFailedTests. Prerequisites or context (e.g., project must be open) are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getFailedTestsA
Read test reports and return only failed/errored tests without re-running
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool reads existing reports and does not run tests, but omits prerequisites (e.g., reports must exist) and possible side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the verb and purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is mostly complete. It could state behavior when no failed tests exist or reports are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description does not add meaning beyond the schema's parameter description. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read test reports and return only failed/errored tests without re-running,' specifying the verb (read/return), resource (failed tests), and distinguishing from siblings like runTests and getTestReports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'without re-running,' implying it should be used when you want results without test execution. However, it does not explicitly contrast with siblings like getTestReports or provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getJavaInfoA
Detect which JDK is being used — from JAVA_HOME, mvn --version, or PATH
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It transparently lists the three detection sources: JAVA_HOME, mvn --version, or PATH. No side effects or authentication requirements are mentioned, but the tool is a simple read-only query, so this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of 12 words, perfectly concise and front-loaded with the main purpose. Every word contributes value, and there is no wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is nearly complete for a simple info tool. It explains the tool's functionality and detection sources. It could mention the return format, but that is not critical for an agent's decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. The baseline score is 4, and the description adds context about the detection sources, which is helpful beyond the schema (which has no properties).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Detect which JDK is being used'. The verb 'Detect' and resource 'JDK' are specific, and it distinguishes itself from sibling tools like getMavenInfo by focusing on Java detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when JDK information is needed, but does not provide explicit guidance on when to use this tool versus alternatives like getMavenInfo or getProjectInfo. No exclusions or when-not scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getMavenInfoA
Get Maven version and path from mvn --version
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It transparently states it runs 'mvn --version' to retrieve version and path. For a read-only info tool, this is sufficient and there are no unexpected side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the action and result. No wasted words; it earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters, no output schema, and no annotations, the description is complete enough for an info-gathering tool. It could mention that Maven needs to be installed, but that is implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has zero parameters; schema coverage is 100% (empty schema). The description adds no parameter info, but that's appropriate since there are none. Baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'Maven version and path', with the source 'from mvn --version'. It distinguishes itself from siblings like getJavaInfo and getProjectInfo by being Maven-specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. Usage is implied (when Maven info is needed), but no exclusions or alternatives are mentioned, leaving the agent without clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getProjectInfoA
Detect the current Maven project structure: root, modules, Java version
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description fully bears the burden. It indicates a read-only detection operation but lacks detail on return format or potential side effects. Acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loads key information (detection scope) with no extraneous words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description is adequate but leaves ambiguity about how results are presented (e.g., structured object vs text). Could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, making schema coverage 100%. The description adds value by explaining what is detected beyond the empty schema, earning a baseline of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Detect' and specifies the resource 'current Maven project structure' with concrete details: root, modules, Java version. This clearly distinguishes it from siblings like getMavenInfo or getJavaInfo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for detecting project structure but does not explicitly state when to use this tool over alternatives, such as getJavaInfo for Java version alone. Given 19 siblings, explicit guidance would improve clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getTestReportsA
Read test reports from disk without running tests again
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist; description only says 'read from disk' without detailing file locations, formats, error cases, or whether it's idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff, perfectly front-loaded with the action and key differentiator.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and minimal description; lacks details on return format, error handling, and what 'test reports' actually contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single optional parameter 'module' with a clear description; the tool description adds no extra parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads test reports from disk without running tests, distinguishing it from test-execution siblings like runTests or runSingleTest.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after tests have been run; could explicitly state not to use when tests haven't been executed or to use sibling tools for running tests.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
packageProjectC
Package the project as JAR/WAR (skip tests by default)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | ||
| profile | No | ||
| skipTests | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It mentions test skipping but does not explain other behaviors like triggering compilation, side effects, or output details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, efficient but lacking structure. It conveys key info but could be better organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 optional parameters and no output schema, the description is too minimal. It fails to explain what the tool produces, how to use module/profile, or any prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%; description only adds meaning for skipTests (default true), but module and profile remain completely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it packages the project as JAR/WAR and mentions default test skipping, distinguishing it from sibling tools like compileProject or cleanProject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like compileProject or verifyProject. The description only states default behavior but lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Health check — verify the MCP server is alive and responding
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It describes a non-destructive read operation. While it doesn't detail response format, for a health check this is acceptable. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no extraneous words. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description fully captures the tool's purpose and behavior. No missing information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, schema coverage is 100% trivially. Baseline is 4 for 0 params. Description adds context but not param-specific info, which is fine since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a health check to verify the MCP server is alive and responding. The verb 'verify' and resource 'MCP server' are specific and unambiguous. No sibling tool serves the same purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking server liveness. No explicit when-not or alternatives are needed given the simplicity and uniqueness of this tool among siblings. Context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runSingleMethodB
Run a single test method and return structured results
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) | |
| className | Yes | Full test class name (e.g. com.example.UserServiceTest) | |
| methodName | Yes | Test method name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions 'return structured results' without specifying format, side effects, prerequisites, or error handling. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single concise sentence, no fluff, front-loaded with key action. However, could benefit from slight expansion for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description vague about return values. Lacks details on prerequisites (compilation), error handling, or integration with other tools. Incomplete for a test-running tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter names and descriptions. Description adds no extra meaning beyond schema, achieving baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Run' and resource 'single test method', and indicates output as 'structured results'. Distinguishes from sibling 'runTests' which runs multiple tests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implicitly suggests use for running a single test method, but no explicit when-to-use or when-not-to-use. Sibling 'runSingleTest' exists, creating potential confusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runSingleTestB
Run a single test class and return structured results
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) | |
| className | Yes | Full test class name (e.g. com.example.UserServiceTest) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'structured results' but does not detail what the results contain (e.g., pass/fail, stack traces), nor does it disclose side effects like compilation or log generation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded. It gets to the point without extraneous text, though it could be slightly more informative without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, and the tool's nature (running a test in a Maven project), the description fails to mention prerequisites (e.g., compiled project), the format of results, or how it relates to sibling tools like compileProject. It is incomplete for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema coverage is 100%, and the description does not add any meaning beyond what the schema already provides for the two parameters (className as full test class name, module as Maven module name). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run'), the resource ('a single test class'), and the outcome ('return structured results'). It distinguishes from sibling tools like runTests (plural) and runSingleMethod (more granular).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as runTests or runSingleMethod. No explicit context about prerequisites or conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
runTestsA
Run all tests (mvn test) and return structured results
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Maven module name (for multi-module projects) | |
| profile | No | Maven profile to activate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions running all tests and returning structured results, but lacks disclosure of side effects like compilation time, test report generation, or failure handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous content; front-loaded with the key purpose and result description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description hints at structured results but lacks details on return format or error scenarios. For a low-complexity tool, it is sufficient but minimal.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters. The description adds no additional meaning beyond what the schema provides, which is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (run all tests), the command (mvn test), and the output (structured results), effectively distinguishing from siblings like runSingleTest or getFailedTests.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. With siblings like runSingleTest and getFailedTests, the agent must infer context without help from the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
springBootLogsC
Get the most recent log lines from the running Spring Boot application
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | Number of log lines to return | |
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only indicates a read operation ('Get') but lacks details on authentication, rate limits, or side effects. The behavior is minimally disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, concise but lacking structure. It uses a clear verb and resource but omits important details, sacrificing completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with 2 parameters and no output schema, the description fails to specify the meaning of 'module', leaving ambiguity. It is not sufficiently complete for an agent to reliably invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% with only 'lines' described. The description adds no parameter-specific information, leaving 'module' unexplained. Schema already covers 'lines', so description adds zero value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'log lines' from a 'running Spring Boot application'. It distinguishes itself from sibling tools, none of which are log retrieval tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The description is too brief to guide usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
springBootRestartC
Restart the Spring Boot application (stop then start)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | ||
| profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'stop then start', which gives minimal behavioral insight. It doesn't disclose side effects, prerequisites, or error conditions. For a restart tool, more detail on the sequence and potential issues is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is one sentence, front-loaded with the action. It is concise with no wasted words, though it omits necessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simple tool with 2 optional params and no output schema, the description is inadequate. It fails to explain parameter semantics, behavioral nuances, or provide enough context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions in schema). The description does not mention parameters 'module' and 'profile' at all, leaving the agent with no understanding of what to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action: restart Spring Boot app by doing stop then start. It's specific verb+resource. However, it doesn't explicitly distinguish from running stop and run separately, though the combined action is implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like springBootRun or springBootStop. The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
springBootRunB
Start the Spring Boot application. Captures logs and detects port/startup.
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | Module name (for multi-module projects) | |
| profile | No | Spring profile (e.g. "dev", "production") | |
| waitForStartup | No | If true, waits for Tomcat/Netty startup confirmation before returning |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions log capture and port detection, but does not disclose side effects (e.g., port binding, process management), blocking behavior (only partially via waitForStartup param), or cleanup requirements. This is insufficient for a startup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (two sentences) and front-loads the purpose. However, it could be slightly more detailed given the tool's complexity, so not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, no output schema, and 19 siblings including lifecycle commands, the description omits critical details: return value, error states, preconditions (e.g., compiled project), and post-usage cleanup. This inadequately supports agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with clear descriptions. The tool description adds minimal parameter-specific value (e.g., 'Captures logs' hints at waitForStartup's role). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts a Spring Boot application, captures logs, and detects port/startup. It effectively distinguishes from sibling tools like springBootStop, springBootRestart, and springBootLogs by focusing on startup behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., springBootRestart, runTests). The description implies use for starting the app, but lacks context on prerequisites or scenarios where other tools are more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
springBootStatusB
Get the current status of the Spring Boot application (port, PID, uptime, health)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It implies a read-only operation but does not explicitly state non-destructiveness or other behavioral traits. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundant words. Clear and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description lists key return fields (port, PID, uptime, health), which is helpful. However, the parameter is unaddressed, leaving a gap in understanding. Completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention the 'module' parameter at all. The agent has no guidance on what the parameter means or how to use it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'current status' with specific fields (port, PID, uptime, health). It distinguishes from sibling tools like springBootRestart or springBootLogs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It only states what it does, without exclusions or context of when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
springBootStopA
Stop the Spring Boot application gracefully (actuator shutdown first, SIGTERM fallback)
| Name | Required | Description | Default |
|---|---|---|---|
| module | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description adds value by explaining the graceful shutdown mechanism (actuator first, then SIGTERM). However, it does not disclose potential side effects, idempotency, or state requirements, which would be beneficial for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 10 words, front-loading the key action and strategy. No unnecessary information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's action and lack of annotations/output schema, the description is too minimal. It omits essential context such as the meaning of the 'module' parameter, expected application state, and whether the tool is idempotent or safe to call multiple times.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'module', is not mentioned in the description, and the schema provides no description. With 0% schema description coverage, the description should compensate but fails to add any meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to stop a Spring Boot application gracefully. It specifies the shutdown strategy (actuator shutdown first, then SIGTERM), and distinguishes from sibling tools like springBootRestart and springBootRun.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for gracefully stopping a Spring Boot app but does not explicitly state when to use this tool versus alternatives like springBootRestart or when not to use it. No prerequisites or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verifyProjectB
Run mvn verify — compile, test, and integration-check the project
| Name | Required | Description | Default |
|---|---|---|---|
| module | No | ||
| profile | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool compiles, tests, and integration-checks, which are the main behavioral outcomes. However, it does not mention side effects like build time, dependency downloads, or modification of target directory.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the action and followed by explanatory details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations, the description is insufficient. It does not cover the parameters, output, or prerequisites, making it incomplete for an agent to reliably use without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explain the two parameters (module and profile). The description adds no value beyond the schema, leaving the agent uninformed about what these parameters do or how to use them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run mvn verify') and specifies the scope ('compile, test, and integration-check the project'). It distinguishes itself from sibling tools like compileProject and runTests by covering all three phases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is for running the full Maven verify lifecycle, but it does not provide explicit guidance on when to use it versus alternatives like compileProject or executeMavenCommand. No when-not-to-use or context is given.
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.
20 tool updates
v0.1.0- First observed
cleanProject - First observed
compileProject - First observed
executeMavenCommand - First observed
getCompilationErrors - First observed
getFailedTests - First observed
getJavaInfo - First observed
getMavenInfo - First observed
getProjectInfo - First observed
getTestReports - First observed
packageProject - First observed
ping - First observed
runSingleMethod - First observed
runSingleTest - First observed
runTests - First observed
springBootLogs - First observed
springBootRestart - First observed
springBootRun - First observed
springBootStatus - First observed
springBootStop - First observed
verifyProject
TDQS
Scored across 20 tools
Each tool targets a specific task without overlap. Maven build, test, and Spring Boot operations are clearly separated, and tools like getCompilationErrors and getFailedTests have distinct purposes from their run counterparts.
Most tools follow a verb+noun pattern (e.g., cleanProject, compileProject), but springBootLogs, springBootStatus, and springBootStop lack verbs, deviating slightly. Overall, the pattern is predictable and readable.
20 tools cover Maven build lifecycle, test reporting, project info, and Spring Boot management. While slightly numerous, each tool serves a distinct purpose and the scope is well-defined.
The tool set provides comprehensive coverage for Maven development workflows: clean, compile, test (single/class/all), package, verify, plus error retrieval and test report reading. Spring Boot lifecycle (start, stop, restart, status, logs) is fully covered. Missing deploy or install, but these are less common in typical development cycles.
Maintenance
Related MCP Connectors
Source-checked CLI guides and model-aware planning for Claude Code, Codex, and Grok Build.
- MaShop MCPOAuthapp.mashop
Build, deploy and manage MaShop e-commerce projects from Claude, Cursor or any MCP client.
Live SEO workflow tools for Claude Code, Codex, and AI agents.
Claude Code / MCP skills for the dev pipeline: discover, spec, design, build, ship, operate.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA utility toolkit that enhances Claude's code interaction capabilities by providing seamless tools for Java code analysis, manipulation, and testing workflows.3-
- FlicenseCqualityDmaintenanceEnables cost-effective repository analysis, code search, file editing, and task planning by wrapping the cursor-agent CLI through focused tools. Reduces token usage by offloading heavy thinking tasks from Claude to specialized operations with configurable output formats.721-
- AlicenseNot gradedqualityDmaintenanceMonitors development commands and exposes terminal output to Claude in real-time, allowing AI assistants to see errors, logs, and stack traces without copy-pasting.7 npm3MIT
- FlicenseAqualityDmaintenanceProvides structured build, compile, and test operations with parsed output to reduce token usage and improve readability.9-