HuynhKhanh1402/dejared-mcp

GitHub: HuynhKhanh1402/dejared-mcp

一个基于 MCP 协议的服务器,让 AI 助手能够直接探索、分析和反编译 Java JAR 文件。

Stars: 3 | Forks: 0

[![npm version](https://img.shields.io/npm/v/dejared-mcp?style=flat-square)](https://www.npmjs.com/package/dejared-mcp) [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE) [![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white)]() [![Java](https://img.shields.io/badge/Java-17%2B-ED8B00?style=flat-square&logo=openjdk&logoColor=white)]() # 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"] } } } ```
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"] } } }
## 自定义 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) 授权。
标签:AI开发助手, CFR, GNU通用公共许可证, IDE插件, JAR, JAR分析, Java 17, Java反编译器, JS文件枚举, MCP, MITM代理, Model Context Protocol, Node.js, npm包, Procyon, SOC Prime, URL提取, Vineflower, 代码逆向, 包结构探索, 反编译, 域名枚举, 开发工具