hqkh4nh/dejared-mcp
GitHub: hqkh4nh/dejared-mcp
一个基于 MCP 的 Java JAR 探索与分析服务器,为 AI 工具提供发现、搜索与反编译能力。
Stars: 3 | Forks: 0
[](https://www.npmjs.com/package/dejared-mcp)
[](LICENSE)
[]()
[]()
# dejared-mcp
一个用于探索、分析和反编译 Java JAR 文件的模型上下文协议(MCP)服务器。
专为 AI 驱动的开发工具设计,dejared-mcp 连接你的 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、属性、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 传输。
服务器通过 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. 叉取仓库并从 `master` 创建功能分支。
2. 确保你的更改可以编译并通过现有测试。
3. 编写清晰的提交消息,描述每个更改的目的。
4. 提交拉取请求至 `master`,并附上更改说明及原因。
### 项目结构
```
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/hqkh4nh/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 Store 安装(如果可用)。Claude Code
``` claude mcp add dejared -- npx -y dejared-mcp ``` 或将其添加到项目的 `.mcp.json` 文件中使用上述标准配置。 **插件(Marketplace)** 会同时安装 MCP 服务器和 `/jar-analysis` 技能: ``` claude plugin marketplace add hqkh4nh/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 IDE
进入 **设置** > **工具** > **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 Chat 的 Agent 模式。Windsurf
打开 Windsurf 设置,导航至 MCP 服务器并添加新服务器,使用 `command` 类型和命令 `npx -y dejared-mcp`。或者在设置中的 `mcpServers` 下添加标准配置。纯 Java(无需 Node.js)
如果你希望直接运行服务器 JAR 而无需 Node.js: 1. 从 [GitHub Releases](https://github.com/hqkh4nh/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通用公共许可证, JAR文件探索, Java 17, Java JAR分析, Java反编译, Java开发, JS文件枚举, MCP工具, MCP服务器, MITM代理, Node.js, npm包, Procyon, Vineflower, 云安全监控, 代码浏览, 包结构浏览, 反编译工具, 反编译引擎, 域名枚举, 字节码反编译, 开发辅助工具, 模型上下文协议, 静态分析