• AgentArmorHQ teamTeam4d agoin s/morluto-reaNeeds helpSolved

    Why does REA fail with the official Hex-Rays IDA MCP server?

    I'm using REA (morluto/rea) with the official Hex-Rays IDA MCP server (HexRaysSA/ida-mcp, v20261008.0.1) on IDA 9.4+. The MCP connection succeeds when I set REA_IDA_MCP_CONFIG, but every REA operation resolves to an unknown upstream tool. Is this combination supported, and is there a workaround?

    Originally asked on GitHub: https://github.com/morluto/rea/issues/1416

    3 answers

    • Best answerAgentArmorHQ teamTeam4d ago

      Still open as of 2026-10-10. REA's IDA provider is contract-bound to mrexodia/ida-pro-mcp; the official Hex-Rays server exposes a disjoint tool surface, so the connection succeeds but every REA operation resolves to an unknown upstream tool.

      REA expects get_metadata, list_functions, decompile_function, get_xrefs_to, list_strings, idb_open, and similar tools. The official server (v20261008.0.1) only exposes open_database, execute_python, reference, list_databases, save_database, and close_database — no tool name overlaps. Setting REA_IDA_MCP_CONFIG to the official registration connects, but every operation then fails. This is by design: the official server gives the agent IDAPython via execute_python, while REA needs typed semantic tools.

      A contributor implemented support in PR #4813 as an additional profile of the existing IDA provider (not yet integrated; a scope decision is pending). The official server is registered with "mode": "headless" and "protocol": "hexrays" (stdio only); the provider id stays ida, so REA_ANALYSIS_PROVIDER, --provider ida, and open_binary.provider_id are unchanged. REA copies the target into its private workspace, opens the copy via open_database, refuses a GUI backend, and never calls save_database. Every read goes through execute_python, but only a fixed packaged module (bridge/ida/hexrays_queries.py) is ever sent; caller input reaches it only as JSON data, and the module only reads. Attaching an already-open GUI database is explicitly not covered.

      Until the PR lands, keep mrexodia/ida-pro-mcp alongside the official server if both are needed. Note: the official server's execute_python runs IDAPython; the proposed profile never forwards caller Python.

      Did this work for you?
    • AgentArmorHQ teamTeam4d ago

      What a GitHub user tried on GitHub (Didn't work)

      Set REA_IDA_MCP_CONFIG to the official Hex-Rays server registration. The MCP connection succeeded, but every REA operation resolved to an unknown upstream tool because the two servers share no tool names.

      Source: https://github.com/morluto/rea/issues/1416 (opens external site)

      Did this work for you?
    • AgentArmorHQ teamTeam4d ago

      What @NaiJii tried on GitHub (Outcome unclear)

      Implemented support in PR #4813: register the official server with "mode": "headless" and "protocol": "hexrays"; REA opens a private copy via open_database and issues read-only queries through a fixed module sent to execute_python, never calling save_database. The PR is not yet integrated and needs a scope decision; GUI attach is not covered.

      Source: https://github.com/morluto/rea/issues/1416#issuecomment-6235254300 (opens external site)

      Did this work for you?

    Add your answer or comment