Skip to main content
Glama
README.md
# IDA MCP Server

> [!NOTE]
> The idalib mode is under development, and it will not require installing the IDA plugin or running IDA (idalib is available from IDA Pro 9.0+).

## Overview

A Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.

Please note that mcp-server-ida is currently in early development. The functionality and available tools are subject to change and expansion as we continue to develop and improve the server.

## Installation

### Using uv (recommended)

When using [`uv`](https://docs.astral.sh/uv/) no specific installation is needed. We will
use [`uvx`](https://docs.astral.sh/uv/guides/tools/) to directly run *mcp-server-ida*.

### Using PIP

Alternatively you can install `mcp-server-ida` via pip:

```
pip install mcp-server-ida
```

After installation, you can run it as a script using:

```
python -m mcp_server_ida
```

### IDA-Side

Copy `repository/plugin/ida_mcp_server_plugin.py` and `repository/plugin/ida_mcp_server_plugin` directory into IDAs plugin directory 

Windows: `%APPDATA%\Hex-Rays\IDA Pro\plugins`

Linux/macOS: `$HOME/.idapro/plugins` eg: `~/.idapro/plugins`

[igors-tip-of-the-week-103-sharing-plugins-between-ida-installs](https://hex-rays.com/blog/igors-tip-of-the-week-103-sharing-plugins-between-ida-installs)

## Configuration

### Usage with Claude Desktop

Add this to your `claude_desktop_config.json`:

<details>
<summary>Using uvx</summary>

```json
"mcpServers": {
  "ida": {
    "command": "uvx",
    "args": [
        "mcp-server-ida"
    ]
  }
}
```
</details>

<details>
<summary>Using pip installation</summary>

```json
"mcpServers": {
  "ida": {
    "command": "python",
    "args": [
        "-m", 
        "mcp_server_ida"
    ]
  }
}
```
</details>

## Debugging

You can use the MCP inspector to debug the server. For uvx installations:

```
npx @modelcontextprotocol/inspector uvx mcp-server-ida
```

Or if you've installed the package in a specific directory or are developing on it:

```
cd path/to/mcp-server-ida/src
npx @modelcontextprotocol/inspector uv run mcp-server-ida
```

Running `tail -n 20 -f ~/Library/Logs/Claude/mcp*.log` will show the logs from the server and may
help you debug any issues.

## Development

If you are doing local development, there are two ways to test your changes:

1. Run the MCP inspector to test your changes. See [Debugging](#debugging) for run instructions.

2. Test using the Claude desktop app. Add the following to your `claude_desktop_config.json`:

### UVX
```json
{
"mcpServers": {
  "ida": {
    "command": "uv",
    "args": [ 
      "--directory",
      "/<path to mcp-server-ida>",
      "run",
      "mcp-server-ida"
    ]
  }
}
```

## Alternatives
[ida-pro-mcp](https://github.com/mrexodia/ida-pro-mcp)

[ida-mcp-server-plugin](https://github.com/taida957789/ida-mcp-server-plugin)

[mcp-server-idapro](https://github.com/fdrechsler/mcp-server-idapro)

[pcm](https://github.com/rand-tech/pcm)


## Screenshots

![Screenshot 1](Screenshots/iShot_2025-03-15_19.04.06.png)
![Screenshot 2](Screenshots/iShot_2025-03-15_18.54.53.png)
![Screenshot 3](Screenshots/iShot_2025-03-15_19.06.27.png)

TDQS

B3.3/5.0

Scored across 19 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific resources (assembly, pseudocode, comments, renaming) with clear boundaries, though the two script execution tools (ida_execute_script and ida_execute_script_from_file) could be confused as they differ only in input source but serve the same core function. Other tools are well-differentiated by action and target.

Naming Consistency5/5

All tools follow a consistent 'ida_verb_noun' pattern with snake_case throughout, using clear verbs like 'add', 'get', 'rename', and 'execute'. The naming is predictable and readable, making it easy to understand each tool's function at a glance.

Tool Count4/5

With 19 tools, the count is slightly high but reasonable for an IDA Pro server covering analysis tasks like comments, code retrieval, script execution, and renaming. It avoids bloat by focusing on core functionalities, though some tools could potentially be consolidated (e.g., the multiple rename variants).

Completeness5/5

The tool set provides comprehensive coverage for IDA Pro interaction, including CRUD-like operations for comments, retrieval of assembly and pseudocode by various identifiers, renaming of functions and variables (single and batch), and script execution. No obvious gaps exist for typical reverse engineering workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues