Skip to main content
Glama
idapin-mcp
by ASkyeye

idapin-mcp

Windows pipeline that compiles IDA’s idadbg PIN tool, wires it to IDA Pro, and exposes the same pintool to any MCP-capable AI (Grok, Claude Desktop, Cursor, VS Code, …) without opening the IDA GUI.

This repository includes full project source: the Windows pintool (pintool/), the MCP server (src/idapin_mcp/), and the install/build pipeline (scripts/).

PIN instruments a live process. idadbg speaks the IDA pintool protocol (v9). The MCP process is a TCP client for that protocol, so AI tools do not need the IDA GUI.

Intel PIN (pin.exe) is not vendored here (Intel license). scripts/setup.ps1 downloads the PIN 3.31 MSVC kit.

What you get

Path

Role

pintool/

idadbg.cpp / headers / .sln — compile to idadbg.dll + idadbg64.dll

src/idapin_mcp/

MCP stdio server (pin_launch, pin_read_regs, …)

scripts/setup.ps1

Download PIN → build pintools → patch IDA dbg_pin.cfg → write MCP configs

configs/

Example IDA + MCP snippets

AI client  --stdio MCP-->  python -m idapin_mcp  --TCP-->  pin.exe + idadbg*.dll  --instrument-->  target.exe
IDA Pro    --dbg_pin.cfg--> pin.exe + same DLLs   (optional GUI tracer)

Related MCP server: headless-re-mcp

Requirements (Windows)

  • Windows 10/11 x64

  • Python 3.10+

  • Visual Studio 2017 or newer with MSVC x86/x64 (2019, 2022, 2026 all work; the build script picks the newest toolset)

  • Windows 10 SDK (any 10.0.* installed with VS)

  • IDA Pro 7.x/8.x/9.x optional, only if you also want the GUI PIN tracer

  • Network once, to fetch Intel PIN 3.31 (pin-external-3.31-98869-…-msvc-windows.zip)

Admin is not required if you cannot write C:\pin — set -PinRoot "$env:LOCALAPPDATA\idapin-mcp\pin" (paths without spaces are safer for PIN).

One-command setup

In PowerShell from the repo root:

Set-ExecutionPolicy -Scope Process Bypass
.\scripts\setup.ps1

That will:

  1. Create %LOCALAPPDATA%\idapin-mcp\venv and pip install -e .

  2. Download PIN 3.31 into C:\pin (or the path you pass)

  3. Copy pintool/ into PIN\source\tools\idapin, retarget the VS project, build Win32 + x64 Release

  4. Patch dbg_pin.cfg in every IDA install it finds

  5. Register the MCP server in Grok, Claude Desktop, Cursor, and VS Code user configs

Then restart the AI client.

Custom PIN location:

.\scripts\setup.ps1 -PinRoot "$env:LOCALAPPDATA\idapin-mcp\pin"

Step-by-step instead of the umbrella script: docs/windows-build.md.

MCP tools (for any AI)

After launch the process is suspended at PROCESS_STARTED. Set breakpoints, then resume.

Tool

Purpose

pin_launch

Start PIN + pintool on a Windows EXE

pin_status / pin_events

Session and debug events

pin_add_bpt / pin_del_bpt

Software breakpoints

pin_read_regs / pin_read_mem / pin_write_mem

Registers / memory

pin_resume / pin_pause / pin_step

Control

pin_meminfo

Mapped sections

pin_set_trace / pin_trace_count

Instruction tracing

pin_stop

Kill the PIN process tree

Example prompt:

Use idapin MCP: pin_launch on C:\Windows\System32\cmd.exe with args /c echo hi, read registers, then pin_resume and pin_stop.

Manual MCP snippet: configs/mcp.example.json. Client-specific notes: docs/ai-clients.md.

IDA Pro (GUI tracer)

setup.ps1 writes:

PIN_PATH = "C:\\pin\\pin.exe";
PIN_TOOL_PATH = "C:\\pin\\source\\tools\\idapin";
PIN_TOOL_OPTIONS = 1

In IDA: Debugger → Select debugger → PIN tracer, then F9. Details: docs/ai-clients.md.

Headless idalib cannot start pin_user.dll; that is why this MCP talks to the pintool directly.

License

Split licensing. The MCP server is MIT; the pintool is not.

