CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

GhidraMCP Server

13bm/ghidramcp
112
Summary

Bridges Claude Desktop or any MCP client directly into Ghidra's reverse engineering API through a Go bridge and Java plugin. You get 70 tools covering decompilation, symbol renaming, xref analysis, structure creation, malware triage, and ROP gadget searches. The plugin auto-starts a local TCP server, handles multi-instance Ghidra setups via port routing, and supports async decompilation for large functions. Includes pagination for heavy queries, optional API key auth, and automated Claude Desktop config generation. Useful when you want natural language queries over binaries instead of clicking through Ghidra's GUI, or when automating security analysis workflows that need both AI reasoning and low-level program data.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

GhidraMCP

Build License

A Ghidra extension that exposes 70 reverse-engineering tools to AI assistants through the Model Context Protocol (MCP). Open a binary in Ghidra, enable the plugin, and let Claude (or any MCP client) decompile functions, rename symbols, annotate code, search for vulnerabilities, and more.

Architecture

 AI Client (Claude Desktop / CLI)
        |  stdio + MCP JSON-RPC
        v
   Go MCP Bridge  (mcp_bridge)
        |  TCP, length-prefixed JSON-RPC
        v
   Ghidra Plugin  (MCPServerPlugin)
        |
        v
   Ghidra Program API

The Ghidra plugin (Java) starts a TCP server inside Ghidra and auto-launches the Go bridge binary. The bridge speaks MCP over stdio to the AI client and forwards calls to the Java plugin over a local TCP socket with 4-byte length-prefixed JSON-RPC framing. Optional API-key authentication protects the TCP channel.

Features

  • 70 MCP tools spanning query, mutation, analysis, malware triage, IoT/embedded security, structure management, async decompilation, and multi-instance support
  • Easy setup -- plugin auto-starts the bridge; use MCP > Settings > Write to Claude Config to configure your MCP client
  • Cross-platform -- prebuilt bridge binaries for Linux x86_64, Windows x86_64, macOS x86_64 and macOS ARM64
  • Configurable -- port, localhost-only binding, API-key auth, auto-start, bridge enable/disable via GhidraMCP.properties
  • Multi-instance -- work with multiple Ghidra windows simultaneously using target_port to route tool calls
  • Async decompilation -- decompile large functions without blocking; poll for results later
  • Connection retry -- the bridge reconnects automatically if Ghidra restarts or the connection drops
  • Pagination -- large result sets (functions, strings, imports, ...) support offset/limit for safe incremental retrieval
  • CI/CD -- automated builds, Go + Java tests, Ghidra integration tests, and auto-release when a new Ghidra version drops

Quick Start

Prerequisites

  • Ghidra 12.0.3+
  • Java 21+
  • An MCP-compatible AI client (Claude Desktop, Claude Code, etc.)

Install

  1. Download the latest release ZIP from Releases
  2. In Ghidra: File > Install Extensions > "+" > select the ZIP
  3. Restart Ghidra

Enable

  1. Open a project and a program (binary)
  2. File > Configure > GhidraMCP -- check MCPServerPlugin
  3. The plugin auto-starts the TCP server (default localhost:8765) and launches the bridge

To configure Claude Desktop, open MCP > Settings and click Write to Claude Config. For other MCP clients, click Copy to Clipboard and add this to your client config:

{
  "mcpServers": {
    "ghidra": {
      "command": "/path/to/mcp_bridge",
      "args": ["--host", "localhost", "--port", "8765"]
    }
  }
}

If you have an API key set, include it in the env block (the plugin does this automatically):

{
  "mcpServers": {
    "ghidra": {
      "command": "/path/to/mcp_bridge",
      "args": ["--host", "localhost", "--port", "8765"],
      "env": {
        "GHIDRA_API_KEY": "your-key-here"
      }
    }
  }
}

You can also grab the snippet from Ghidra: MCP > Copy MCP Config (copies it to your clipboard).

Tools

Full reference with parameters, types, and examples: TOOLS.md

The tables below give a quick overview. See TOOLS.md for detailed parameter docs.

Query (1-21)

ToolDescription
list_functionsList all functions with entry points, sizes, return types
list_classesList all classes / namespaces
list_importsList imported symbols and external dependencies
list_exportsList exported symbols
list_namespacesList all namespaces
list_data_itemsList defined data (globals, constants, arrays, structs)
list_stringsList strings with optional substring filter
search_functions_by_nameSearch functions by name substring
get_function_by_addressDetailed info for a function at an address
get_current_addressAddress currently selected in Ghidra
get_current_functionFunction at the current cursor position
decompile_functionDecompile by name to C pseudocode
decompile_function_by_addressDecompile by address to C pseudocode
disassemble_functionRaw disassembly listing for a function
get_xrefs_toCross-references TO an address
get_xrefs_fromCross-references FROM an address
get_function_xrefsAll xrefs (callers + callees) for a function
get_program_infoProgram metadata (arch, compiler, format, etc.)
get_memory_mapMemory layout with segment permissions
get_variablesParameters and locals for a function

