Repository navigation
Fork (balcsida/GhydraMCP) changes on top of upstream 3.0.0-rc.1, ported onto the Javalin server.
Added
- Multi-file support: every program-scoped endpoint accepts
?program=<name>(program name or project pathname) to target one of the programs open in the tool; an unknown name is404 PROGRAM_NOT_FOUND. NewGET /programs/open-programs,POST /programs/open,POST /programs/switch,POST /programs/close; bridge toolsprograms_list_open/programs_open/programs_switch/programs_closeand aprogramparameter onfunctions_list,functions_get,functions_decompile,scalars_searchand the tools below; CLIghydra programs list-open|open|switch|close. - Bookmarks:
GET /bookmarks,POST /bookmarks,DELETE /bookmarks/{address}?type=; bridgebookmarks_list/bookmarks_add/bookmarks_delete. - Batch operations:
POST /batch/rename-functions,/batch/set-comments,/batch/define-dataapply many edits in one transaction with a per-item status; bridgebatch_*tools. - Async decompilation:
POST /functions/decompile-asyncreturns a task id; pollGET /tasks/{id}and fetchGET /tasks/{id}/result; bridgefunctions_decompile_async,tasks_get_status,tasks_get_result. - Bridge data helpers:
memory_search_bytes(overGET /memory/search),data_clear(with an optional bytesize, viaDELETE /data/{address}?size=N),data_create_label,data_at_address,datatypes_apply. - Decompiler constant inlining: the decompiler is pinned to respect read-only memory (Ghidra's default), so constants from read-only blocks are shown inline.
Changed
- Loopback by default: the HTTP server binds to
127.0.0.1. Set-Dghidra.mcp.bind.host=0.0.0.0(orGHYDRA_BIND_HOST) for cross-host setups such as a bridge in WSL. - Build requires
GHIDRA_HOME: the bundled Ghidra JARs are removed, and the extension'sversion/ghidraVersionare read from$GHIDRA_HOME/Ghidra/application.properties, so every build matches the Ghidra it was compiled against. - Bridge discovery: instance discovery and health checks run in parallel; default-host scans are cached for 5 seconds.
POST /programs/closerefuses a program with unsaved changes unlessdiscardis true.
Fixed
- MCP prompts:
analyze_function,identify_vulnerabilitiesandreverse_engineer_binaryreturn text built from Pydantic context models; FastMCP could not render the previous dict results.