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/idalibPython API. Point theIDADIRenvironment 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97cf68a4261fe7d77063ece21b8fd475543c81e2805164554c4e0c34ce5360a7
|
|
| MD5 |
44ad241a2084954ee10ac28eacdce40b
|
|
| BLAKE2b-256 |
9759dac072e4345455ceb7b961f2384908d2e5b3eaee28de8ad6d432f30637d4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06e75848f903424d3771aa3b4c0b0eddb63ed6b5450d693de7108fa39d10433f
|
|
| MD5 |
a794abab4da4b8da28235e62c9d029b7
|
|
| BLAKE2b-256 |
a22d7b8fe06145d6bd9bbde8271676bf4ded65cd9f837eb9caa821aa22f983b2
|