# Maven Decoder

Inspect Maven dependency classes and compare library versions through an MCP server. Useful when checking an upgrade or locating an API method.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 20
- Author: salitaba
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/salitaba/maven-decoder-mcp
- Updated: 2026-09-16
- HTML: https://affpapa.org/en/nevibecode/mcp/maven-decoder

## What it does

Maven Decoder gives an agent tools to inspect Maven artifacts: retrieve source, examine class signatures, methods and fields, search dependencies, and compare releases. It can work with JAR files in `~/.m2` or fetch artifacts from Maven Central. When a sources JAR is missing, `javap` can provide parsed bytecode information.

The server can also inspect transitive dependency trees and identify version conflicts. Decompilation requires Java 8 or newer. You also need a local Maven repository and one runtime option: Python 3.8+, Node.js 14+, or Docker. Without Java, the decompilation features will not run.

For Claude Code, add the server with `claude mcp add`; repository and authentication settings are passed as environment variables. Remote repositories support address and credential settings, while `MAVEN_OFFLINE` switches the server to offline operation.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `MAVEN_REPOSITORY`, `MAVEN_REMOTE_REPOS`, `MAVEN_REMOTE_USERNAME`, `MAVEN_REMOTE_PASSWORD`, `MAVEN_OFFLINE`, `MAVEN_AUTO_DOWNLOAD`, `MAVEN_DECODER_CACHE_DIR` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env MAVEN_REPOSITORY=<MAVEN_REPOSITORY> --env MAVEN_REMOTE_REPOS=<MAVEN_REMOTE_REPOS> --env MAVEN_REMOTE_USERNAME=<MAVEN_REMOTE_USERNAME> --env MAVEN_REMOTE_PASSWORD=<MAVEN_REMOTE_PASSWORD> --env MAVEN_OFFLINE=<MAVEN_OFFLINE> --transport stdio maven-decoder -- npx -y maven-decoder-mcp
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add maven-decoder --env MAVEN_REPOSITORY=<MAVEN_REPOSITORY> --env MAVEN_REMOTE_REPOS=<MAVEN_REMOTE_REPOS> --env MAVEN_REMOTE_USERNAME=<MAVEN_REMOTE_USERNAME> --env MAVEN_REMOTE_PASSWORD=<MAVEN_REMOTE_PASSWORD> --env MAVEN_OFFLINE=<MAVEN_OFFLINE> -- npx -y maven-decoder-mcp
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "maven-decoder": {
            "command": "npx",
            "args": [
                "-y",
                "maven-decoder-mcp"
            ],
            "env": {
                "MAVEN_REPOSITORY": "<MAVEN_REPOSITORY>",
                "MAVEN_REMOTE_REPOS": "<MAVEN_REMOTE_REPOS>",
                "MAVEN_REMOTE_USERNAME": "<MAVEN_REMOTE_USERNAME>",
                "MAVEN_REMOTE_PASSWORD": "<MAVEN_REMOTE_PASSWORD>",
                "MAVEN_OFFLINE": "<MAVEN_OFFLINE>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "maven-decoder": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "maven-decoder-mcp"
            ],
            "env": {
                "MAVEN_REPOSITORY": "<MAVEN_REPOSITORY>",
                "MAVEN_REMOTE_REPOS": "<MAVEN_REMOTE_REPOS>",
                "MAVEN_REMOTE_USERNAME": "<MAVEN_REMOTE_USERNAME>",
                "MAVEN_REMOTE_PASSWORD": "<MAVEN_REMOTE_PASSWORD>",
                "MAVEN_OFFLINE": "<MAVEN_OFFLINE>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e MAVEN_REPOSITORY=<MAVEN_REPOSITORY> -e MAVEN_REMOTE_REPOS=<MAVEN_REMOTE_REPOS> -e MAVEN_REMOTE_USERNAME=<MAVEN_REMOTE_USERNAME> -e MAVEN_REMOTE_PASSWORD=<MAVEN_REMOTE_PASSWORD> -e MAVEN_OFFLINE=<MAVEN_OFFLINE> maven-decoder npx -y maven-decoder-mcp
```
Replace <…> with your own values. 2 more environment variables are in the server README

## When to use it
- compare the APIs of two Maven dependency releases
- locate a class or method in Maven artifacts
- inspect class signatures and fields
- trace a transitive dependency tree
- find version conflicts in dependencies

## Example prompts
- Compare `org.jsoup:jsoup` versions `1.17.2` and `1.23.2`, then report API changes.
- Search my Maven dependencies for a class with a method that parses HTML.
- Inspect the transitive dependency tree and identify version conflicts.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
