maven-mcp-server
The Maven Check MCP Server is designed to assist Large Language Models in retrieving and verifying Maven dependency versions from Maven Central. It offers features like semantic version comparison and batch processing to optimize handling multiple dependencies.
Maven Check MCP Server
A lightweight MCP server that lets Large Language Models query Maven Central for artifact versions. This server allows Claude and other LLMs to find the latest version of a Maven dependency and check if a specific version exists.
Features
- Find the latest version of any Maven dependency (library)
- Check if a specific version of a dependency exists
- Support for packaging types (jar, war, pom, etc.)
- Automatic detection of POM dependencies (artifacts with -bom or -dependencies suffix)
- Support for classifiers
- Proper semantic versioning comparisons
- Batch processing for multiple dependencies in a single request
- Connection via Model Context Protocol (MCP)
Installation
# Clone the repository
git clone https://github.com/danielscholl/maven-mcp-server.git
cd maven-mcp-server
# Install dependencies and the package
uv sync && uv pip install -e .
MCP Server Configuration
To use this MCP server with your projects, add the following to your .mcp.json
:
{
"mcpServers": {
"maven-check": {
"type": "stdio",
"command": "uv",
"args": ["run", "maven-check"],
"env": {}
}
}
}
Usage
Start the server:
uv run maven-check
For debug logging:
uv run maven-check --debug
Tools
This MCP server provides five tools:
1. get_maven_latest_version
Gets the latest version of a Maven dependency.
Parameters:
dependency
(required): The dependency in the format 'groupId:artifactId'packaging
(optional): The packaging type, defaults to 'jar' (automatically uses 'pom' for dependencies with -bom or -dependencies suffix)classifier
(optional): The classifier, if any
Examples:
{
"dependency": "org.apache.commons:commons-lang3"
}
{
"dependency": "org.springframework.boot:spring-boot-dependencies"
}
Returns: The latest version as a string (e.g., "3.14.0")
2. check_maven_version_exists
Checks if a specific version of a Maven dependency exists.
Parameters:
dependency
(required): The dependency in the format 'groupId:artifactId'version
(required): The version to checkpackaging
(optional): The packaging type, defaults to 'jar' (automatically uses 'pom' for dependencies with -bom or -dependencies suffix)classifier
(optional): The classifier, if any
Examples:
{
"dependency": "org.apache.commons:commons-lang3",
"version": "3.14.0"
}
{
"dependency": "org.springframework.boot:spring-boot-dependencies",
"version": "3.2.0"
}
Returns: A boolean indicating whether the version exists ("true" or "false")
3. find_maven_latest_component_version
Gets the latest version of a Maven dependency based on semantic versioning component (major, minor, or patch).
Parameters:
dependency
(required): The dependency in the format 'groupId:artifactId'version
(required): The version in semantic version format (MAJOR.MINOR.PATCH)target_component
(required): The component to find the latest version for, one of: "major", "minor", "patch"packaging
(optional): The packaging type, defaults to 'jar' (automatically uses 'pom' for dependencies with -bom or -dependencies suffix)classifier
(optional): The classifier, if any
Examples:
{
"dependency": "org.apache.commons:commons-lang3",
"version": "3.12.0",
"target_component": "minor"
}
{
"dependency": "org.springframework.boot:spring-boot-dependencies",
"version": "3.1.0",
"target_component": "minor"
}
Returns: The latest version as a string (e.g., "3.14.0")
Behavior by Target Component
- major: Returns the highest available major version (across all versions)
- minor: Returns the highest minor version within the given major version
- patch: Returns the highest patch version within the given major.minor version
4. get_maven_all_latest_versions
Gets the latest versions for all semantic versioning components (major, minor, patch) in a single call.
Parameters:
dependency
(required): The dependency in the format 'groupId:artifactId'version
(required): The version in semantic version format (MAJOR.MINOR.PATCH)packaging
(optional): The packaging type, defaults to 'jar' (automatically uses 'pom' for dependencies with -bom or -dependencies suffix)classifier
(optional): The classifier, if any
Examples:
{
"dependency": "org.apache.commons:commons-lang3",
"version": "3.12.0"
}
{
"dependency": "org.springframework.boot:spring-boot-dependencies",
"version": "3.1.0"
}
Returns: A JSON object containing the latest versions for each component:
{
"latest_major_version": "3.14.0",
"latest_minor_version": "3.12.0",
"latest_patch_version": "3.12.0"
}
5. batch_maven_versions_check
Checks the latest versions for multiple Maven dependencies in a single batch request, reducing the number of API calls when working with projects containing many dependencies.
Parameters:
dependencies
(required): List of dependency objects to check, each containing:dependency
(required): The dependency in the format 'groupId:artifactId'version
(required): The version in any supported formatpackaging
(optional): The packaging type, defaults to 'jar' (automatically uses 'pom' for dependencies with -bom or -dependencies suffix)classifier
(optional): The classifier, if any
Example:
{
"dependencies": [
{
"dependency": "org.apache.commons:commons-lang3",
"version": "3.12.0"
},
{
"dependency": "org.springframework.boot:spring-boot-dependencies",
"version": "3.1.0"
},
{
"dependency": "org.json:json",
"version": "20231013"
}
]
}
Returns: A JSON object containing a summary and results for each dependency:
{
"summary": {
"total": 3,
"success": 3,
"failed": 0
},
"dependencies": [
{
"dependency": "org.apache.commons:commons-lang3",
"status": "success",
"versions": {
"latest_major_version": "3.14.0",
"latest_minor_version": "3.12.0",
"latest_patch_version": "3.12.0"
}
},
{
"dependency": "org.springframework.boot:spring-boot-dependencies",
"status": "success",
"versions": {
"latest_major_version": "3.2.0",
"latest_minor_version": "3.1.5",
"latest_patch_version": "3.1.0"
}
},
{
"dependency": "org.json:json",
"status": "success",
"versions": {
"latest_major_version": "20240303",
"latest_minor_version": "20240303",
"latest_patch_version": "20240303"
}
}
]
}
How It Works
The server works by:
- Querying the Maven Central Repository Search API
- Parsing and validating dependency formats
- Automatically detecting POM dependencies:
- Identifies artifacts with "-bom" or "-dependencies" suffix
- Uses "pom" packaging type for these artifacts
- For latest version queries:
- Fetches all versions of the artifact
- Sorts them using proper semantic versioning rules
- Returns the most recent version
- For version existence checks:
- Directly queries Maven Central for the specific version
- Returns whether it exists
- For batch version checks:
- Processes multiple dependency requests in a single call
- Returns detailed results for each dependency with success/error status
- Provides a summary with counts of successful and failed requests
Development
Testing
Run all tests:
uv run pytest
Using with Claude
Once the server is set up and Claude Code is connected, you can use the tools like this:
-
Get the latest version of a Maven dependency:
What is the latest version of org.springframework:spring-framework-bom
-
Check if a specific version exists:
Does version 3.14.0 of org.apache.commons:commons-lang3 exist?
-
Get latest patch version:
I'm using version 2.0.2 of org.springdoc:springdoc-openapi-starter-webmvc-ui what is the latest patch?
-
Working with BOM and POM dependencies:
What is the latest version of org.springframework.boot:spring-boot-dependencies?
The server automatically detects dependencies with "-dependencies" or "-bom" suffix and uses POM packaging type.
-
Get all latest versions in one call:
Check latest versions org.springframework.boot:spring-boot-dependencies (currently using 3.1.0)
This returns the latest major, minor, and patch versions in a single call, making it efficient for understanding upgrade options.
-
Check multiple dependencies at once with batch processing:
I need to check the latest versions for: - org.apache.commons:commons-lang3 (currently using 3.12.0) - org.springframework.boot:spring-boot-dependencies (currently using 3.1.0) - org.json:json (currently using 20231013)
The batch processing tool checks all dependencies in one request, improving efficiency for projects with multiple dependencies.