maven-artifacts-mcp
by skhatri
README.md
# Maven Version Resolver MCP Server
A TypeScript-based Model Context Protocol (MCP) server that provides Maven2 module version resolution capabilities with caching and logging.
## Features
- Latest stable version resolution from Maven Central
- Pre-release filtering (excludes preview, RC, alpha, beta, snapshot, milestone versions)
- 5-minute in-memory cache with automatic cleanup
- Request/response logging
- Error handling and input validation
## Installation from Source
```bash
npm install
npm run build
```
## Usage
### Stdio Mode (Default)
For MCP clients like Cursor:
```bash
npm start
```
### Remote HTTP Server Mode
Run as a standalone network service:
```bash
# Start HTTP server on port 3001
npm run start:http
# Or with custom port
npm run dev:http -- --port 8080
```
### Development Mode
```bash
# Stdio mode
npm run dev
# HTTP mode
npm run dev:http
```
## Setup
### Stdio Mode (Recommended for Cursor)
Add to your `.cursor-settings.json`:
```json
{
"mcp": {
"mcpServers": {
"maven-resolver": {
"command": "npx",
"args": ["maven-artifacts-mcp", "--stdio"],
"env": {
"CACHE_TTL_MINUTES": "5",
"MAVEN_API_TIMEOUT": "10000"
}
}
}
}
}
```
### Remote HTTP Mode
Start the server: `npm run start:http`, then configure:
```json
{
"mcp": {
"mcpServers": {
"maven-resolver-remote": {
"command": "http",
"args": ["http://localhost:3001/sse"],
"env": {
"CACHE_TTL_MINUTES": "5",
"MAVEN_API_TIMEOUT": "10000"
}
}
}
}
}
```
**HTTP Endpoints:**
- `GET /sse` - MCP Server-Sent Events endpoint
- `GET /health` - Health check endpoint
- `GET /tools` - List available MCP tools and capabilities
**Example `/tools` response:**
```bash
curl http://localhost:3001/tools
```
```json
{
"service": "maven-mcp-server",
"tools": [{"name": "latest_version", "description": "Get the latest stable version of a Maven artifact"}],
"features": ["Filters out pre-release versions", "In-memory caching with 5-minute TTL"],
"endpoints": {"health": "/health", "sse": "/sse", "tools": "/tools"}
}
```
Other environment variables like
"HTTPS_PROXY": "http://myorg.proxy:8080",
"HTTP_PROXY": "http://myorg.proxy:8080",
"NO_PROXY": "localhost,127.0.0.1,.local"
"LOG_LEVEL": "debug",
"NODE_ENV": "development"
can also be provided.
## MCP Tool: `latest_version`
Retrieves the latest version information for a Maven artifact.
### Parameters
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `groupId` | string | Yes | Maven group ID (e.g., "org.springframework") |
| `artifactId` | string | Yes | Maven artifact ID (e.g., "spring-core") |
### Example Usage
```json
{
"tool": "latest_version",
"arguments": {
"groupId": "org.springframework",
"artifactId": "spring-core"
}
}
```
Response includes latest version, last updated timestamp, repository, cache status, and excluded pre-release versions.
## Version Filtering
Automatically filters out pre-release versions:
- Preview versions (e.g., `6.1.0-preview`)
- Release candidates (e.g., `6.1.0-RC1`)
- Alpha/Beta versions (e.g., `6.1.0-alpha`)
- Snapshots (e.g., `6.1.0-SNAPSHOT`)
- Milestones (e.g., `7.0.0-M1`)
## Configuration
### Environment Variables
| Variable | Default | Description |
|----------|---------|-------------|
| `MAVEN_API_TIMEOUT` | 10000 | API request timeout in milliseconds |
| `CACHE_TTL_MINUTES` | 5 | Cache TTL in minutes |
| `LOG_LEVEL` | info | Logging verbosity level |
### Npm Tasks
- `npm run build` - Compile TypeScript
- `npm start` - Start the server
- `npm run dev` - Build and start in development mode
- `npm test` - Run test suite
- `npm run test:coverage` - Run tests with coverage
## License
Apache 2.0 License TDQS
B3.4/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool, there is no possibility of ambiguity or misselection. The single tool's purpose is clear and distinct.
Naming Consistency5/5
With only one tool, the naming is trivially consistent. There are no mixed conventions or conflicting patterns to evaluate.
Tool Count2/5
A single tool for a Maven artifacts server is far too few. The domain typically requires operations like listing versions, resolving metadata, or searching artifacts, making the count inadequate for the apparent scope.
Completeness1/5
The tool surface is severely incomplete, only offering the latest version lookup. Other essential operations for a Maven artifacts server are entirely absent, leaving obvious gaps that would prevent agents from performing common tasks.
Maintenance
ActivityInactive
ResponsivenessNo issues