Skip to content

Conversation

@williballenthin
Copy link
Contributor

@williballenthin williballenthin commented Apr 9, 2025

This PR introduces a MCP server for IDA that uses idalib to access the IDAPython API. This means that you can access IDA's analysis on a headless system, without having to open the IDA Pro GUI and launching the plugin.

This MCP server supports both stdio and sse transports. With sse, you could run the MCP server in a container or sandbox for isolation, exposing only the TCP port. Note, however, that you must restrict access to the TCP port appropriately.

Here's Cursor accessing PMA 01-01.dll and collecting the MD5 computed by IDA:
image

Example use flow:

transport: stdio

  1. configure your agent framework to start the MCP server, like .cursor/mcp.json:
{
    "mcpServers": {
        "ida-pro-mcp": {
            "command": "/Users/user/code/ida-pro-mcp/.venv/bin/python",
            "args": ["-m", "ida_pro_mcp.idalib_mcp_server", "--transport=stdio", "/Users/user/code/ida-pro-mcp/pma.dll_"]
        }
    }
}

transport: sse

  1. start the server: python -m ida_pro_mcp.idalib_mcp_server --transport=sse /path/to/file/to/analyze.exe
  2. configure your agent framework, like .cursor/mcp.json:
{
    "mcpServers": {
        "ida-pro-mcp": {
            "url": "http://localhost:8000/sse"
        }
    }
}

transport tradeoffs

As you can see from above, you have to specify the input file path in the MCP/stdio server configuration, which can be tedious to update. The MCP/sse server can be restarted independently of the agent software and point to different input files (which might be confusing in its own right).

So, perhaps its worth adding a tool to let the agent open the input file (restricted to a given directory, of course), so you could say "open foo.exe and determine its MD5" or something.

closes #20

@williballenthin williballenthin marked this pull request as ready for review April 9, 2025 10:00
Copy link
Owner

@mrexodia mrexodia left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mostly looks good!

@mrexodia mrexodia merged commit 909f943 into mrexodia:main Apr 13, 2025
@mrexodia
Copy link
Owner

Thanks a lot for your contribution and productive discussions!

can1357 pushed a commit to can1357/ida-pro-mcp that referenced this pull request Dec 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

provide an idalib-based MCP server

2 participants