hqkh4nh/dejared-mcp

GitHub: hqkh4nh/dejared-mcp

一个基于 MCP 的 Java JAR 探索与分析服务器,为 AI 工具提供发现、搜索与反编译能力。

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)服务器。 专为 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"] } } } ```
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"] } } }
## 自定义 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) 授权。
标签:AI开发工具, CFR, GNU通用公共许可证, JAR文件探索, Java 17, Java JAR分析, Java反编译, Java开发, JS文件枚举, MCP工具, MCP服务器, MITM代理, Node.js, npm包, Procyon, Vineflower, 云安全监控, 代码浏览, 包结构浏览, 反编译工具, 反编译引擎, 域名枚举, 字节码反编译, 开发辅助工具, 模型上下文协议, 静态分析