内容
<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>
[中文版](README_CN.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>