Recaf MCP插件
基于Gradle的Recaf 4.x 启动本地MCP(模型上下文协议)服务器的插件。
服务器提供了一小部分工具来检查/修改当前打开的Recaf工作区(列出类、反编译、反汇编、组装+应用、映射)。
需求
- Recaf 4.x
- Java 22+(此项目使用设置为Java 22的Gradle工具链)
建筑
构建插件jar:
./gradlew build这会产生 build/libs/example-plugin-{VERSION}.jar.
安装到Recaf中
- 查找Recaf
plugins目录:
- 窗户: %APPDATA%\Recaf\plugins - Linux: $HOME/Recaf/plugins
- 从复制罐子
build/libs/放入该文件夹。 - 启动Recaf并检查MCP启动消息的日志。
运行此项目的Recaf
该项目包括 runRecaf 构建插件并启动Recaf的任务 build/libs 注册为插件目录。
./gradlew runRecaf插件信息
- 插件入口点类是
src/main/java/org/example/plugin/RecafMcpPlugin.java. - 服务条目由以下内容生成
build.gradle(pluginMainClass).
MCP传输
- 协议:基于HTTP的JSON-RPC 2.0
POST - 绑定:仅限环回(
127.0.0.1) - 端点:
http://127.0.0.1:33333/mcp - 认证:无(仅限本地)
Recaf GUI面板
该插件创建了一个 Recaf MCP 底部区域可停靠。
- 显示带有复制按钮的端点
- 显示总呼叫数和错误计数
- 显示最新的混淆、恶意软件和映射摘要
- 显示最近的工具调用及其持续时间
- 最近通话宽度可由用户调整大小
- 启动时,日志选项卡仍为默认选定选项卡
工具目录
所有类名都使用JVM内部格式(com/example/Foo).
工作空间和课堂反思
recaf_workspace_statusrecaf_workspace_list_classesrecaf_workspace_list_filesrecaf_class_get_outlinerecaf_class_inforecaf_file_read
代码查看和编辑
recaf_class_decompile(支持decompiler,可选单方法隔离methodName+methodDesc)recaf_class_disassemblerecaf_method_disassemblerecaf_method_bytecode(JASM文本)recaf_class_assemble_apply
映射
recaf_mapping_apply(您提供的显式重命名)recaf_mapping_generate(自动为可能混淆/随机的名称生成重命名)
映射工具返回重命名计数和更改列表(from -> to)因此MCP客户端可以准确地显示发生了什么变化。
搜索和图形分析
recaf_search_stringrecaf_search_numberrecaf_search_referencesrecaf_search_declarationsrecaf_method_callgraphrecaf_class_inheritance
评论
recaf_comment_getrecaf_comment_set
安全/混淆启发式
recaf_check_obfuscationrecaf_check_malware
recaf_check_malware 报告类别加上精确的检测位置(className, method,匹配类型,匹配的API/常量)。
UI导航
recaf_ui_open_classrecaf_ui_open_file
快速测试(卷曲)
初始化:
curl -s -X POST "http://127.0.0.1:33333/mcp" \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'列出工具:
curl -s -X POST "http://127.0.0.1:33333/mcp" \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'调用工具(例如:列出类):
curl -s -X POST "http://127.0.0.1:33333/mcp" \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"recaf_workspace_list_classes","arguments":{"prefix":"com/example/","limit":50}}}'调用工具(例如:反编译):
curl -s -X POST "http://127.0.0.1:33333/mcp" \
-H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"recaf_class_decompile","arguments":{"internalName":"com/example/Foo","timeout":5000}}}'展示
https://github.com/user-attachments/assets/e9de7c4d-b956-4424-bbff-19b1d0d69afe
https://github.com/user-attachments/assets/ce12f257-66ce-4e93-92de-3dace355d2ed
Recaf插件开发文档
Recaf开发人员文档:https://recaf.coley.software/dev/index.html