Tree

License / copyright

src/idapin_mcp/, scripts/, configs/, docs/, this README

MIT — LICENSE

pintool/

Hex-Rays copyright 2014–2019 — pintool/COPYRIGHT. Not MIT. Kept in source form because Intel forbids redistributing compiled PIN tools.

Intel PIN kit (pin.exe, headers, libs)

Intel. Not in this repo. Download separately and accept Intel’s license.

See NOTICE. Do not relicense pintool/ as MIT.

Do not commit pin.exe, the PIN zip, or compiled *.dll.

Publish to GitHub from a browser (no Git install): docs/publish-github.md.

Available Tools

15 tools
pin_add_bptB

Add a software breakpoint at ea (hex or int).

Inputs: ea (required).

pin_del_bptB

Remove a software breakpoint.

Inputs: ea (required).

pin_eventsB

Return (and optionally clear) queued debug events from the pintool.

Inputs: clear.

pin_launchA

Start Intel PIN + idadbg on a Windows EXE (no IDA GUI). Leaves the process suspended at PROCESS_STARTED so you can set breakpoints, then call pin_resume.

Inputs: target (required), args, port, trace_insns, +1 more.

pin_meminfoB

List mapped image/section ranges from the pintool.

Inputs: no named parameters.

pin_pauseB

Pause the instrumented process.

Inputs: no named parameters.

pin_read_memA

Read up to 1024 bytes of target memory. Returns hex.

Inputs: ea (required), size.

pin_read_regsC

Read general-purpose registers for a thread.

Inputs: tid.

pin_resumeA

Resume after an event. eid defaults to the last received event (PROCESS_STARTED=1, BREAKPOINT=5, STEP=6).

Inputs: eid.

pin_set_traceB

Set tracing flags (TF_TRACE_INSN=2, TF_REGISTERS=0x10, TF_TRACE_EVERYTHING=0x40). Combine with bitwise OR.

Inputs: flags (required).

pin_statusB

PIN session status: connected, last event, paths.

Inputs: no named parameters.

pin_stepB

Single-step the given OS thread (tid 0 = last event thread).

Inputs: tid.

pin_stopA

Send EXIT to the pintool and kill the PIN process tree.

Inputs: no named parameters.

pin_trace_countB

Number of recorded trace events currently buffered.

Inputs: no named parameters.

pin_write_memC

Write hex bytes to target memory.

Inputs: ea (required), hex (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 15 tools

    Disambiguation5/5

    Each tool targets a distinct debugger operation: session control (launch/status/resume/pause/step/stop), event retrieval, breakpoint add/del, register/memory read/write, and tracing. The only slight adjacency is pin_events vs pin_trace_count, but the descriptions clearly separate debug events from buffered trace events.

    Naming Consistency5/5

    All tools use a uniform pin_ prefix in snake_case with predictable verb_noun or noun forms (pin_add_bpt, pin_read_mem, pin_set_trace, pin_status). No mixed conventions or casing inconsistencies.

    Tool Count5/5

    15 tools is well-scoped for a debugger/instrumentation control surface, with each tool covering a necessary operation rather than redundant variants. The count supports full session lifecycle without bloat.

    Completeness4/5

    Core debugger coverage is strong: launch/attach, breakpoints add/remove, stepping, memory read/write, register read, memory map, tracing, and teardown. Notable gaps remain: no pin_write_regs (only read), no breakpoint enumeration/list, and no module/symbol lookup, which slightly limits register and breakpoint management workflows.

    Maintenance

    ActivityStale
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      B
      quality
      D
      maintenance
      A simple MCP server exposing persistent, scriptable Frida dynamic instrumentation to an AI agent for Windows reversing, malware/security analysis, and dynamic debugging.
      19
      -
    • A
      license
      Not graded
      quality
      F
      maintenance
      Enables AI-driven reverse engineering with x64dbg via 71+ MCP tools for breakpoints, memory, disassembly, tracing, debug control, PE analysis, and anti-anti-debugging, supporting HTTP, SSE, and stdio transports.
      2
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to autonomously inspect and control IDA Pro via MCP, providing tools for decompilation, disassembly, cross-references, renaming, typing, patching, searching, debugging, and arbitrary IDAPython execution.
      MIT