Conversation
Ship MCP slices 1.4-1.7 on a shared tool registry used by stdio and HTTP. Mutation tools route through the bridge job queue with recovery_suggestions and full provenance; decompile always includes nearby_xrefs/callers/namespace; script_run surfaces expect artifacts; batch runs command arrays with per-item status; initialize reports schema version and feature flags. HTTP binds ephemeral ports, defaults to loopback, optional bearer token.
Expose pcode and transaction_begin/commit/abort handlers so MCP and CLI can request high-level undo boundaries and inspect decompiler p-code ops.
Align test project-dir resolution with the CLI, then cover rename durability across a fresh MCP process and real HTTP tools/list+ping.
Provide an official Dockerfile, in-repo brew formula, triage-to-export skill workflow, and refresh remaining-todo docs after MCP base completion.
MCP reuses a per-session bridge client across tools/call requests.
Rename pcode limit to --max-ops so clap no longer clashes with QueryOptions. Implement headless dual-program function-name match for diff_programs with dual provenance. Add unit tests for script_run artifact elevation and summarize confidence tags, plus a gated live test for summarize, pcode, and transactions.
Document MCP and goal-item work under Unreleased, run binary-crate MCP unit tests in CI, and mark review/remaining-todo process files as complete for PR.
…-program HTTP MCP can stream progress frames then the same JSON-RPC envelope via ?stream=1. Headless dual-program transfer and explain complement name-set match. Structure recovery, data-flow, and similarity helpers ship on CLI and MCP with confidence tags. programs_foreach / firmware-summarize run sequentially on the single program lane. Docs and gated tests cover the new surfaces.
Save program2 after transfer_analysis before release, create real XFER_* labels and xfer_from comments (not no-op renames), and gate tests on two imported programs with fresh-process re-read of a transferred address. Multi-program summarize asserts ≥2 sequential results; docs use --include.
Align mutation tool schemas and payloads with the Java bridge (delete_function address, return_type, var_name/type_name, type field/typedef/enum args with aliases). Emit namespace from functionToJson; abort explicit transactions on program switch; stream SSE frames without Content-Length; drop CORS *; preserve firmware_summarize command identity. Add offline parity tests.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Native MCP server (stdio + streamable HTTP) with focused tools, stable envelopes, mutations, batch/script artifacts, and capability reporting. Also lands first versions of high-level triage (
summarize), headless dual-program match (diff_programs), p-code, explicit transactions, packaging (Docker + Homebrew formula), doctor recovery hints, and an agent skill workflow.What changed
ghidra mcp stdio/ghidra mcp http --listen …— shared tool registry, provenance + next_steps + recovery_suggestions + artifactsartifacts[]; batch per-command statussummarize/triage,pcode --max-ops,transaction begin|commit|abort,diff_programs(function name-set match + dual provenance)Dockerfile,Formula/ghidra-cli.rb,skills/triage-decomp-patch-export.md--envelopefor provenance on JSON; doctor recovery suggestionsOut of scope / honest gaps
diff_functionsonly)Test plan
cargo test --bin ghidra mcp::(no Ghidra) — envelopes, recovery, batch, HTTP equiv, artifacts, summarize confidencecargo test --test daemon_tests test_mcp_with Ghidra + non-dotGHIDRA_PROJECT_DIR— mutation durability, HTTP launch, stdio decompile context, summarize/pcode/transactionghidra pcode --help(no clap panic on--limit)docker build -t ghidra-cli:local .ghidra doctorwith safe projects dirNotes for reviewers
.-prefixed component; preferGHIDRA_PROJECT_DIR/--projects-dirwithout hidden segments.docs/MCP.md.