内容
<div align="center">
# Recaf MCP
> *「"将 Recaf 转变成 LLM 可以调用的 API"」*
[](https://adoptium.net/)
[](https://www.python.org/)
[](https://www.coley.software/recaf4/)
[](https://modelcontextprotocol.io/)
[](https://qm.qq.com/q/KWcs2UBtYK)
<br>
[English Version](README.md)
<br>
**Recaf 4 MCP 桥接器 — 通过 MCP 协议操作 Recaf 工作空间,进行 JVM 字节码分析和编辑。**
<br>
一个 Java 插件在 Recaf 中运行,暴露一个本地 HTTP API;一个 Python MCP 服务器将该 API 转换为 MCP 工具,可供 LLM 客户端使用。
<br>
[工具](#工具) · [快速入门](#快速入门) · [字节码编辑](#字节码编辑) · [安装](#安装插件)
</div>
---
## 工具
### 工作空间
`获取工作空间信息` `打开工作空间` `关闭工作空间` `添加支持资源` `列出支持资源` `获取当前类` `获取选中文本`
### 类
`获取所有类` `获取类信息` `获取类源码` `获取类的字节码` `获取类的方法` `获取类的字段` `获取内部类` `获取类的注解` `获取原始类字节`
### 方法
`按名称获取方法` `获取方法字节码` `获取方法信息`
### 搜索
`按名称搜索类` `按名称搜索成员` `搜索字符串` `搜索数字` `搜索指令`
### 交叉引用
`获取类的交叉引用` `获取方法的交叉引用` `获取字段的交叉引用` `获取方法的调用者` `获取方法的被调用者` `获取方法的重写者`
### 重构
`重命名类` `重命名方法` `重命名字段` `重命名包` `重命名局部变量` `应用映射`
### 反编译器
`列出反编译器` `设置活动反编译器` `使用反编译器反编译类`
### 继承
`获取父类` `获取接口` `获取直接子类` `获取所有子类` `获取实现类`
### 资源和导出
`获取所有文件名` `获取文件内容` `获取清单` `获取资源中的字符串` `导出工作空间` `获取修改的类` `恢复类`
---
## 字节码编辑
完整的字节码读写:指令级编辑、JASM 文本汇编、访问标志编辑、方法/字段 CRUD、try-catch 块、类字节替换、工作空间导出。
### 指令
`列出方法指令` `获取方法字节码` `替换指令` `插入指令` `删除指令`
### 方法体
`汇编方法` `替换方法体`
### 访问标志
`编辑类访问标志` `编辑方法访问标志` `编辑字段访问标志`
### 方法/字段 CRUD
`添加方法` `删除方法` `添加字段` `删除字段`
### 其他
`设置 try-catch 块` `替换类字节` `保存工作空间`
---
## 需求
- Java 25
- Python 3.10+
- `recaf.jar`
## 快速入门
### 1. 提供 recaf.jar
构建过程按以下顺序查找 Recaf:
1. `RECAF_JAR` 环境变量
2. `libs/recaf.jar`
3. `../recaf/recaf.jar`
```powershell
$env:RECAF_JAR="D:\deobf\recaf\recaf.jar"
```
### 2. 构建插件
```powershell
.\gradlew.bat jar
```
输出:`build/libs/recaf-mcp-plugin-0.1.0.jar`
### 3. 安装插件
将 jar 复制到 Recaf 的插件缓存目录 `%APPDATA%/Recaf/plugins/` 并启动 Recaf。
加载成功后:
```
Recaf MCP 插件监听在 http://127.0.0.1:8750
```
### 4. 安装 Python 依赖
```powershell
pip install -r requirements.txt
```
### 5. 启动 MCP 服务器
```powershell
python recaf_mcp_server.py --http --port 8751
```
或使用启动脚本:
```powershell
.\start_recaf_mcp_http.ps1
```
---
## MCP 配置
```json
{
"mcpServers": {
"recaf-mcp": {
"url": "http://127.0.0.1:8751/mcp"
}
}
}
```
## 端口
| 组件 | 地址 |
|---|---|
| 插件 HTTP | `127.0.0.1:8750` |
| MCP HTTP | `127.0.0.1:8751/mcp` |
健康检查:
```powershell
Invoke-WebRequest http://127.0.0.1:8750/health
```
---
## 仓库结构
```text
.
├── src/ # Java 插件源码
├── mcp-server/ # Python MCP 服务器
├── libs/ # recaf.jar 放置此处
├── recaf_mcp_server.py # MCP 服务器入口点
├── requirements.txt # Python 依赖
├── .mcp.json # 项目 MCP 配置
└── README.md
```
---
## 安全
绑定到所有接口会暴露 MCP 服务器,无身份验证:
```powershell
python recaf_mcp_server.py --http --host 0.0.0.0
```
默认使用 localhost,或将其放在防火墙/VPN 后面。
---
<p align="center">
<em>LLM 客户端 -> MCP 服务器 -> Recaf 插件 -> Recaf 工作空间</em>
</p>