ghidriff-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GHIDRIFF_MCP_HOME | No | Root for run directories, Ghidra projects and diff output. | ~/ghidriff-mcp-work |
| GHIDRA_INSTALL_DIR | No | Path to the extracted Ghidra folder. | auto-discovery |
| GHIDRIFF_MCP_PYTHON | No | Interpreter that has ghidriff installed. | the server's own interpreter |
| GHIDRIFF_MCP_COMMAND | No | Explicit ghidriff command line, e.g. ghidriff --max-ram-percent 40. Takes precedence over GHIDRIFF_MCP_PYTHON. | |
| GHIDRIFF_MCP_TIMEOUT | No | Default per-run timeout in seconds. | 3600 |
| GHIDRIFF_MCP_MAX_JOBS | No | Maximum concurrent diffs (each one boots a JVM). | 2 |
| GHIDRIFF_MCP_LOG_LEVEL | No | ghidriff log level (DEBUG is very verbose). | INFO |
| GHIDRIFF_MCP_EXTRA_ARGS | No | Raw ghidriff arguments appended to every run. Operator-only: this is where --no-symbols or --jvm-args belong, not in tool calls. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ghidriff_environmentA | Check that Ghidra, Java and ghidriff are installed and reachable. Args: probe: also launch the ghidriff interpreter to confirm it can import ghidriff (adds up to a minute on a cold start). |
| ghidriff_start_diffA | Start a binary diff in the background and return a job id immediately. Raw engine pass-through arguments are deliberately not accepted here: the agent decides what to diff, the operator decides how the engine runs, through GHIDRIFF_MCP_EXTRA_ARGS. |
| ghidriff_run_diffA | Run a diff and wait for it to finish (blocking convenience wrapper). Prefer ghidriff_start_diff for large binaries: this call occupies the tool call for the whole analysis. |
| ghidriff_job_statusA | Report the state of one diff job, including a short log tail. |
| ghidriff_job_resultA | Return the structured result of a finished (or running) diff job. |
| ghidriff_job_logA | Read the ghidriff console log of a job, tailed or paged. |
| ghidriff_job_cancelA | Cancel a running diff job and kill its ghidriff process. |
| ghidriff_jobsB | List diff jobs known to this server, newest first (survives restarts). |
| ghidriff_list_runsB | List diff outputs on disk, either from the run history or a given directory. |
| ghidriff_read_reportC | Read a page of the generated Markdown diff report. |
| ghidriff_function_detailA | Explain one changed function: metadata, code, and the code diff if modified. |
| ghidriff_search_functionsC | Search the changed functions of a diff by name. |
| ghidriff_settingsA | Show the server configuration (workspace, interpreter, limits). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes: running diffs, managing jobs, and reading reports are separated well. However, ghidriff_start_diff vs ghidriff_run_diff and ghidriff_list_runs vs ghidriff_jobs could cause minor selection hesitation without careful reading.
All tool names share the ghidriff_ prefix and use consistent snake_case, which makes the set feel cohesive. The pattern is mostly verb_noun, but ghidriff_settings, ghidriff_environment, and ghidriff_jobs are noun-only names, so it is not perfectly uniform.
13 tools is well within the ideal range for this domain. The count covers environment checks, diff execution, job lifecycle management, and report exploration without feeling bloated.
The tool surface covers the full workflow: verifying prerequisites, configuring via settings, starting diffs asynchronously or synchronously, monitoring and canceling jobs, and inspecting generated reports and changed functions. There are no obvious dead ends or missing operations for the server's stated purpose.