Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Lets AI agents read the real source of any Maven dependency, decompiled from ~/.m2 or Central.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
MAVEN_REPOSITORY, MAVEN_REMOTE_REPOS, MAVEN_REMOTE_USERNAME, MAVEN_REMOTE_PASSWORD, MAVEN_OFFLINE, MAVEN_AUTO_DOWNLOAD, MAVEN_DECODER_CACHE_DIR标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"maven-decoder": {
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "your-value",
"MAVEN_REMOTE_REPOS": "your-value",
"MAVEN_REMOTE_USERNAME": "your-value",
"MAVEN_REMOTE_PASSWORD": "your-value",
"MAVEN_OFFLINE": "your-value",
"MAVEN_AUTO_DOWNLOAD": "your-value",
"MAVEN_DECODER_CACHE_DIR": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add maven-decoder --env MAVEN_REPOSITORY=your-value --env MAVEN_REMOTE_REPOS=your-value --env MAVEN_REMOTE_USERNAME=your-value --env MAVEN_REMOTE_PASSWORD=your-value --env MAVEN_OFFLINE=your-value --env MAVEN_AUTO_DOWNLOAD=your-value --env MAVEN_DECODER_CACHE_DIR=your-value -- npx -y maven-decoder-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"maven-decoder": {
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "your-value",
"MAVEN_REMOTE_REPOS": "your-value",
"MAVEN_REMOTE_USERNAME": "your-value",
"MAVEN_REMOTE_PASSWORD": "your-value",
"MAVEN_OFFLINE": "your-value",
"MAVEN_AUTO_DOWNLOAD": "your-value",
"MAVEN_DECODER_CACHE_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"maven-decoder": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"maven-decoder-mcp"
],
"env": {
"MAVEN_REPOSITORY": "your-value",
"MAVEN_REMOTE_REPOS": "your-value",
"MAVEN_REMOTE_USERNAME": "your-value",
"MAVEN_REMOTE_PASSWORD": "your-value",
"MAVEN_OFFLINE": "your-value",
"MAVEN_AUTO_DOWNLOAD": "your-value",
"MAVEN_DECODER_CACHE_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
MAVEN_REPOSITORY envMAVEN_REMOTE_REPOS envMAVEN_REMOTE_USERNAME envMAVEN_OFFLINE envMAVEN_AUTO_DOWNLOAD envMAVEN_DECODER_CACHE_DIR env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 salitaba 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:MAVEN_REMOTE_PASSWORD
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.3.2)于2个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, VMware Storage
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
VMware vSphere storage with 16 MCP tools: datastores, iSCSI, vSAN, FC multipath.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Your agent guesses at library APIs it has never read. This makes it read them.
Lets AI agents read the actual source of any Maven dependency — decompiles jars from ~/.m2 or Maven Central, and diffs versions for breaking changes.
Ask an agent *"I'm upgrading org.jsoup:jsoup from 1.17.2 to 1.23.2 — what breaks?"* and without a way to read the jars it will answer from memory. With this server, compare_versions reads both jars and reports what actually changed:
| 1.17.2 → 1.23.2 | |
|---|---|
| Breaking changes | 45 |
| Members removed | 31 |
| Members added | 150 |
| Classes with API changes | 47 of 115 compared |
Members are compared as declared, so one that moved to a supertype is reported as removed even though it may still be callable. The tool states this in its own output.
It works on artifacts that have no sources jar too: extract_class_info falls back to javap and returns parsed fields, methods, and bytecode version — which is exactly the case for the internal artifacts in a corporate Nexus.
npx skills add https://github.com/salitaba/maven-decoder-mcp --skill maven-code-search
That installs the maven-code-search agent skill, which tells your agent when to reach for these tools. For a raw MCP server setup instead, see Installation.
~/.m2/repository)curl -fsSL https://raw.githubusercontent.com/salitaba/maven-decoder-mcp/main/install.sh | bash
# Install uv (if not installed)
curl -Ls https://astral.sh/uv/install.sh | sh
uvx maven-decoder-mcp
# Install globally
npm install -g maven-decoder-mcp
npm install maven-decoder-mcp
maven-decoder-mcp
# Pull and run
docker run --rm -it \ -v ~/.m2:/home/mcpuser/.m2 \ -v $(pwd):/workspace \ ali79taba/maven-decoder-mcp:latest
# Clone repository
git clone https://github.com/salitaba/maven-decoder-mcp.git cd maven-decoder-mcp
python3 -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -r requirements.txt pip install "git+https://github.com/modelcontextprotocol/python-sdk.git" ./setup_decompilers.sh
./setup_decompilers.sh
For a source checkout, use Python 3.10 or newer and a JDK on PATH. From the repository root, create and activate a virtual environment in PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps1 python -m pip install -e ".[dev]"
$env:MAVEN_REPOSITORY = 'F:\data\repository' maven-decoder-mcp
In Command Prompt (cmd.exe), activate with .venv\Scripts\activate.bat and set the repository with set "MAVEN_REPOSITORY=F:\data\repository" instead. These environment settings apply to programs launched from that terminal; set them in your MCP client's environment when it launches the server separately.
Remote downloads use a separate cache, resolved in this order (empty values are skipped):
MAVEN_DECODER_CACHE_DIR: the complete cache directory; no subdirectory is appended.XDG_CACHE_HOME: append maven-decoder-mcp\repository.LOCALAPPDATA: append maven-decoder-mcp\repository.~/.cache/maven-decoder-mcp/repository under your home directory.On Windows, this usually means %LOCALAPPDATA%\maven-decoder-mcp\repository; XDG_CACHE_HOME still takes precedence if set. The cache uses Maven's directory layout but stays separate from the real local repository so downloads do not interfere with Maven builds. Setting MAVEN_REPOSITORY does not change the cache location.
Add to your ~/.cursor/mcp_servers.json:
{
"maven-decoder": { "command": "uvx", "args": ["maven-decoder-mcp"] } }
The server runs as a standard MCP server and can be integrated with any MCP-compatible client.
This repository includes a maven-code-search agent skill that tells AI coding agents when and how to use this MCP for searching installed Maven package code.
npx skills add https://github.com/salitaba/maven-decoder-mcp --skill maven-code-search
The skill is located at skills/maven-code-search and is ready for skills.sh indexing after the repository is pushed.
| Tool | Description |
|---|---|
list_artifacts | List artifacts in Maven repository with filtering |
analyze_jar | Analyze jar file structure and contents |
extract_class_info | Get detailed information about Java classes |
get_dependencies | Retrieve Maven dependencies from POM files |
search_classes | Search for classes across all jars, optionally filtered by annotation |
extract_source_code | Decompile and extract Java source code |
extract_jar_resource | Extract text resources such as .proto files, services, and metadata |
compare_versions | Compare two versions, including a public API diff and breaking changes |
find_usage_examples | Find classes that reference a given class or method |
get_dependency_tree | Get complete dependency tree |
find_dependents | Find artifacts that depend on a specific artifact |
get_version_info | Get installed versions of an artifact (set include_remote to add published ones) |
analyze_jar_structure | Analyze overall jar structure and metadata |
extract_method_info | Extract specific method information from Java classes |
| Tool | Description |
|---|---|
search_maven_central | Search Maven Central for artifacts by name, coordinates, or contained class |
get_remote_versions | List every version published remotely, flagging which are installed |
download_artifact | Download an artifact (jar/sources/POM) into the local cache; accepts latest |
| Tool | Parameter | Type | Default | Description |
|---|---|---|---|---|
list_artifacts | group_id | string | — | Filter by group ID (e.g., 'org.springframework') |
list_artifacts | artifact_id | string | — | Filter by artifact ID (e.g., 'spring-core') |
list_artifacts | version | string | — | Filter by version (e.g., '5.3.21') |
list_artifacts | sort_by | string | name | Order results by: 'name' (group/artifact/version ascending, default), 'size' (largest jars first), or 'modified' (most recently modified first). Unknown values fall back to 'name'. |
list_artifacts | limit | integer | 50 | Maximum number of artifacts to return |
list_artifacts | page | integer | 1 | Page number for pagination |
list_artifacts | items_per_page | integer | 20 | Items per page |
analyze_jar | group_id* | string | — | Maven group ID |
analyze_jar | artifact_id* | string | — | Maven artifact ID |
analyze_jar | version* | string | — | Maven version |
analyze_jar | include_bytecode | boolean | False | Include bytecode analysis |
analyze_jar | include_manifest | boolean | True | Include JAR manifest |
analyze_jar | summarize_large_content | boolean | True | Summarize large content automatically |
extract_class_info | group_id* | string | — | Maven group ID |
extract_class_info | artifact_id* | string | — | Maven artifact ID |
extract_class_info | version* | string | — | Maven version |
extract_class_info | class_pattern | string | — | Pattern to match class names (regex supported) |
extract_class_info | include_methods | boolean | True | Include method signatures |
extract_class_info | include_fields | boolean | True | Include field information |
extract_class_info | include_bytecode | boolean | False | Include verbose javap bytecode output for matched classes |
extract_class_info | page | integer | 1 | Page number for pagination |
extract_class_info | items_per_page | integer | 20 | Items per page |
extract_class_info | summarize_large_content | boolean | True | Summarize large content automatically |
get_dependencies | group_id* | string | — | Maven group ID |
get_dependencies | artifact_id* | string | — | Maven artifact ID |
get_dependencies | version* | string | — | Maven version |
get_dependencies | include_transitive | boolean | False | Include transitive dependencies |
get_dependencies | page | integer | 1 | Page number for pagination |
get_dependencies | items_per_page | integer | 20 | Items per page |
search_classes | class_name | string | — | Class name to search for (supports wildcards) |
search_classes | package_pattern | string | — | Package pattern to filter by |
search_classes | annotation | string | — | Search for classes with specific annotation |
search_classes | case_sensitive | boolean | True | Match class_name and package_pattern case-sensitively. Set false for a case-insensitive search (e.g. 'arraylist' matches 'ArrayList'). |
| search_classes | limit | integer | 100 | Maximum
只显示了开头部分;其余内容请在仓库中阅读