Skip to main content
Glama
SuZiXunYue

IDA Script MCP

by SuZiXunYue

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_ida_instancesA

List all running IDA instances with MCP plugin enabled.

Returns: str: JSON-formatted list of IDA instances with their ports and database info.

Example response: { "count": 2, "instances": { "12345_crackme.exe": {"port": 13338, "database": "crackme.exe"}, "67890_malware.dll": {"port": 13339, "database": "malware.dll"} } }

execute_idapythonA

Execute Python code or script file in IDA Pro context.

This tool sends Python code to the IDA Pro plugin for execution. The code runs in IDA's main thread with full access to all IDA API modules.

For long-running scripts, the tool polls for completion up to timeout seconds. If the timeout is exceeded, a task_id is returned so you can check status later using the check_task_status tool. Long scripts should poll the injected mcp_cancelled() helper so they can be stopped cooperatively via the cancel_ida_task tool.

Avoid calling ida_kernwin.ask_* and other interactive dialogs in scripts: they block IDA's main thread until answered and freeze the whole task queue.

Args: params (ExecuteScriptInput): Validated input parameters containing: - code (Optional[str]): Python code string to execute - script_path (Optional[str]): Path to Python script file - capture_output (bool): Whether to capture stdout/stderr - instance_id (Optional[str]): Target IDA instance ID (e.g., "crackme.exe" or full ID) - port (Optional[int]): Target IDA instance port (e.g., 13338) - timeout (int): Maximum wait time in seconds (default: 600)

Returns: str: JSON-formatted string containing: - result: The value of the last expression (or a local result variable), as a string or null - stdout: Captured standard output - stderr: Captured standard output (including errors) - instance: The IDA instance that executed the code - task_id: Present if script is still running or timed out

Examples: # Execute on default instance execute_idapython(code="print(idaapi.get_root_filename())")

# Execute on specific instance by database name
execute_idapython(code="len(list(idautils.Functions()))", instance_id="crackme.exe")

# Execute on specific instance by port
execute_idapython(code="idc.get_func_name(0x401000)", port=13339)
check_ida_connectionB

Check if IDA Pro instances are running and accessible.

Returns: str: JSON-formatted string with connection status and all instances.

get_ida_database_infoB

Get information about an IDA database.

Args: instance_id: Target IDA instance ID (optional, uses default if not specified).

Returns: str: JSON-formatted string with database information.

check_task_statusA

Check the status of a long-running script execution task.

Use this tool when execute_idapython returns a task_id with status 'running' or 'pending', indicating the script is still executing in IDA Pro and the timeout was exceeded.

Args: task_id: The task ID returned by execute_idapython instance_id: Target IDA instance ID (optional, uses default if not specified) port: Target IDA instance port (optional, uses default if not specified)

Returns: str: JSON-formatted task status with result if completed.

cancel_ida_taskA

Request cancellation of a script execution task.

Cancellation is cooperative:

  • Pending tasks (not yet started in IDA) are cancelled immediately.

  • Running tasks set a flag that is visible to the script through the injected mcp_cancelled() helper; a script in a tight loop that never polls it cannot be interrupted, so long scripts should check it.

Args: task_id: The task ID returned by execute_idapython instance_id: Target IDA instance ID (optional, uses default if not specified) port: Target IDA instance port (optional, uses default if not specified)

Returns: str: JSON-formatted cancellation result.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Most tools target distinct operations: list instances, execute scripts, get database info, check task status, and cancel tasks. However, list_ida_instances and check_ida_connection both concern instance availability, which could cause slight confusion in some contexts. The descriptions help distinguish them, so the overlap is minor.

Naming Consistency5/5

All tool names use consistent snake_case with a verb-first pattern (list_, execute_, check_, get_, cancel_). The convention is predictable throughout, making the tool set easy to navigate.

Tool Count5/5

Six tools is a well-scoped set for remote IDA Pro control, covering instance listing, script execution, connection checks, database info, task status, and cancellation. Each tool earns its place without redundancy or bloat.

Completeness4/5

The surface covers the core lifecycle: discover instances, execute scripts, check connectivity, inspect database info, and manage long-running tasks via status and cancellation. A minor gap is the absence of a dedicated tool to list all active tasks, but task IDs are returned by execute_idapython and can be tracked individually.

Maintenance

ActivityMaintained
ResponsivenessNo issues