Skip to main content

A Model Context Protocol server for IDA Pro.

Project description

idamesh

A Model Context Protocol (MCP) server for IDA Pro. It exposes IDA's disassembler and the Hex-Rays decompiler to MCP clients (Claude and others) as tools and resources, with a supervisor that fronts multiple databases behind one endpoint so several agents can work in parallel.

What it does

  • Read — decompile (Hex-Rays), disassemble, cross-references, call graphs, type and struct inspection, memory reads, and string / byte / text search.
  • Query — structured filters over functions, instructions, xrefs, types, imports.
  • Analyze — survey / triage, crypto and dangerous-API detection, vulnerability heuristics, stack-string reconstruction, and dataflow / taint tracing.
  • Mutate — rename, comment, retype, define code and data, edit stack frames, patch bytes / assembly, bookmarks, and annotation export / import.
  • Parallelize — open each database over a private copy so multiple agents can work the same binary at once, and merge their edits back into one database.

Read-only IDB state is also projected as ida://… MCP resources.

Requirements

  • Python 3.9+
  • A licensed IDA Pro install providing the idapro / idalib Python API. Point the IDADIR environment variable at your IDA installation directory.

Install

pip install -e .          # runtime (zero third-party dependencies)
pip install -e .[dev]     # + pytest, to run the test suite

This provides the idamesh command with three subcommands: worker, supervisor, and install.

Usage

Headless worker — one database on stdio (the client launches it):

idamesh worker /path/to/target.exe

Supervisor — one HTTP endpoint fronting many databases:

idamesh supervisor                       # http://127.0.0.1:8745/mcp

Open and close databases behind it with the idb_open / idb_list / idb_close tools; route any tool to a session with an optional database key (omit it when a single database is open). Opening the same binary twice yields two independent sessions; idb_merge reconciles their edits.

GUI plugin — serve MCP over your live, open IDA database:

idamesh install     # deploy the plugin into IDA's user directory, then restart IDA

Run idamesh supervisor (or set IDAMESH_AUTOLAUNCH_SUPERVISOR=1 to have the plugin start one), then open a binary in IDA — the supervisor adopts the live session and routes to it.

Both the worker (--transport http) and the supervisor speak MCP Streamable HTTP at a single /mcp endpoint, loopback-bound with Origin validation.

Connect from Claude Code

claude mcp add --scope user --transport http idamesh http://127.0.0.1:8745/mcp

Or launch a single stdio worker directly:

claude mcp add --scope user -e IDADIR=/path/to/IDA-Pro \
  idamesh -- idamesh worker /path/to/target.exe

Tests

pip install -e .[dev]
python -m pytest -q

The live idalib end-to-end tests skip cleanly when IDA is unavailable (no IDADIR), so the suite is green without an IDA install.

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

idamesh-1.0.0.tar.gz (297.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

idamesh-1.0.0-py3-none-any.whl (475.5 kB view details)

Uploaded Python 3

File details

Details for the file idamesh-1.0.0.tar.gz.

File metadata

  • Download URL: idamesh-1.0.0.tar.gz
  • Upload date:
  • Size: 297.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for idamesh-1.0.0.tar.gz
Algorithm Hash digest
SHA256 97cf68a4261fe7d77063ece21b8fd475543c81e2805164554c4e0c34ce5360a7
MD5 44ad241a2084954ee10ac28eacdce40b
BLAKE2b-256 9759dac072e4345455ceb7b961f2384908d2e5b3eaee28de8ad6d432f30637d4

See more details on using hashes here.

File details

Details for the file idamesh-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: idamesh-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 475.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for idamesh-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06e75848f903424d3771aa3b4c0b0eddb63ed6b5450d693de7108fa39d10433f
MD5 a794abab4da4b8da28235e62c9d029b7
BLAKE2b-256 a22d7b8fe06145d6bd9bbde8271676bf4ded65cd9f837eb9caa821aa22f983b2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page