Ghidra BizHawk MCP
Unified Ghidra + BizHawk MCP server for static analysis, P-code emulation, and retro ROM triage.
Connector by getanirao · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/getanirao-ghidra-bizhawk-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 26, 2026.
- Tools
- 10 read · 17 write · 2 delete · 17 not yet classified
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Tools by what they do 46
Read from the source code; the running server may list different tools.
Read 10 · Look things up without changing anything.
bizhawk_connectbizhawk_infobizhawk_input_statebizhawk_memory_domainsbizhawk_readghidra_cross_referencesghidra_diffghidra_listingghidra_searchghidra_sessions
Write 17 · Create, change, send or run things.
bizhawk_buttonsbizhawk_save_statebizhawk_tap_buttonsbizhawk_writeghidra_apply_signaturesghidra_call_graphghidra_commentghidra_create_structghidra_data_typesghidra_emulate_breakpointsghidra_emulate_taintghidra_rename
Show 5 more tools
ghidra_stash_auto_restoreghidra_stash_auto_saveghidra_stash_listghidra_stash_restoreghidra_stash_save
Delete 2 · Delete, drop, revoke or wipe things.
bizhawk_resetghidra_session_close
Not yet classified 17 · We could not tell from the name and description.
bizhawk_framebizhawk_launchbizhawk_load_statebizhawk_pausebizhawk_screenshotbizhawk_unpauseghidra_analyzeghidra_decompileghidra_decompile_entrypointsghidra_decompile_paginatedghidra_disassembleghidra_emulate
Show 5 more tools
ghidra_export_signaturesghidra_fingerprintghidra_reportghidra_retypeghidra_triage
Secrets and settings it asks for
Other settings (environment variables or headers).
BIZHAWK_EXE_PATHGHIDRA_INSTALL_DIRMOCK_MODE
Network hosts it talks to 1
github.com· found in code
Files it touches
/tmp/shot.png%LOCALAPPDATA%\BizHawk\EmuHawk.exe%USERPROFILE%\Downloads\BizHawk-2.11.1-win-x64\EmuHawk.exe- Your home directory (~)
- Any path the agent passes to its tools
Tools (46)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
bizhawk_buttonsSet joypad button state for a player. Accepts an object like {A: true, B: true, Up: true, Start: true, Select: true}. State persists until changed or cleared. Use bizhawk_tap_buttons for a single atomic press/hold/release sequence.
bizhawk_connectCheck connectivity to BizHawk by pinging the bridge.lua script running inside EmuHawk. Use first before any other bizhawk.* tool to verify the emulator is responsive.
bizhawk_frameAdvance the emulator by N frames. Use to step through execution frame by frame. If you need to apply input and release it atomically, prefer bizhawk_tap_buttons.
bizhawk_infoGet ROM name, ROM hash, current framecount, available memory domains, and capabilities from the connected BizHawk instance.
bizhawk_input_stateRead the current joypad state for a player. Returns the active button table as reported by BizHawk, which is useful for verifying that input was applied correctly.
bizhawk_launchLaunch the BizHawk emulator process and establish the Lua bridge connection. Optionally specify a ROM path to load. Call this first before any other bizhawk.* tool if the emulator is not already running.
bizhawk_load_stateLoad emulator state from a previously saved savestate file. Restores all CPU registers, memory, and hardware state exactly. Use with bizhawk.save_state for reproducible testing.
bizhawk_memory_domainsList available memory domains for the currently loaded emulation core (e.g. WRAM, RAM, EWRAM, VRAM, System Bus). Use before bizhawk.read to determine valid domain names.
bizhawk_pausePause BizHawk emulation. Use before reading memory or inspecting state to prevent the emulated system from changing values between operations.
bizhawk_readRead bytes from BizHawk emulated memory at a given address. Returns an array of byte values. Use bizhawk.memory_domains first to discover valid domain names for the loaded game.
bizhawk_resetReset the loaded emulation core (reboot the emulated console). All emulated memory and CPU state is lost. Use to restart a game or boot a different ROM path.
bizhawk_save_stateSave the current emulator state to a file. The savestate captures all CPU registers, memory, and hardware state for later reload. Use with bizhawk.load_state for checkpoint-based testing workflows.
bizhawk_screenshotSave a PNG screenshot of the current emulator display to a file path. Useful for capturing in-game state, error screens, or UI elements during automated testing.
bizhawk_tap_buttonsAtomically press a set of buttons for a fixed number of frames, then release them. Use for timed inputs such as a one-frame tap or a short hold.
bizhawk_unpauseUnpause BizHawk emulation after a previous pause call. The emulated system resumes normal execution.
Show 31 more tools
bizhawk_writeWrite bytes to BizHawk emulated memory at a given address. Use to patch game state, inject values, or modify emulated hardware registers in real time.
ghidra_analyzeImport and analyze a binary into a named Ghidra session. Creates or replaces a session. Returns session_id, platform info, and function count. Call this first before any other Ghidra analysis tool.
ghidra_apply_signaturesScan the current binary, match every function by structural fingerprint against a previously exported signature map, and rename matches automatically. Use after loading a new binary version to restore meaningful names.
ghidra_call_graphGet the call graph for a function — shows which functions it calls (callees) and which functions call it (callers). Use after ghidra.decompile to understand function relationships.
ghidra_commentAttach a comment to a code unit at a given address. Supports comment types: plate, pre, post, eol, repeatable. Use to document reverse-engineering findings inline.
ghidra_create_structCreate a custom structured data type from a JSON member layout. Each member specifies offset (optional), field name, and type string. Use to model protocol headers, packet formats, and data structures.
ghidra_cross_referencesGet cross-references to and from a given address. Shows what references the address and what the address references. Useful for understanding how data or code is used across the binary.
ghidra_data_typesList all data types defined in the loaded program, including structures, enums, and typedefs. Useful for understanding the program's type landscape before creating new types.
ghidra_decompileDecompile a function by name or hex address. Returns decompiled C code. Use after session.analyze has loaded a binary.
ghidra_decompile_entrypointsComposite tool that bulk-decompiles all entry points in one call — program entry, exports, main, _start, etc. Use early in analysis to get an overview of the binary's surface area.
ghidra_decompile_paginatedDecompile a function with line range, token budget, and optional summarization to prevent context-window exhaustion on large functions. Use for functions over 50 lines.
ghidra_diffCompare two loaded sessions by function name and body size. Returns functions unique to each side and functions that changed between versions. Use for patch diffing and version comparison.
ghidra_disassembleDisassemble N raw instructions at an address. Returns mnemonic, operands, hex bytes, and length for each instruction. Use for precise lower-level inspection when decompiled C is insufficient.
ghidra_emulateHeadlessly execute a slice of instructions using Ghidra's P-code emulator. Seed initial register values and track value propagation across execution steps. No debugger, GDB stub, or network needed. Works on any Ghidra-supported architecture (ARM, x86, MIPS, etc.)
ghidra_emulate_breakpointsExecute instructions until a break condition is met or the instruction count expires. Supports equality (R0==0), inequality (R1>0xFF), not-equal (R2!=R3), and PC address (PC==0x1234). Stops before or after the matching instruction. Ideal for finding copy-loop bounds, null-pointer paths, or switch-table targets.
ghidra_emulate_taintExecute an instruction slice with automatic taint tracking. Specify a taint register; the tool reports every step where its value is modified or propagates to other registers. Use to trace data flows through cryptographic routines or input processing.
ghidra_export_signaturesExport a complete {structural_hash -> function_name} signature map for every function in the current binary. Save the output JSON to reuse across binary versions. Call before closing a session to preserve naming for future diffing.
ghidra_fingerprintGenerate a behavior-based structural hash for a function that survives compiler shuffling and optimization changes across binary versions. Use with ghidra.apply_signatures for cross-version function matching.
ghidra_listingReturn a raw hex + ASCII dump for a byte range, equivalent to Ghidra's Listing panel. Complements ghidra.disassemble for inspecting data regions, strings, and padding.
ghidra_renameRename a function or label at a given address. Changes are stored in the Ghidra project database. Use to replace auto-generated names like FUN_* with meaningful identifiers.
ghidra_reportProduce a Markdown summary of the active workspace — functions, entry points, custom symbols, recovered structures, renamed functions, and comment count. Replaces a GUI CodeBrowser window. Call at the end of a session to get a human-readable overview.
ghidra_retypeChange a local variable or function parameter's type annotation in the decompiled view. Use to replace generic types like undefined4* with meaningful types like MyStruct* for cleaner decompilation.
ghidra_searchSearch the entire loaded binary for a hex byte pattern. Returns matching addresses with context bytes and any string labels at the hit. Use to locate known constants, magic bytes, or patch locations.
ghidra_session_closeClose and remove a Ghidra session workspace, freeing project resources. Cannot be undone. Use ghidra.sessions first to find active session IDs.
ghidra_sessionsList all active Ghidra session workspaces with their session IDs, binary paths, and load timestamps. Useful before calling ghidra.session_close or ghidra.diff.
ghidra_stash_auto_restoreZero-input auto-restore: hashes the loaded binary, looks up a previously stashed map by content hash, and renames matching functions automatically. Pair with ghidra.stash_auto_save for fully automatic cross-version name recovery.
ghidra_stash_auto_saveZero-input auto-stash: hashes the loaded binary's first 4 KB and saves a signature map under that hash. No group ID or user input needed. Just analyze and call.
ghidra_stash_listList all stashed signature groups currently in the local server cache (~/.ghidra_bizhawk_mcp/signatures/). Use before ghidra.stash_restore to see available lineage_group_ids.
ghidra_stash_restoreLoad a previously stashed signature map by lineage_group_id and auto-rename every matching function in the current session. Use with ghidra.stash_save for persistent cross-version function name recovery.
ghidra_stash_saveFingerprint all functions and stash the signature map server-side under a lineage_group_id label (e.g. 'my_firmware_v1'). No JSON file management needed — stored in ~/.ghidra_bizhawk_mcp/signatures/.
ghidra_triageExamines raw file magic header signatures to detect retro console architectures (NES, SNES, GBA, NDS, Switch, PSX, Genesis, SMS, Dreamcast), headlessly maps correct Ghidra language loaders, hooks multi-session project bindings, and applies automated signature caching overlays. Single-call entry point for ROM analysis.
Compare and alternatives
Featured in
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 47
- Last commit
- Oct 16, 2026 (12 days ago)
- Last release
- Oct 16, 2026 (12 days ago)
- Last package publish
- Oct 16, 2026 (13 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.getanirao/ghidra-bizhawk-mcp- Version
- 1.1.0
- Auth
- No auth
- Packages
- pypi ghidra-bizhawk-mcp
- License
- Apache-2.0
- Repository
- github.com/getanirao/ghidra-bizhawk-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Ghidra BizHawk MCP. Agent Mart. https://agentmart.dev/connectors/getanirao-ghidra-bizhawk-mcp (last updated 2026-10-24)