Skip to main content
Glama
kristijan-rotim

Maven Version Server

README.md
# Maven Version Server

MCP server for Maven dependency version management using **ONLY** `maven-metadata.xml` from Maven Central (NO Solr search API).

## Features

- **4 Tools** for Maven dependency management
- **Strict stability filtering** - excludes SNAPSHOT, alpha, beta, RC, milestones, etc.
- **Pure metadata approach** - uses only maven-metadata.xml
- **Fast and reliable** - direct XML parsing, no search API dependencies

## Tools

### 1. get_latest_stable_version

Get the latest stable version for a Maven dependency.

**Input:**
```json
{
  "dependency": "io.mockk:mockk"
}
```

**Output:** Plain text version string (e.g., `1.14.7`)

### 2. get_all_versions

List all versions with optional filtering and limits.

**Input:**
```json
{
  "dependency": "com.google.guava:guava",
  "stableOnly": true,
  "limit": 10
}
```

**Output:** Newline-separated version list

### 3. check_version_exists

Verify if a specific version exists and check its stability.

**Input:**
```json
{
  "dependency": "org.springframework:spring-core",
  "version": "6.2.8"
}
```

**Output:** JSON object with exists, isStable fields

### 4. compare_versions

Compare two versions and get upgrade recommendations.

**Input:**
```json
{
  "dependency": "org.springframework:spring-core",
  "currentVersion": "5.3.20",
  "targetVersion": "6.2.8"
}
```

**Output:** JSON object with upgrade type and recommendation

## Stability Filter

Excludes versions containing (case-insensitive):
- `SNAPSHOT` - Development snapshots
- `alpha` / `a` - Alpha releases
- `beta` / `b` - Beta releases
- `RC` - Release candidates
- `M` + digit - Milestones
- `CR` - Candidate releases
- `EA` - Early access
- `preview` - Preview releases
- `dev` - Development versions
- `incubating` - Apache incubator

## Installation

### Via npm (Recommended)

```bash
npm install -g maven-version-server
```

Or use with npx (no installation needed):

```bash
npx maven-version-server
```

### Configure for Claude Code CLI

Add to `~/.claude/mcp_servers.json`:

```json
{
  "mcpServers": {
    "maven-version": {
      "command": "npx",
      "args": ["maven-version-server"]
    }
  }
}
```

Or if installed globally:

```json
{
  "mcpServers": {
    "maven-version": {
      "command": "maven-version-server"
    }
  }
}
```

### Build from source

```bash
git clone https://github.com/krotim/maven-version-server.git
cd maven-version-server
npm install
npm run build
```

## Usage Examples

### Example 1: Get latest stable version

```
User: What's the latest stable version of MockK?
Claude: [Uses get_latest_stable_version with dependency="io.mockk:mockk"]
Result: 1.14.7
```

### Example 2: Compare versions

```
User: Should I upgrade Spring Core from 5.3.20 to 6.2.8?
Claude: [Uses compare_versions]
Result: {
  "currentVersion": "5.3.20",
  "targetVersion": "6.2.8",
  "upgradeType": "major",
  "recommendation": "Caution: Major version upgrade may contain breaking changes. Review migration guide.",
  "isCurrentStable": true,
  "isTargetStable": true
}
```

### Example 3: List recent versions

```
User: Show me the last 5 versions of Guava
Claude: [Uses get_all_versions with limit=5]
Result:
33.5.0-jre
33.4.0-jre
33.3.1-jre
33.3.0-jre
33.2.1-jre
```

## Testing

### Test with MCP Inspector

```bash
npm run inspector
```

### Manual test

```bash
node build/index.js
```

## Technical Details

- **Language:** TypeScript (strict mode)
- **Data Source:** https://repo1.maven.org/maven2/{groupPath}/{artifactId}/maven-metadata.xml
- **Transport:** STDIO (Claude Code CLI)
- **Timeout:** 10 seconds
- **Dependencies:** @modelcontextprotocol/sdk, axios, xml2js

## License

MIT

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: checking existence, comparing versions, listing all versions, and getting the latest stable version. The descriptions make it unambiguous which tool to use for each specific task.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (check_version_exists, compare_versions, get_all_versions, get_latest_stable_version). The naming is predictable and readable throughout the set.

Tool Count5/5

Four tools is well-scoped for a Maven version server, covering core operations without bloat. Each tool earns its place by addressing a distinct aspect of version management.

Completeness4/5

The tool set covers most essential version operations for Maven dependencies, but there is a minor gap in update or dependency resolution tools (e.g., suggesting compatible versions or handling transitive dependencies). However, the provided tools allow agents to work effectively within the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues