# ida-pro-mcp

> MCP Server

This repository provides an IDA Pro MCP server, enabling vibe reversing with functionalities like metadata retrieval, function manipulation, decompilation, disassembly, and comment setting within the IDA Pro environment.

## Overview

- **Category:** Developer Tools
- **Language:** Python
- **Stars:** 11661
- **Forks:** 21
- **Owner:** mrexodia
- **GitHub:** https://github.com/mrexodia/ida-pro-mcp
- **Created:** 2025-03-25T22:23:41+00:00
- **Updated:** 2025-03-28T23:56:30+00:00
- **Source:** https://model-context-protocol.com/servers/ida-pro-mcp-vibe-reversing-server

## Setup

## Setup

**IDA Pro Installation**

1.  Copy `mcp-plugin.py` in your plugins folder (`%appdata%\Hex-Rays\IDA Pro\plugins` on Windows).
2.  Open an IDB and click `Edit -> Plugins -> MCP` to start the server.

**MCP Server Installation (Cline/Claude)**

1.  Install [uv](https://github.com/astral-sh/uv) globally:
    *   Windows: `pip install uv`
    *   Linux/Mac: `curl -LsSf https://astral.sh/uv/install.sh | sh`
2.  Clone this repository, for this example `C:\MCP\ida-pro-mcp`.
3.  Navigate to the Cline _MCP Servers_ configuration (see screenshot).
4.  Click on the _Installed_ tab.
5.  Click on _Configure MCP Servers_, which will open `cline_mcp_settings.json`.
6.  Add the `ida-pro-mcp` server:

```json
{
  "mcpServers": {
    "github.com/mrexodia/ida-pro-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "c:\\MCP\\ida-pro-mcp",
        "run",
        "server.py"
      ],
      "timeout": 600
    }
  }
}
```

## Tools

## Available Tools

1.  `get_metadata()` (Get metadata about the current IDB).
2.  `get_function_by_name(name)` (Get a function by its name).
3.  `get_function_by_address(address)` (Get a function by its address).
4.  `get_current_address()` (Get the address currently selected by the user).
5.  `get_current_function()` (Get the function currently selected by the user).
6.  `convert_number(text, size)` (Convert a number (decimal, hexadecimal) to different representations).
7.  `list_functions()` (List all functions in the database).
8.  `decompile_function(address)` (Decompile a function at the given address).
9.  `disassemble_function(address)` (Get assembly code (address: instruction; comment) for a function).
10. `get_xrefs_to(address)` (Get all cross references to the given address).
11. `get_entry_points()` (Get all entry points in the database).
12. `set_decompiler_comment(address, comment)` (Set a comment for a given address in the function pseudocode).
13. `set_disassembly_comment(address, comment)` (Set a comment for a given address in the function disassembly).
14. `rename_local_variable(function_address, old_name, new_name)` (Rename a local variable in a function).
15. `rename_function(function_address, new_name)` (Rename a function).
16. `set_function_prototype(function_address, prototype)` (Set a function's prototype).
17. `set_local_variable_type(function_address, variable_name, new_type)` (Set a local variable's type).
