by symgraph
An native MCP server extension for Ghidra
# Add to your Claude Code skills
git clone https://github.com/symgraph/GhidrAssistMCPGuides for using mcp servers skills like GhidrAssistMCP.
Last scanned: 5/11/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-11T07:43:56.304Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}See how GhidrAssistMCP compares with popular alternatives.
GhidrAssistMCP is an open-source mcp servers skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by symgraph. An native MCP server extension for Ghidra. It has 780 GitHub stars.
Yes. GhidrAssistMCP passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/symgraph/GhidrAssistMCP" and add it to your Claude Code skills directory (see the Installation section above).
GhidrAssistMCP is primarily written in Java. It is open-source under symgraph on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other MCP Servers skills you can browse and compare side by side. Open the MCP Servers category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh GhidrAssistMCP against similar tools.
No comments yet. Be the first to share your thoughts!
Top skills in this category by stars
30 days in the Featured rail · terms & refunds
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
Automated security scan — not a certification.
A 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.
Version 3.0.0 introduces the explicit tool catalog and application-owned runtime. Clients should refresh their tool definitions after upgrading.
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; use list_open_programs project paths to disambiguate duplicate filenamesShameless self-promotion: GhidrAssist supports GhidrAssistMCP right out of the box.

Download the latest release:
.zip file (e.g., ghidra_12.1_PUBLIC_20261009_GhidrAssistMCP-3.0.0.zip)Install the extension:
Start Ghidra:
Source builds require Java 25 or newer. The included Gradle wrapper pins the supported Gradle release; use it instead of a system Gradle installation.
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:
./gradlew 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 can also be started from Ghidra's analyzeHeadless launcher. This is useful when you want MCP access to a program loaded in headless Ghidra without opening the CodeBrowser UI.
First, build and install the extension so Ghidra can load the compiled classes and bundled dependencies:
cd /path/to/GhidrAssistMCP
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.1_PUBLIC
./gradlew installExtension
Set paths for your Ghidra install and extracted user extension. On Linux, Ghidra user extensions usually live under ~/.config/ghidra/<ghidra_profile>/Extensions:
export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.1_PUBLIC
export GHIDRA_USER_EXTENSIONS_DIR="$HOME/.config/ghidra/ghidra_12.1_PUBLIC/Extensions"
export GHIDRASSISTMCP_EXT="$GHIDRA_USER_EXTENSIONS_DIR/GhidrAssistMCP"
Import a binary and start the MCP server as a headless pre-script:
"$GHIDRA_INSTALL_DIR/support/analyzeHeadless" /tmp/ghidra-projects McpHeadless \
-import /path/to/binary \
-scriptPath "$GHIDRASSISTMCP_EXT/ghidra_scripts" \
-preScript GAMCPStartServerScript.java "host=127.0.0.1" "port=8080"
For a binary that is already imported into the project, use -process instead:
"$GHIDRA_INSTALL_DIR/support/analyzeHeadless" /tmp/ghidra-projects McpHeadless \
-process binary_name \
-scriptPath "$GHIDRASSISTMCP_EXT/ghidra_scripts" \
-preScript GAMCPStartServerScript.java "host=127.0.0.1" "port=8080"
To keep a headless MCP session open after analysis completes, run the server as a post-script with wait mode:
"$GHIDRA_INSTALL_DIR/support/analyzeHeadless" /tmp/ghidra-projects McpHeadless \
-process binary_name \
-scriptPath "$GHIDRASSISTMCP_EXT/ghidra_scripts" \
-postScript GAMCPStartServerScript.java "host=127.0.0.1" "port=8080" "wait=true"
MCP clients can connect to:
SSE: http://127.0.0.1:8080/sse
SSE messages: http://127.0.0.1:8080/message
Streamable HTTP: http://127.0.0.1:8080/mcp
The headless MCP server runs inside the analyzeHeadless JVM and uses the loaded currentProgram. The server holds a program consumer while it is running so MCP requests do not race against program database closure. Use wait=true when you want analyzeHeadless to stay open for interactive MCP clients. A harness can also pass completion_file=/workspace/control/session.complete; creating that file closes the MCP server cleanly and lets Ghidra save and exit normally.
Disposable static-analysis labs may pass tool_profile=agent_lab. This enables sandbox-local program export while arbitrary path import and Ghidra scripts remain disabled because they can expose process secrets or spawn processes. The harness owns artifact imports. Unknown profiles are rejected.
The public catalog contains 100 explicit tools, 93 enabled by default. The modernization review maps every previous tool to its current name and explains the architecture and remaining improvements. Fetch tools/list for authoritative parameter schemas; clients should reconnect after upgrading.
| Purpose | Representative tools |
|---|---|
| Project lifecycle | create_project, open_project, save_project, close_project |
| Programs and project files | get_program_info, list_open_programs, list_project_files, open_program, close_program |
| Code and functions | list_functions, search_functions, get_function_info, get_pseudocode, get_disassembly, get_pcode, get_control_flow_graph |
| Function identity | get_function_hash (SHA-256), get_function_byte_pattern (masked prefix), get_function_prototype (C declaration) |
| Binary data | list_imports, list_exports, list_strings, list_memory_blocks, list_entry_points, get_hexdump |
| References | get_xrefs_to, get_xrefs_from, get_callers, get_callees, get_call_graph |
| Comments | get_comment, get_function_comment, list_function_comments, set_comment, set_function_comment, remove_comment |
| Variables and types | list_function_variables, rename_local_variable, set_local_variable_type, set_function_prototype, list_data_types, get_data_type, set_data_type |
| Structures and classes | create_structure, set_structure_field, infer_structure_from_variable, get_structure_field_xrefs, list_classes, get_class_info |
| Analysis | list_analysis_options, set_analysis_options, analyze_program, get_analysis_status, cancel_analysis |
| Jobs | list_tasks, get_task_status, cancel_task |
Names express the operation. Public code readers do not require a format selector, and comment/type/script operations do not require an action selector. get_disassembly reads existing instructions; disassemble_bytes changes the listing. Read and write tools have their own MCP annotations.
import_file, export_program, and the five script tools are disab