HuynhKhanh1402/dejared-mcp
GitHub: HuynhKhanh1402/dejared-mcp
一个基于 MCP 协议的服务器,让 AI 助手能够直接探索、分析和反编译 Java JAR 文件。
Stars: 3 | Forks: 0
[](https://www.npmjs.com/package/dejared-mcp)
[](LICENSE)
[]()
[]()
# dejared-mcp
一个用于探索、分析和反编译 Java JAR 文件的模型上下文协议 (MCP) 服务器。
dejared-mcp 专为 AI 驱动的开发工具设计,可连接您的 IDE 或 CLI 助手,
用于检查包结构、搜索字节码,以及使用 CFR、Vineflower 或 Procyon 反编译类。
## 目录
- [概述](#overview)
- [前置条件](#prerequisites)
- [快速开始](#quick-start)
- [功能](#features)
- [反编译引擎](#decompiler-engines)
- [安装和配置](#installation-and-configuration)
- [自定义 Java 路径](#custom-java-path)
- [服务器配置](#server-configuration)
- [工作原理](#how-it-works)
- [常见问题与故障排除](#faq-and-troubleshooting)
- [贡献指南](#contributing)
- [第三方许可证](#third-party-licenses)
- [许可证](#license)
## 概述
dejared-mcp 是一个基于 Java 的 MCP 服务器,以 npm 包的形式分发。
它提供九种工具,分为三类:发现、搜索和深度分析。AI 助手使用这些工具来
导航 JAR 文件结构、在字节码中搜索类和字符串常量,以及将 `.class` 文件
反编译回可读的 Java 源代码。
npm 包作为一个轻量级包装器,首次运行时下载并缓存服务器 JAR,然后通过 stdio
传输使用 `java -jar` 启动它。
## 前置条件
- **Node.js** 18 或更高版本
- **Java** 17 或更高版本(JRE 即可)
## 快速开始
将以下内容添加到您的 MCP 客户端配置中:
```
{
"mcpServers": {
"dejared": {
"command": "npx",
"args": ["-y", "dejared-mcp"]
}
}
}
```
请参阅[安装和配置](#installation-and-configuration)
获取针对各工具的具体说明。
## 功能
### 发现
浏览和读取 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** | 备选引擎,在某些边缘情况下可能表现更好 |
## 安装和配置
以下标准配置适用于大多数 MCP 兼容工具。
展开相关部分查看针对各工具的具体说明。
```
{
"mcpServers": {
"dejared": {
"command": "npx",
"args": ["-y", "dejared-mcp"]
}
}
}
```
## 自定义 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 包装器。首次运行时它:
1. 检查平台缓存目录中是否有与当前版本匹配的已缓存 JAR。
- **Linux**:`$XDG_CACHE_HOME/dejared-mcp`(默认为 `~/.cache/dejared-mcp`)
- **macOS**:`~/Library/Caches/dejared-mcp`
- **Windows**:`%LOCALAPPDATA%\dejared-mcp`
2. 如果未缓存,则从 GitHub Releases 下载 JAR。
3. 使用继承 stdio 的方式启动 `java -jar` 进行 MCP 传输。
服务器通过 Model Context Protocol 使用 stdio 进行通信。
## 常见问题与故障排除
**Q:Java 已安装但服务器找不到它。**
请在 MCP 配置中设置 `DEJARED_JAVA_PATH` 环境变量。请参阅[自定义 Java 路径](#custom-java-path)。
**Q:服务器启动失败并出现权限错误。**
请确保缓存的 JAR 文件可读。缓存位置取决于您的平台。请参阅[工作原理](#how-it-works)获取缓存目录路径。
**Q:反编译超时或返回错误。**
某些类难以反编译。尝试通过在 `dejared_decompile_class` 工具中指定 `vineflower` 或 `procyon` 来使用不同的引擎。默认超时为 30 秒,可通过 `dejared.security.decompile-timeout-seconds` 进行调整。
**Q:我需要哪个 Java 版本?**
Java 17 或更高版本。JRE 即可;不需要完整的 JDK。
**Q:我可以在没有 Node.js 的情况下运行服务器吗?**
可以。从 GitHub Releases 下载 JAR 并直接使用 `java -jar` 运行。请参阅[安装和配置](#installation-and-configuration)中的"纯 Java"部分。
## 贡献指南
欢迎贡献代码。请遵循以下指南:
1. Fork 仓库并从 `master` 创建功能分支。
2. 确保您的更改能够编译并通过现有测试。
3. 编写清晰的提交消息,描述每个更改的用途。
4. 提交针对 `master` 的 pull request,并说明更改的内容和原因。
### 项目结构
```
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/ # Claude Code plugin skills
├── package.json # npm package manifest
└── server.json # MCP Registry manifest
```
### 从源码构建
```
cd java-mcp
./gradlew build
```
### 报告问题
在 [GitHub Issues](https://github.com/HuynhKhanh1402/dejared-mcp/issues) 上提交问题,
请附上复现步骤、您的 Java 版本和 Node.js 版本。
## 第三方许可证
本项目使用以下开源库:
| 库 | 许可证 |
|---------|---------|
| [Spring Boot](https://spring.io/projects/spring-boot) | Apache 2.0 |
| [Spring AI](https://spring.io/projects/spring-ai) | Apache 2.0 |
| [ASM](https://asm.ow2.io/) | BSD 3-Clause |
| [CFR](https://github.com/leibnitz27/cfr) | MIT |
| [Vineflower](https://github.com/Vineflower/vineflower) | Apache 2.0 |
| [Procyon](https://github.com/mstrobel/procyon) | Apache 2.0 |
## 许可证
本项目根据 [MIT 许可证](LICENSE) 授权。
Amp
通过 Amp VS Code 扩展设置界面添加,或更新您的 `settings.json` 文件: ``` "amp.mcpServers": { "dejared": { "command": "npx", "args": ["-y", "dejared-mcp"] } } ``` **Amp CLI:** ``` amp mcp add dejared -- npx -y dejared-mcp ```Antigravity Editor
编辑 `~/.gemini/antigravity/mcp_config.json`: ``` { "mcpServers": { "dejared": { "command": "npx", "args": ["-y", "dejared-mcp"] } } } ``` 或通过 MCP 商店安装(如果可用)。Claude Code
``` claude mcp add dejared -- npx -y dejared-mcp ``` 或使用上述标准配置将其添加到项目的 `.mcp.json` 中。 **插件(市场)** 安装 MCP 服务器和 `/jar-analysis` 技能: ``` claude plugin marketplace add HuynhKhanh1402/dejared-mcp claude plugin install dejared@dejared-mcp-marketplace ```Claude Desktop
编辑 Claude Desktop 配置文件: - **macOS**:`~/Library/Application Support/Claude/claude_desktop_config.json` - **Windows**:`%APPDATA%\Claude\claude_desktop_config.json` 添加上述标准配置并重启 Claude Desktop。Cline
将上述标准配置添加到您的 MCP 设置文件中。Codex
``` codex mcp add dejared npx "-y dejared-mcp" ``` 或编辑 `~/.codex/config.toml`: ``` [mcp_servers.dejared] command = "npx" args = ["-y", "dejared-mcp"] ```Copilot CLI
交互式: ``` /mcp add ``` 然后填写: - **服务器名称**:`dejared` - **服务器类型**:`STDIO` - **命令**:`npx -y dejared-mcp` 或编辑 `~/.copilot/mcp-config.json`: ``` { "mcpServers": { "dejared": { "type": "local", "command": "npx", "args": ["-y", "dejared-mcp"], "tools": ["*"] } } } ```Cursor
在项目根目录创建或编辑 `.cursor/mcp.json`(项目级)或 `~/.cursor/mcp.json`(全局),使用上述标准配置。Gemini CLI
``` gemini mcp add dejared npx -y dejared-mcp ``` 或编辑 `~/.gemini/settings.json`(全局)或 `.gemini/settings.json`(项目),使用上述标准配置。 在 Gemini CLI 会话中使用 `/mcp` 验证服务器是否已连接。Goose
进入**高级设置** > **扩展** > **添加自定义扩展**。按您喜欢的名称命名,使用类型 `STDIO`,并设置命令为 `npx -y dejared-mcp`。JetBrains IDEs
进入**设置** > **工具** > **AI 助手** > **模型上下文协议 (MCP)**。 点击**+ 添加**并配置: - **名称**:`dejared` - **传输**:`Stdio` - **命令**:`npx` - **参数**:`-y dejared-mcp`Kiro
使用上述标准配置创建或编辑 `.kiro/settings/mcp.json`。opencode
编辑 `~/.config/opencode/opencode.json`: ``` { "$schema": "https://opencode.ai/config.json", "mcp": { "dejared": { "type": "local", "command": ["npx", "-y", "dejared-mcp"], "enabled": true } } } ```Qodo Gen
在 VS Code 或 IntelliJ 中打开 [Qodo Gen](https://docs.qodo.ai/qodo-documentation/qodo-gen) 聊天面板 > 连接更多工具 > + 添加新的 MCP > 粘贴上述标准配置 > 保存。VS Code (GitHub Copilot)
在项目根目录创建或编辑 `.vscode/mcp.json`: ``` { "servers": { "dejared": { "command": "npx", "args": ["-y", "dejared-mcp"] } } } ``` 保存后,点击出现的 MCP 配置文件中的**启动**按钮,然后在 Copilot 聊天中使用代理模式。Windsurf
打开 Windsurf 设置,导航到 MCP 服务器,使用 `command` 类型添加新服务器,命令为 `npx -y dejared-mcp`。或在设置的 `mcpServers` 下添加标准配置。纯 Java(无需 Node.js)
如果您喜欢直接运行服务器 JAR 而不使用 Node.js: 1. 从 [GitHub Releases](https://github.com/HuynhKhanh1402/dejared-mcp/releases) 下载最新的 JAR。 2. 运行它: java -jar dejared-mcp-0.2.0.jar 3. 配置您的 MCP 客户端直接使用 JAR 而不是 `npx`: { "mcpServers": { "dejared": { "command": "java", "args": ["-jar", "/path/to/dejared-mcp-0.2.0.jar"] } } }标签:AI开发助手, CFR, GNU通用公共许可证, IDE插件, JAR, JAR分析, Java 17, Java反编译器, JS文件枚举, MCP, MITM代理, Model Context Protocol, Node.js, npm包, Procyon, SOC Prime, URL提取, Vineflower, 代码逆向, 包结构探索, 反编译, 域名枚举, 开发工具