Maven Tools
STDIOMaven Central dependency intelligence for JVM build tools with version analysis and Context7 documentation integration
Maven Central dependency intelligence for JVM build tools with version analysis and Context7 documentation integration
MCP server providing AI assistants with Maven Central dependency intelligence for all JVM build tools (Maven, Gradle, SBT, Mill). Get instant, accurate dependency information by reading maven-metadata.xml files directly from Maven Central repository - faster and more reliable than web searches or search APIs. Features Context7 integration for documentation support.

Ask your AI assistant:
Working with any build tool that uses Maven Central Repository:
| Build Tool | Dependency Format | Example Usage | 
|---|---|---|
| Maven | groupId:artifactId:version | org.springframework:spring-core:6.2.8 | 
| Gradle | implementation("group:artifact:version") | Uses same Maven coordinates | 
| SBT | libraryDependencies += "group" % "artifact" % "version" | Same groupId:artifactId format | 
| Mill | ivy"group:artifact:version" | Same Maven Central lookup | 
All tools use standard Maven coordinates - just provide groupId:artifactId and we handle the rest.
Step 1: Locate your Claude Desktop configuration file
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonStep 2: Add this configuration (using pre-built Docker image):
{ "mcpServers": { "maven-tools": { "command": "docker", "args": [ "run", "-i", "--rm", "arvindand/maven-tools-mcp:latest" ] } } }
Step 3: Restart Claude Desktop
Prerequisites: Docker installed and running
Note: The Docker image supports both AMD64 (Intel/AMD) and ARM64 (Apple Silicon) architectures. Docker automatically selects the correct version for your platform.
Troubleshooting: Context7 integration is enabled by default and contacts https://mcp.context7.com during startup. If your network blocks this URL the server prints a Spring stack trace to stdout, which causes the MCP handshake to fail. Use the Context7-free native image instead: arvindand/maven-tools-mcp:latest-noc7. (Environment-variable toggles only work when running the JVM jar directly.)
Corporate Networks with SSL Inspection: If you need Context7 integration but your network uses SSL inspection (MITM proxies), you can build a custom image with your corporate certificates. See the Corporate Certificate Guide for detailed instructions.
Option 1: Workspace Configuration - Create .vscode/mcp.json:
{ "servers": { "maven-tools": { "type": "stdio", "command": "docker", "args": ["run", "-i", "--rm", "arvindand/maven-tools-mcp:latest"] } } }
Option 2: User Settings - Add to your VS Code settings:
{ "mcp": { "servers": { "maven-tools": { "type": "stdio", "command": "docker", "args": ["run", "-i", "--rm", "arvindand/maven-tools-mcp:latest"] } } } }
Usage: Open Chat view (Ctrl+Alt+I), select Agent mode, then use the Tools button to enable Maven tools.
Core Dependency Intelligence:
Advanced Analytics:
| Tool | Purpose | Key Features | 
|---|---|---|
get_latest_version | Get newest version by type with stability preferences | preferStable parameter, all version types | 
check_version_exists | Verify if specific version exists with type info | Works with any JVM build tool | 
check_multiple_dependencies | Check multiple dependencies with filtering | stableOnly parameter, bulk operations | 
compare_dependency_versions | Compare current vs latest with upgrade recommendations | includeMigrationGuidance flag | 
analyze_dependency_age | Classify dependencies as fresh/current/aging/stale | includeModernizationGuidance flag | 
analyze_release_patterns | Analyze maintenance activity and predict releases | monthsToAnalyze parameter, velocity trends | 
get_version_timeline | Enhanced version timeline with temporal analysis | versionCount parameter, release gap detection | 
analyze_project_health | Comprehensive health analysis for multiple dependencies | includeUpgradeStrategy flag | 
| Tool | Purpose | Key Features | 
|---|---|---|
resolve-library-id | Search for library documentation | Always available (context7.enabled=true by default) | 
get-library-docs | Get library documentation by ID | Always available (context7.enabled=true by default) | 
Core Parameters:
preferStable - Prioritize stable versions in analysisstableOnly - Filter to production-ready versions onlyonlyStableTargets - Only suggest upgrades to stable versionsAnalytical Parameters:
maxAgeInDays - Set acceptable age threshold for dependenciesmonthsToAnalyze - Specify analysis period for release patterns (default: 24)versionCount - Number of recent versions to analyze in timeline (default: 20)includeRecommendations - Include detailed recommendations in health analysisContext7 Integration:
Context7 integration is enabled by default (context7.enabled=true). Maven tools automatically include explicit orchestration instructions in response models when upgrades or modernization are needed. Additionally, the server acts as an MCP client to expose raw Context7 tools (resolve-library-id, get-library-docs) directly to your AI assistant. When disabled, responses contain only core dependency analysis without orchestration instructions or Context7 tools.
Universal Compatibility:
All tools work with standard Maven coordinates (groupId:artifactId) and support any JVM build tool.
get_latest_versionGet latest version of any dependency from Maven Central (works with Maven, Gradle, SBT, Mill) with stability preferences.
Parameters:
dependency (string, required): Maven coordinate in format groupId:artifactId (NO version)preferStable (boolean, optional): When true, prioritizes stable version in response (default: false)Examples:
{ "dependency": "org.springframework:spring-core", "preferStable": false }
{ "dependency": "org.springframework:spring-boot", "preferStable": true }
Response:
{ "dependency": "org.springframework:spring-core", "latest_stable": { "version": "6.2.7", "type": "stable" }, "latest_rc": { "version": "7.0.0-RC1", "type": "rc" }, "latest_beta": { "version": "7.0.0-beta1", "type": "beta" }, "latest_alpha": { "version": "7.0.0-alpha1", "type": "alpha" }, "latest_milestone": { "version": "7.0.0-M5", "type": "milestone" }, "total_versions": 100 }
check_version_existsCheck if specific dependency version exists and identify its stability type. Works with any JVM build tool.
Parameters:
dependency (string, required): Maven coordinate in format groupId:artifactId (NO version)version (string, required): Version to checkExample:
{ "dependency": "org.jetbrains.kotlin:kotlin-stdlib", "version": "1.9.0" }
Response:
{ "exists": true, "version": "6.0.0", "type": "stable" }
check_multiple_dependenciesCheck latest versions for multiple dependencies with filtering options. Works with any JVM build tool.
Parameters:
dependencies (string, required): Comma- or newline-separated list of Maven coordinates (NO versions)stableOnly (boolean, optional): When true, filters to production-ready versions only (default: false)Examples:
{ "dependencies": "org.jetbrains.kotlin:kotlin-stdlib,com.squareup.retrofit2:retrofit,org.apache.spark:spark-core_2.13", "stableOnly": false }
{ "dependencies": "org.springframework:spring-boot,com.fasterxml.jackson.core:jackson-core", "stableOnly": true }
Response (array):
[ { "dependency": "org.springframework:spring-core", "primary_version": "6.2.7", "primary_type": "stable", "total_versions": 100, "stable_versions": 82, "latest_stable": { "version": "6.2.7", "type": "stable" }, "latest_rc": { "version": "7.0.0-RC1", "type": "rc" }, "latest_beta": null, "latest_alpha": null, "latest_milestone": { "version": "7.0.0-M5", "type": "milestone" } }, // ...more results ]
compare_dependency_versionsCompare current dependency versions with latest available and show upgrade recommendations with safety controls.
Parameters:
currentDependencies (string, required): Comma- or newline-separated list of Maven coordinates with versions (groupId:artifactId:version)onlyStableTargets (boolean, optional): When true, only suggests upgrades to stable versions (default: false)Examples:
{ "currentDependencies": "org.jetbrains.kotlin:kotlin-stdlib:1.8.0,com.squareup.retrofit2:retrofit:2.9.0", "onlyStableTargets": false }
{ "currentDependencies": "org.springframework:spring-boot:2.7.0,org.hibernate:hibernate-core:5.6.0", "onlyStableTargets": true }
Response:
{ "comparison_date": "2025-06-07T22:38:47Z", "dependencies": [ { "dependency": "org.springframework:spring-core:6.0.0", "current_version": "6.0.0", "latest_version": "7.0.0-M5", "latest_type": "milestone", "update_type": "major", "update_available": true, "status": "success", "error": null } ], "update_summary": { "major_updates": 1, "minor_updates": 0, "patch_updates": 0, "no_updates": 0 } }
Note: Context7 integration is enabled by default. The following raw Context7 MCP tools are automatically available through the server's dual MCP architecture (acting as both MCP server and MCP client):
resolve-library-idSearch for library documentation using intelligent name resolution.
Parameters:
libraryName (string, required): Search term for library lookup (e.g., "spring boot", "testcontainers")Example:
{ "libraryName": "testcontainers postgresql" }
get-library-docsGet comprehensive documentation for a library using its Context7 ID.
Parameters:
context7CompatibleLibraryID (string, required): Context7-compatible library ID (from resolve-library-id)topic (string, optional): Topic for focused documentation (e.g., "setup", "migration", "configuration")tokens (integer, optional): Maximum tokens to retrieve (default: 10000)Example:
{ "context7CompatibleLibraryID": "/testcontainers/testcontainers-java", "topic": "postgresql setup", "tokens": 5000 }
These tools are automatically available by default through Spring AI MCP client integration. The server acts as both an MCP server (exposing Maven tools) and an MCP client (exposing Context7 tools), providing a unified interface for both dependency analysis and documentation access.
Simple Questions:
Multi-Build Tool Support:
Advanced Stability Controls:
Action: Paste your build.gradle: "Analyze my Gradle dependencies for outdated versions"
Result: Universal dependency analysis in seconds across any build tool
Action: "Show me latest stable versions for these affected dependencies"
Result: Instant security patch identification with production-safe recommendations
Action: "What are the latest stable versions for Spring Boot, Spring Security, and Jackson for both Maven and Gradle?"
Result: Universal dependency intelligence across all JVM build tools
Action: "Compare my current versions but only suggest stable upgrades for production safety"
Result: Risk-assessed upgrade recommendations with stability filtering
| Scenario | Web Search | Maven Tools MCP | 
|---|---|---|
| Single dependency lookup | 3-5 seconds | <100ms (cached) | 
| 20 dependencies across build tools | 60+ seconds | <500ms | 
| Data accuracy | Variable/outdated | 100% current | 
| Bulk operations | Manual, error-prone | Native support | 
| Version classification | Manual parsing | Automatic (stable/RC/beta) | 
| Stability filtering | Not available | Built-in (stableOnly, preferStable) | 
| Build tool compatibility | Tool-specific searches | Universal JVM support | 
Usage: "How old is my Spring Boot dependency and should I update it?"
Tool: analyze_dependency_age
{ "dependency": "org.springframework.boot:spring-boot-starter", "age_classification": "current", "days_since_release": 45, "recommendation": "Actively maintained - consider updating if needed" }
Usage: "What's the maintenance pattern for Jackson? When might the next release be?"
Tool: analyze_release_patterns
{ "dependency": "com.fasterxml.jackson.core:jackson-core", "maintenance_level": "active", "release_velocity": 1.2, "next_release_prediction": "Expected in 3 weeks" }
Usage: "Give me a health assessment for all my key dependencies"
Tool: analyze_project_health
{ "overall_health": "good", "average_health_score": 78, "age_distribution": {"fresh": 2, "current": 8, "aging": 3, "stale": 1} }
Usage: "Show me the recent release timeline for JUnit with gap analysis"
Tool: get_version_timeline
{ "insights": ["High release frequency indicates active development"], "recent_activity": {"activity_level": "active", "releases_last_quarter": 4} }
Note: Snapshot versions are not supported. This is because the Maven Central API does not index or provide access to snapshot artifacts. Only released versions (stable, rc, beta, alpha, milestone) are available.
Default Behavior: Context7 integration is enabled by default. The server acts as both an MCP server (providing Maven tools) and an MCP client (exposing Context7 tools), giving your AI assistant access to both dependency intelligence and documentation guidance in a single connection. When disabled (context7.enabled=false), Maven tools work independently without Context7 guidance hints or raw Context7 tools.
Maven Tools MCP uses a dual MCP architecture with guided delegation for Context7 integration:
resolve-library-id, get-library-docs)This dual architecture provides both dependency intelligence and documentation access through one MCP server connection, with intelligent guidance for effective Context7 tool usage.
Context7 tools are automatically enabled by default. To disable Context7 integration entirely, use the -noc7 image variant:
{ "mcpServers": { "maven-tools": { "command": "docker", "args": [ "run", "-i", "--rm", "arvindand/maven-tools-mcp:latest-noc7" ] } } }
Note: Environment variable toggles (-e CONTEXT7_ENABLED=false) only work when running the JVM jar directly, not with native images. Native images have configuration compiled in at build time. Use the -noc7 image variants for a pure Maven tools experience without Context7 integration.
| Image Tag | Contents | When to Use | 
|---|---|---|
arvindand/maven-tools-mcp:latest | Native image with Context7 tools enabled | Default experience with documentation integration | 
arvindand/maven-tools-mcp:latest-noc7 | Native image without Context7 client/tools | Environments without outbound access to mcp.context7.com or where only Maven tools are desired | 
arvindand/maven-tools-mcp:<version> | Version-specific multi-arch image (Context7 enabled) | Pin to an exact release | 
arvindand/maven-tools-mcp:<version>-noc7 | Version-specific image without Context7 | Pin to exact release without Context7 | 
Intelligent LLM Orchestration:
Maven Tools MCP provides explicit orchestration instructions in response models to help LLMs effectively use the raw Context7 MCP tools when documentation is needed. These clear step-by-step instructions include web search fallback for resilient documentation access.
Context7 Orchestration Example:
Usage: "Compare my Spring Boot version and show upgrade path"
Tool: compare_dependency_versions
{ "dependencies": [{ "dependency": "org.springframework.boot:spring-boot-starter:2.7.0", "current_version": "2.7.0", "latest_version": "3.2.0", "update_type": "major", "context7_guidance": { "orchestration_instructions": "Use resolve-library-id tool with libraryName='spring-boot-starter' to find documentation ID. Then use get-library-docs tool with the returned Context7 ID and topic='migration guide' to get upgrade instructions. If Context7 doesn't provide sufficient information, perform a web search for 'spring-boot-starter major version upgrade guide'." } }] }
Modernization Guidance Example:
Usage: "Analyze my aging dependencies with modernization suggestions"
Tool: analyze_dependency_age
{ "dependency": "org.hibernate:hibernate-core", "age_classification": "AGING", "days_since_last_release": 180, "recommendation": "Consider upgrading - dependency is showing age", "context7_guidance": { "orchestration_instructions": "Use resolve-library-id tool with libraryName='hibernate-core' to find documentation ID. Then use get-library-docs tool with the returned Context7 ID and topic='modern usage and best practices' to get modernization guidance. If Context7 doesn't provide sufficient information, perform a web search for 'hibernate-core latest features best practices'." } }
Q: How is this different from Dependabot/Renovate?
A: Those tools create automated PRs. This gives you instant, interactive dependency intelligence through your AI assistant for decision-making and planning.
Q: How much time does this actually save?
A: For single dependencies: from 3-5 seconds (web search) to <100ms. For 20+ dependencies: from 60+ seconds of manual searching to <500ms bulk analysis.
Q: Why not just search Maven Central directly?
A: This reads maven-metadata.xml files directly from Maven Central repository, providing structured, cached responses optimized for AI consumption with intelligent version classification and bulk operations - plus the time savings above.
Q: Can this replace my IDE's dependency management?
A: No, it complements your IDE by providing instant dependency intelligence during natural conversations with AI assistants for planning and decision-making.
Q: What AI assistants does this work with?
A: Any MCP-compatible assistant including Claude Desktop, GitHub Copilot, and other MCP clients. Works through natural conversation.
Q: Does it work with private Maven repositories?
A: Currently only Maven Central.
Q: What about Gradle dependencies?
A: Maven Central hosts both Maven and Gradle dependencies, so it works for Gradle projects too (using Maven coordinates).
Q: What is Context7 and how does the guided delegation work?
A: Context7 is an MCP server by Upstash that provides up-to-date documentation and code examples. Maven Tools MCP uses a guided delegation architecture - our tools provide explicit orchestration instructions to help your AI assistant effectively use the raw Context7 tools when documentation is needed. This includes clear step-by-step tool usage instructions with web search fallback for resilient documentation access.
Alternative Claude Desktop configuration (if you prefer compose):
Download docker-compose.yml and configure:
{ "mcpServers": { "maven-tools": { "command": "docker", "args": [ "compose", "-f", "/absolute/path/to/docker-compose.yml", "run", "--rm", "maven-tools-mcp" ] } } }
For development/testing only:
docker compose up -d # Runs server in background for testing
Prerequisites:
# Clone the repository git clone https://github.com/arvindand/maven-tools-mcp.git cd maven-tools-mcp # Quick build (CI-friendly - unit tests only) ./mvnw clean package -Pci # Full build with all tests (requires network access) ./mvnw clean package -Pfull # Run the JAR java -jar target/maven-tools-mcp-1.5.1-SNAPSHOT.jar
Claude Desktop configuration for JAR:
{ "mcpServers": { "maven-tools": { "command": "java", "args": [ "-jar", "/absolute/path/to/maven-tools-mcp-1.5.1-SNAPSHOT.jar" ] } } }
For easier builds, use the provided scripts in the build/ folder:
Linux/macOS:
cd build ./build.sh # Complete build helper ./build-docker.sh # Docker-focused helper
Windows:
cd build build.cmd # Complete build helper build-docker.cmd # Docker-focused helper
This server implements MCP Protocol 2024-11-05 with stdio transport, making it compatible with any MCP-compliant client.
The server can be configured via application.yaml:
# Cache configuration spring: cache: type: caffeine # Maven Central Repository settings maven: central: repository-base-url: https://repo1.maven.org/maven2 timeout: 10s max-results: 100 # Logging (minimal for MCP stdio transport) logging: level: root: ERROR
Blog Posts:
This project is licensed under the MIT License - see the LICENSE file for details.
Arvind Menon