Mutation (22-38)

ToolDescription
rename_functionRename a function by name
rename_function_by_addressRename a function by address
rename_dataRename a data label
rename_variableRename a local variable
set_decompiler_commentSet a decompiler-view comment
set_disassembly_commentSet a disassembly-view comment
set_function_prototypeSet full function prototype
set_local_variable_typeChange a variable's data type
set_bookmarkAdd a bookmark
remove_bookmarkRemove a bookmark
set_equateSet a named constant on a scalar operand
create_structureCreate a structure data type
create_enumCreate an enum data type
apply_data_typeApply a data type at an address
set_namespaceSet namespace or class for a function
set_calling_conventionSet calling convention for a function
set_image_baseSet the image base address
set_memory_permissionsModify memory block permissions

Advanced Analysis (39-45)

ToolDescription
patch_bytesPatch raw bytes at an address
get_basic_blocksGet basic blocks for a function
extract_api_call_sequencesExtract API call sequences for security analysis
identify_user_input_sourcesFind user-input entry points
generate_call_graphHierarchical call graph
identify_crypto_patternsDetect crypto implementations
find_obfuscated_stringsLocate obfuscated strings

Malware Analysis (46-53)

ToolDescription
search_bytesSearch for byte patterns
emulate_functionEmulate a function
extract_iocsExtract indicators of compromise
find_dynamic_api_resolutionDetect dynamic API resolution
detect_anti_analysisDetect anti-analysis techniques
add_external_functionAdd an external function reference
get_pe_infoPE header details
get_elf_infoELF header details

IoT / Embedded Security (54-59)

ToolDescription
create_memory_blockCreate a memory block
detect_security_mitigationsDetect binary security mitigations
find_format_string_vulnsFind format-string vulnerabilities
find_rop_gadgetsFind ROP gadgets
detect_control_flow_flatteningDetect control-flow flattening
mark_code_coverageMark code coverage regions

Utility (60-62)

ToolDescription
get_bookmarksList bookmarks (optionally by address)
list_equatesList all equates
pingHealth-check the connection

Multi-Instance (63)

ToolDescription
list_ghidra_instancesScan ports 8765-8774 for running Ghidra instances

All tools accept an optional target_port parameter to route calls to a specific Ghidra instance. This lets you work with multiple binaries open in separate Ghidra windows simultaneously.

Structure Management (64-68)

ToolDescription
get_structureGet full details of a structure (fields, offsets, types)
list_structuresList all defined structures with pagination
edit_structureAdd, insert, delete, replace, or clear fields in a structure
rename_structureRename an existing structure
delete_structureDelete a structure data type

Async Decompilation (69-70)

ToolDescription
decompile_function_asyncStart async decompilation of a large function (returns task ID)
get_decompile_resultPoll for an async decompilation result by task ID

Async decompilation is useful for large functions that may take 30+ seconds to decompile. The client can start the decompilation, continue other work, and poll for the result later.

Configuration

The plugin stores settings in GhidraMCP.properties inside Ghidra's user settings directory:

PropertyDefaultDescription
port8765TCP port for the Java server
localhost_onlytrueBind to localhost only
api_key(empty)Shared secret for bridge authentication
auto_starttrueStart the server when the plugin loads
bridge_enabledtrueAuto-launch the Go bridge binary

Settings Dialog

Open MCP > Settings in the Ghidra menu to configure all properties through a GUI. The dialog includes:

  • Editable fields for port, localhost binding, API key, auto-start, and bridge enabled
  • Generate button to create a cryptographically random 32-character API key
  • Write to Claude Config button to merge GhidraMCP into Claude Desktop's claude_desktop_config.json
  • Copy to Clipboard button to copy the MCP config JSON snippet for manual setup
  • Security warning if you enable remote access without an API key
  • Auto-restart prompt if the server is running when you save

Changes are saved to disk when you click OK. You can also edit the properties file directly at the path shown in the dialog.

If auto_start is false, start the server manually from MCP > Toggle Server in the Ghidra menu.

Note: The bridge_enabled setting is for advanced use cases — developers debugging the bridge binary or users with a custom MCP client that talks TCP directly to the Java server. Most users should leave it enabled.

Security

By default the TCP server binds to localhost only and has no API key, which is fine for local single-user use. For stricter setups:

