关于 dejared
dejared 是面向 AI 编码 Agent 的 Java MCP 服务,用于检查 Java 归档文件。它可浏览归档内容、搜索字节码、提取元数据,并使用三种可选引擎反编译类。
主要功能
- 01浏览包、类和资源文件
- 02读取归档中的文本资源
- 03搜索类名和字节码字符串
- 04提取类和包的元数据
- 05使用 CFR、Vineflower 或 Procyon 反编译
适用场景
- 01检查没有源代码的依赖
- 02提取归档中嵌入的配置文件
- 03沿堆栈跟踪检查库代码
- 04分析混淆过的插件或模组
MCP 相关
提供九种 MCP 工具,用于归档发现、搜索、元数据检查和反编译。服务通过 stdio 与 MCP 客户端通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
dejared-mcp:Java 反编译 MCP 服务
dejared-mcp 是一款支持 Model Context Protocol 的 Java 反编译器和 JAR 分析工具。它能让 AI 编码 Agent(Claude Code、Codex、Cursor、VS Code)打开 .jar、.war、.ear 或 .aar 文件,列出其中的内容、搜索字节码,并使用 CFR、Vineflower 或 Procyon 将任意类反编译回 Java 源代码。
目录
概述
dejared-mcp 是一款基于 Java、以 npm 包形式分发的 MCP 服务。它提供九种工具,分为三个类别:探索、搜寻和深度分析。AI 助手可以使用这些工具浏览 JAR 文件结构、搜索字节码中的类和字符串字面量,并将 .class 文件反编译为可读的 Java 源代码。
当依赖项没有附带源码时,可以使用它来查看第三方库的实际行为、恢复嵌入在 JAR 中的 application.yml 或 MANIFEST.MF、沿着堆栈跟踪深入分析没有源码的库,或检查混淆过的插件或模组。它可以取代手动运行 jar tf、unzip、javap,或使用桌面反编译器。
任何基于 ZIP 的 Java 归档文件都适用:.jar、.war、.ear、.aar 以及 Spring Boot fat-jar。
npm 包充当轻量级封装程序,首次运行时会下载并缓存服务 JAR,随后通过 java -jar 使用 stdio 传输方式启动它。
前置条件
- Node.js 20 或更高版本
- Java 17 或更高版本(JRE 即可)
快速开始
推荐通过插件安装。只需两条命令,即可为 Agent 提供这两部分内容:九种 MCP 工具,以及在需要时提示它使用这些工具,而不是调用 jar tf、unzip 或 javap 的 jar-analysis 技能。
claude plugin marketplace add hqkh4nh/dejared-mcp
claude plugin install dejared@dejared-mcp-marketplace
Codex 也提供相同的套件。请参阅作为插件安装。 其他客户端请使用普通 MCP 配置。
安装为插件(推荐)
MCP 服务本身为 Agent 提供 9 个工具,但不会告诉 Agent 何时 使用这些工具,因此大多数 Agent 仍习惯使用 jar tf、unzip -p 和 javap -p,从不使用你安装的工具。
插件会将这两部分打包在一起:
| 部分 | 作用 |
|---|---|
| MCP 服务 | 功能 下列出的 9 个工具 |
jar-analysis 技能 | 将 JAR 问题交由这些工具处理,优先选择开销较小的工具,并知道应尝试使用哪个反编译器 |
目前有两个工具支持此插件。其他所有工具均为 仅支持 MCP。
Claude Code
claude plugin marketplace add hqkh4nh/dejared-mcp
claude plugin install dejared@dejared-mcp-marketplace
在会话中,也可以使用 /plugin marketplace add ... 和
/plugin install ... 执行相同操作。如果安装摘要显示 Run /reload-plugins to activate,请运行此命令。
Codex
codex plugin marketplace add hqkh4nh/dejared-mcp
codex plugin add dejared@dejared-mcp-marketplace
之后启动新会话,以加载捆绑的技能和服务。使用
codex mcp list 检查。dejared 应显示为 enabled。
安装为 MCP 服务
适用于没有插件系统的客户端。你可以使用这些工具,但不会获得引导 Agent 使用它们的技能。
大多数客户端都接受以下标准配置:
{
"mcpServers": {
"dejared": {
"command": "npx",
"args": ["-y", "dejared-mcp"]
}
}
}
从命令行安装
如果你的工具有 CLI,只需一行命令:
claude mcp add dejared -- npx -y dejared-mcp # Claude Code
codex mcp add dejared -- npx -y dejared-mcp # Codex
amp mcp add dejared -- npx -y dejared-mcp # Amp
gemini mcp add dejared npx -y dejared-mcp # Gemini CLI
配置文件位置
将标准配置放入相应工具的配置文件中:
| 工具 | 位置 |
|---|---|
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json(Windows) · ~/Library/Application Support/Claude/claude_desktop_config.json(macOS) |
| Claude Code | 项目根目录下的 .mcp.json |
| Cursor | .cursor/mcp.json(项目级) · ~/.cursor/mcp.json(全局) |
| Windsurf | 设置中的 MCP 服务面板,或设置文件中的 mcpServers |
| Cline | MCP 设置文件,可通过扩展的 MCP Servers 面板访问 |
| Antigravity Editor | ~/.gemini/antigravity/mcp_config.json |
| Kiro | .kiro/settings/mcp.json |
| Copilot CLI | ~/.copilot/mcp-config.json,或运行 /mcp add |
| Gemini CLI | ~/.gemini/settings.json(全局) · .gemini/settings.json(项目级) |
| Goose | 高级设置 → 扩展 → 添加自定义扩展,类型选择 STDIO |
| JetBrains IDEs | 设置 → 工具 → AI 助手 → Model Context Protocol(MCP) |
| Qodo Gen | 聊天面板 → 连接更多工具 → + 添加新的 MCP |
有几种配置需要额外设置。展开下方内容查看。
Codex:使用 TOML,而非 JSON
codex mcp add dejared -- npx -y dejared-mcp
codex mcp list
-- 很重要:其后的所有内容都是服务的启动命令。
也可以编辑 ~/.codex/config.toml(全局)或 .codex/config.toml(项目级):
[mcp_servers.dejared]
command = "npx"
args = ["-y", "dejared-mcp"]
# Only if Java is not on your PATH
[mcp_servers.dejared.env]
DEJARED_JAVA_PATH = "/path/to/java"
VS Code (GitHub Copilot):使用 servers,而非 mcpServers
创建或编辑 .vscode/mcp.json:
{
"servers": {
"dejared": {
"command": "npx",
"args": ["-y", "dejared-mcp"]
}
}
}
保存后,点击服务条目上方的 Start,然后在 Copilot Chat 中使用 Agent 模式。
opencode:命令为数组
编辑 ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dejared": {
"type": "local",
"command": ["npx", "-y", "dejared-mcp"],
"enabled": true
}
}
}
纯 Java(无需 Node.js)
如果你希望直接运行服务 JAR,而不使用 Node.js:
-
从 GitHub Releases 下载最新的 JAR。
-
运行:
java -jar dejared-mcp-<version>.jar -
将 MCP 客户端配置为直接使用 JAR,而不是
npx:{ "mcpServers": { "dejared": { "command": "java", "args": ["-jar", "/path/to/dejared-mcp-<version>.jar"] } } }
功能
内容发现
浏览和读取 JAR 内容。
| 工具 | 描述 |
|---|---|
dejared_list_packages | 列出所有包及其类数量 |
dejared_list_classes | 列出指定包中的类 |
dejared_list_resources | 列出非类资源文件 |
dejared_read_resource | 读取文本资源(YAML、XML、properties、JSON 等) |
搜索
在 JAR 文件中搜索。
| 工具 | 描述 |
|---|---|
dejared_search_class | 按名称搜索类 |
dejared_search_string | 在字节码中搜索字符串字面量(URL、SQL、错误消息) |
深度分析
检查元数据并反编译类。
| 工具 | 描述 |
|---|---|
dejared_get_metadata | 通过 ASM 提取类元数据(速度快,无需反编译) |
dejared_dump_package_metadata | 批量提取整个包的元数据 |
dejared_decompile_class | 将 .class 文件反编译为 Java 源代码 |
反编译引擎
dejared-mcp 支持三种反编译引擎。可以通过 dejared_decompile_class 工具按请求指定引擎。
| 引擎 | 描述 |
|---|---|
| CFR(默认) | 可靠的通用反编译器 |
| Vineflower | FernFlower 的现代分支,能够很好地处理较新的 Java 特性 |
| Procyon | 备选引擎,在某些边缘情况下处理得更好 |
自定义 Java 路径
如果 Java 不在系统 PATH 中,请在 MCP 配置中设置 DEJARED_JAVA_PATH 环境变量。此设置适用于所有基于 npx 的配置:
{
"mcpServers": {
"dejared": {
"command": "npx",
"args": ["-y", "dejared-mcp"],
"env": {
"DEJARED_JAVA_PATH": "/path/to/java"
}
}
}
}
服务配置
| 属性 | 默认值 | 描述 |
|---|---|---|
dejared.cache.max-size | 500 | 反编译 LRU 缓存中的最大条目数 |
dejared.security.max-resource-size | 5242880 | 资源文件的最大大小(字节) |
dejared.security.decompile-timeout-seconds | 30 | 每次反编译的超时时间 |
工作原理
npm 包是一个精简的 Node.js 封装。首次运行时,它会:
- 检查平台缓存目录中是否有与当前版本匹配的缓存 JAR。
- Linux:
$XDG_CACHE_HOME/dejared-mcp(默认值为~/.cache/dejared-mcp) - macOS:
~/Library/Caches/dejared-mcp - Windows:
%LOCALAPPDATA%\dejared-mcp
- Linux:
- 如果 JAR 未缓存,则从 GitHub Releases 下载。
- 启动
java -jar,并继承标准输入输出以传输 MCP 通信。
服务使用标准输入输出通过模型上下文协议进行通信。
常见问题与故障排除
问:已安装 Java,但服务找不到它。
请在 MCP 配置中设置 DEJARED_JAVA_PATH 环境变量。参见自定义 Java 路径。
问:服务启动时出现权限错误。
请确保缓存的 JAR 文件可读。缓存位置取决于你的平台。缓存目录路径请参见工作原理。
问:反编译超时或返回错误。
某些类难以反编译。可以在 dejared_decompile_class 工具中指定 vineflower 或 procyon,尝试使用其他引擎。默认超时时间为 30 秒,可以通过 dejared.security.decompile-timeout-seconds 调整。
问:需要哪个版本的 Java?
Java 17 或更高版本。JRE 已足够,无需完整的 JDK。
问:可以在没有 Node.js 的情况下运行服务吗?
可以。从 GitHub Releases 下载 JAR,然后直接使用 java -jar 运行。参见安装为 MCP 服务中的“纯 Java”部分。
参与贡献
欢迎贡献。请遵循以下指南:
- Fork 仓库,并从
master创建功能分支。 - 确保更改可以编译并通过现有测试。
- 编写清晰的提交消息,说明每项更改的目的。
- 针对
master提交 Pull Request,并描述更改内容及原因。
项目结构中列出的每个清单文件都包含一个 version 字段;如果其中任何字段与 package.json 不一致,CI 将导致构建失败。请一并更新它们。
项目结构
dejared-mcp/
├── bin/ # Node.js CLI entry point
├── lib/ # Node.js wrapper (JAR download and process management)
├── java-mcp/ # Java MCP server (Spring Boot, Gradle)
│ └── src/
├── skills/ # Agent skills, shared by every plugin manifest below
├── .mcp.json # MCP server definition, shared the same way
├── .claude-plugin/ # Claude Code plugin + marketplace manifests
├── .codex-plugin/ # Codex plugin manifest
├── .agents/plugins/ # Codex marketplace manifest
├── package.json # npm package manifest
└── server.json # MCP Registry manifest
从源代码构建
cd java-mcp
./gradlew build
报告问题
请在 GitHub Issues 中提交问题,并附上重现步骤、Java 版本和 Node.js 版本。
第三方许可证
本项目使用了以下开源库:
| 库 | 许可证 |
|---|---|
| Spring Boot | Apache 2.0 |
| Spring AI | Apache 2.0 |
| ASM | BSD 3-Clause |
| CFR | MIT |
| Vineflower | Apache 2.0 |
| Procyon | Apache 2.0 |
许可证
本项目采用 MIT License 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。