by symgraph
An MCP extension for Ghidra
# Add to your Claude Code skills
git clone https://github.com/symgraph/GhidrAssistMCPA powerful Ghidra extension that provides an MCP (Model Context Protocol) server, enabling AI assistants and other tools to interact with Ghidra's reverse engineering capabilities through a standardized API.
GhidrAssistMCP bridges the gap between AI-powered analysis tools and Ghidra's comprehensive reverse engineering platform. By implementing the Model Context Protocol, this extension allows external AI assistants, automated analysis tools, and custom scripts to seamlessly interact with Ghidra's analysis capabilities.
program_name parameterNo comments yet. Be the first to share your thoughts!
Shameless self-promotion: GhidrAssist supports GhidrAssistMCP right out of the box.

Download the latest release:
.zip file (e.g., GhidrAssistMCP-v1.0.0.zip)Install the extension:
Enable the plugin:
Clone the repository:
git clone <repository-url>
cd GhidrAssistMCP
Point Gradle at your Ghidra install:
GHIDRA_INSTALL_DIR (environment variable), or pass -PGHIDRA_INSTALL_DIR=<path> when you run Gradle.Build + install:
Ensure Ghidra isn't running and run:
gradle installExtension
This copies the built ZIP into your Ghidra install ([GHIDRA_INSTALL_DIR]/Extensions/Ghidra) and extracts it into your Ghidra user Extensions folder (replacing any existing extracted copy).
If you need to override that location, pass -PGHIDRA_USER_EXTENSIONS_DIR=<path>.
Restart / verify:
Open the Control Panel:
Configure Server Settings:
localhost8080The Configuration tab allows you to:
GhidrAssistMCP provides 38 tools organized into categories. Several tools use an action-based API pattern where a single tool provides multiple related operations.
| Tool | Description |
| ---- | ----------- |
| get_binary_info | Get basic program information (name, architecture, compiler, etc.) |
| list_binaries | List all open programs across all CodeBrowser windows |
| assemble_code | Assemble instruction text at an address and optionally patch it into program memory |
| patch_bytes | Patch raw bytes in program memory at a given address |
| export_program | Export the current program to disk (binary or original_file) (disabled by default) |
Security-sensitive tools:
import_fileandexport_programare disabled by default because they interact with the host filesystem. Enable them explicitly in the plugin configuration UI when needed.
| Tool | Description |
| ---- | ----------- |
| get_functions | List functions with optional pattern filtering and pagination |
| search_functions_by_name | Find functions by name pattern |
| get_function_statistics | Comprehensive statistics for all functions |
| analyze_function | Get detailed function information (signature, variables, etc.) |
| get_current_function | Get function at current cursor position |
| get_function_stack_layout | Get stack frame layout with variable offsets |
| get_basic_blocks | Get basic block information for a function |
| Tool | Description |
| ---- | ----------- |
| get_imports | List imported functions/symbols |
| get_exports | List exported functions/symbols |
| get_strings | List string references with optional filtering |
| search_strings | Search strings by pattern |
| get_segments | List memory segments |
| get_namespaces | List namespaces in the program |
| get_relocations | List relocation entries |
| get_entry_points | List all binary entry points |
| Tool | Description |
| ---- | ----------- |
| get_data_vars | List data definitions in the program |
| get_data_at | Get hexdump/data at a specific address |
| create_data_var | Define data variables at addresses |
| get_current_address | Get current cursor address |
These tools bundle related operations behind a discriminator parameter (e.g., action, target, target_type, or format).
get_code - Code Retrieval Tool| Parameter | Values | Description |
| --------- | ------ | ----------- |
| format | decompiler, disassembly, pcode | Output format |
| raw | boolean | Only affects format: "pcode" (raw pcode ops vs grouped by basic blocks) |
classes - Class Operations Tool| Action | Description |
| ------ | ----------- |
| list | List classes with optional pattern filtering and pagination |
| get_info | Get detailed class information (methods, fields, vtables, virtual functions) |
xrefs - Cross-Reference Tool| Parameter | Description |
| --------- | ----------- |
| address | Find all references to/from a specific address |
| function | Find all cross-references for a function |
| include_calls | Include callers/callees (replaces separate call graph tool) |
struct - Structure Operations Tool| Action | Description |
| ------ | ----------- |
| create | Create a new structure from C definition or empty |
| modify | Modify an existing structure with new C definition |
| merge | Merge (overlay) fields from a C definition onto an existing structure without deleting existing fields |
| set_field | Set/insert a single field at a specific offset without needing a full C struct (use field_name to name it) |
| name_gap | Convert undefined bytes at an offset/length into a named byte[]-like field (useful for “naming gaps”; uses field_name) |
| auto_create | Automatically create structure from variable usage patterns |
| rename_field | Rename a field within a structure |
| field_xrefs | Find cross-references to a specific struct field |
rename_symbol - Symbol Renaming Tool| Parameter | Values | Description |
| --------- | ------ | ----------- |
| target_type | function, data, variable | What kind of symbol to rename |
batch_rename - Batch Symbol Renaming ToolRename multiple symbols in one operation.
comments - Comment Management Tool| Action | Description |
| ------ | ----------- |
| get | Get comment at an address |
| set | Set a comment at an address or on a function |
| list | List all comments |
| remove | Remove a comment |
variables - Variable Management Tool| Action | Description |
| ------ | ----------- |
| list | List local variables for a function |
| rename | Rename a local variable or a global/data symbol using scope |
| set_type | Set data type for a local variable |
| set_prototype | Set function signature/prototype |
types - Type Management Tool| Action | Description |
| ------ | ----------- |
| list | List all available data types |
| get_info | Get detailed data type information and structure definitions |
| set | Set data type at a specific address |
| delete | Delete a data type by name (optionally scoped by category) |
bookmarks - Bookmark Management Tool| Action | Description |
| ------ | ----------- |
| list | List all bookmarks |
| set | Set a new bookmark |
| remove | Remove a bookmark |
| Tool | Description |
| ----- | ----------- |
| search_bytes | Search for byte patterns in memory |
Long-running operations (decompilation, structure