API-Key Authentication

  1. Open MCP > Settings and click Generate to create a random key (or type your own)
  2. Click OK to save — the bridge picks up the key automatically on next start
  3. On connect, the bridge sends an authenticate request with the key before any other calls
  4. The server rejects all non-auth requests until authentication succeeds
  5. After 3 failed attempts the server terminates the connection

The API key is passed to the bridge via the GHIDRA_API_KEY environment variable (not as a CLI flag) to prevent leaking it in the process argument list. When running the bridge manually, set the environment variable:

# Linux/macOS
export GHIDRA_API_KEY="your-key-here"
./mcp_bridge --host localhost --port 8765

# Windows (PowerShell)
$env:GHIDRA_API_KEY = "your-key-here"
.\mcp_bridge.exe --host localhost --port 8765

When an API key is set, the Write to Claude Config and Copy to Clipboard buttons in the Settings dialog include the key in the env block automatically.

Localhost Binding

With localhost_only=true (default), the server only accepts connections from 127.0.0.1. Set to false if you need remote access (e.g., Ghidra on a headless server), but always use an API key when exposing the port beyond localhost.

Remote / Headless Setup

GhidraMCP can serve AI clients running on a different machine. This is useful when Ghidra runs on a headless analysis server while the AI client runs elsewhere.

  1. Open MCP > Settings
  2. Uncheck Localhost Only to accept remote connections
  3. Click Generate to create an API key (always use one for remote access)
  4. Click OK and restart the server

On the remote machine, configure the MCP client to point at the Ghidra host:

{
  "mcpServers": {
    "ghidra": {
      "command": "/path/to/mcp_bridge",
      "args": ["--host", "ghidra-server.local", "--port", "8765"],
      "env": {
        "GHIDRA_API_KEY": "your-key-here"
      }
    }
  }
}

Warning: Always use an API key when exposing the server beyond localhost. Without authentication, anyone who can reach the port has full access to the Ghidra API.

Building from Source

git clone https://github.com/13bm/GhidraMCP.git
cd GhidraMCP

Build the Go bridge

cd mcp-bridge
go build -o mcp_bridge .
cd ..

Build the Ghidra extension

export GHIDRA_INSTALL_DIR=/path/to/ghidra
gradle buildExtension

The extension ZIP will be in dist/.

Run tests

# Go tests
cd mcp-bridge && go test ./... -v && cd ..

# Java unit + integration tests (requires Xvfb on headless Linux)
xvfb-run gradle test -PGHIDRA_INSTALL_DIR=$GHIDRA_INSTALL_DIR

CI/CD

The project uses GitHub Actions for automated builds and releases:

  • build.yml -- Triggered on push/PR to master and on tags. Runs Go tests, cross-compiles the bridge for 4 platforms, runs Java unit + Ghidra integration tests under Xvfb, builds the extension ZIP, and creates GitHub Releases on v* tags.
  • check-ghidra-release.yml -- Runs daily. Detects new Ghidra releases, opens a version-bump PR, auto-approves via GitHub App, and auto-merges if all tests pass.

Contributing

Contributions welcome! Please open issues or submit pull requests.

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/my-feature
  3. Commit your changes
  4. Push and open a Pull Request

License

Apache License 2.0

Acknowledgments

  • NSA / Ghidra
  • Model Context Protocol
  • mcp-go -- Go MCP SDK

GhidraMCP is not affiliated with or endorsed by the NSA or the Ghidra project.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
Categories
Security & PentestingReverse Engineering
UpdatedDec 15, 2025
View on GitHub

Related Security & Pentesting MCP Servers

View all →
Exploit Intelligence Platform — CVE, Vulnerability and Exploit Database

com.exploit-intel/eip-mcp

Real-time CVE, exploit, and vulnerability intelligence for AI assistants (350K+ CVEs, 115K+ PoCs)
Semgrep

semgrep/mcp

A MCP server for using Semgrep to scan code for security vulnerabilities.
666
Pentest

dmontgomery40/pentest-mcp

NOT for educational purposes: An MCP server for professional penetration testers including STDIO/HTTP/SSE support, nmap, go/dirbuster, nikto, JtR, hashcat, wordlist building, and more.
137
Notebooklm Mcp Secure

pantheon-security/notebooklm-mcp-secure

Security-hardened NotebookLM MCP with post-quantum encryption
68
Pentest Mcp Server

cyanheads/pentest-mcp-server

Offline methodology engine for authorized penetration testing, CTF, and security research.
1
AI Firewall MCP

io.github.akhilucky/ai-firewall-mcp

Multi-agent LLM security layer detecting prompt injection and jailbreaks.