Skip to main content
Glama

setup_context

Export binary analysis context from Ghidra headless decompilation for reverse-engineering functions, pseudocode, structs, and enums.

Instructions

Run Ghidra headless decompilation to export binary context.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ghidra_pathNo/Users/tomi/Downloads/ghidra_11.3.1_PUBLIC
binary_pathNo/Users/tomi/Documents/ghidra_mcp/crackme

Implementation Reference

  • main.py:44-66 (handler)
    The core handler function for the 'setup_context' MCP tool. Decorated with @mcp.tool() for automatic registration and schema inference from type hints and docstring. Validates inputs, executes Ghidra headless analysis using helper functions, loads the resulting context, and updates global state.
    @mcp.tool() async def setup_context(ghidra_path: str = "/Users/tomi/Downloads/ghidra_11.3.1_PUBLIC", binary_path: str = "/Users/tomi/Documents/ghidra_mcp/crackme") -> str: """Run Ghidra headless decompilation to export binary context.""" global ctx_ready, last_binary if not os.path.isdir(ghidra_path): return f"❌ Ghidra path '{ghidra_path}' is not valid." if not os.path.isfile(binary_path): return f"❌ Binary file '{binary_path}' does not exist." result = run_headless(ghidra_path, binary_path) if result.returncode != 0: return f"❌ Ghidra failed:\n{result.stderr}" if not is_context_ready(): return f"❌ Export script ran but no context was saved." load_context() ctx_ready = True last_binary = os.path.basename(binary_path) return f"✅ Context loaded for '{last_binary}'."
  • main.py:18-35 (helper)
    Key helper function called by setup_context to execute the Ghidra analyzeHeadless command with the export script, environment variable for JSON output path, and proper arguments for importing and analyzing the binary.
    def run_headless(ghidra_path: str, binary_path: str): analyze_headless = os.path.join(ghidra_path, "support", "analyzeHeadless") project_dir = os.getcwd() project_name = "ghidra_ctx" cmd = [ analyze_headless, project_dir, project_name, "-import", binary_path, "-overwrite", "-scriptPath", os.path.dirname(EXPORT_SCRIPT_PATH), "-postScript", os.path.basename(EXPORT_SCRIPT_PATH), "-deleteProject" ] env = os.environ.copy() env["GHIDRA_CONTEXT_JSON"] = GHIDRA_CONTEXT_JSON return subprocess.run(cmd, capture_output=True, text=True, env=env)
  • main.py:36-40 (helper)
    Helper function to load the exported Ghidra context JSON into the global ctx dictionary, used after successful headless run.
    def load_context(): global ctx with open(GHIDRA_CONTEXT_JSON) as f: ctx = json.load(f)
  • main.py:41-43 (helper)
    Helper function to check if the context JSON file exists, used to verify successful export.
    def is_context_ready(): return os.path.exists(GHIDRA_CONTEXT_JSON)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Bamimore-Tomi/ghidra_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server