# How to Start the IDA MCP HTTP Service: A Complete Setup Guide

> Learn how to start the IDA MCP HTTP service with this complete setup guide. Access the service easily via GUI or command line for efficient debugging.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: how-to-guide
- Published: 2026-08-16

---

**The IDA MCP HTTP service is built into IDA Pro (versions 7.5–7.7+) and starts either from the GUI via File → Plugins → MCP Server or via command line with `ida64 -MCP -p 23816`.**

Starting the **IDA MCP HTTP service** enables external tools and AI agents to invoke IDA Pro's analysis functions through a simple HTTP/JSON-RPC interface. This service forms the backbone of automated reverse engineering workflows in the `zhaoxuya520/reverse-skill` repository, allowing programmatic access to decompilation, binary export, and search capabilities without manual GUI interaction.

## Prerequisites: IDA Pro Installation

The MCP server ships bundled with recent **IDA Pro releases**. No separate download is required.

- **Required version**: IDA Pro 7.5 or later
- **Installation**: Standard IDA Pro installation (Windows, Linux, or macOS)
- **Verification**: Check [`README.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/README.md) in the repository for high-level installation requirements

## Method 1: Start from the IDA Pro GUI

This is the most straightforward approach for interactive sessions.

1. **Launch IDA Pro** and open your target binary

2. **Verify the MCP plug-in is enabled** — Navigate to **File → Plugins → MCP Server**. If the menu entry appears, the plug-in is installed.

3. **Start the server** — Select **File → Plugins → MCP Server → Start**

4. **Confirm the listening address** — A console window displays the default endpoint: `http://127.0.0.1:23816`

5. **Stop the server** — Use **File → Plugins → MCP Server → Stop** or send a shutdown RPC request

## Method 2: Start from Command Line

For automated pipelines and headless operation, launch **IDA MCP HTTP service** directly from the terminal.

```bash

# Basic headless start with default port

ida64 -MCP /path/to/binary

# Specify custom port (useful when 23816 is occupied)

ida64 -MCP -p 25000 /path/to/binary

# Windows example with explicit path

"C:\Program Files\IDA Pro 7.7\ida64.exe" -MCP -p 23816 C:\samples\malware.exe

```

**Parameter reference:**

| Flag | Description |
|------|-------------|
| `-MCP` | Enable MCP HTTP server mode |
| `-p <port>` | Custom port (default: 23816) |
| `/path/to/binary` | Target file to analyze |

## Verify the Service Is Running

Test connectivity using standard HTTP tools:

```bash

# Check server status

curl http://127.0.0.1:23816/status

# Expected JSON response

# {"status": "ok", "version": "7.7"}

```

```powershell

# PowerShell verification

Invoke-RestMethod -Uri http://127.0.0.1:23816/status

```

```python

# Python verification script

import requests, sys

resp = requests.get("http://127.0.0.1:23816/status")
if resp.json().get("status") == "ok":
    print("IDA MCP HTTP service is ready")
    sys.exit(0)
else:
    print("Service not responding correctly")
    sys.exit(1)

```

## Invoke MCP Commands Programmatically

Once the **IDA MCP HTTP service** is active, issue JSON-RPC requests to exposed endpoints. The repository's routing system expects this server for all `idapro_*` tool invocations.

```python

# Decompile a function at address 0x401000

import requests, json

url = "http://127.0.0.1:23816/jsonrpc"
payload = {
    "jsonrpc": "2.0",
    "method": "decompile",
    "params": {"ea": "0x401000"},
    "id": 1
}

resp = requests.post(url, json=payload)
print(json.dumps(resp.json(), indent=2))

```

```bash

# Search for string references

curl -X POST http://127.0.0.1:23816/jsonrpc \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"search","params":{"text":"password"},"id":1}'

```

## Stop the Service

```bash

# Graceful shutdown via RPC

curl -X POST http://127.0.0.1:23816/shutdown

# Or terminate the IDA process

killall ida64

```

## Repository Integration Points

The `zhaoxuya520/reverse-skill` codebase references the **IDA MCP HTTP service** in several key locations:

- **[`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md)** and **[`skills/routing_zh.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing_zh.md)** — List *"IDA Pro (idapro_*) – MCP HTTP server + 72 tools"* as the primary reverse engineering entry point in the routing table
- **[`skills/ida-reverse/SKILL.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/SKILL.md)** — Documents the step-by-step MCP workflow including server startup procedures
- **[`skills/reverse-engineering/tools.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/reverse-engineering/tools.md)** — Enumerates all HTTP-exposed **MCP Commands**: `decompile`, `binexport`, `search`, and others
- **[`docs/ARCHITECTURE.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/docs/ARCHITECTURE.md)** — Explains how MCP services fit into the platform-agnostic routing architecture

## PowerShell Automation Example

For Windows-based automation pipelines:

```powershell

# Start IDA headless with MCP on custom port

$idaPath = "C:\Program Files\IDA Pro 7.7\ida64.exe"
$targetBinary = "C:\samples\analysis_target.exe"

Start-Process -FilePath $idaPath `
  -ArgumentList "-MCP","-p","23816",$targetBinary `
  -WindowStyle Hidden

# Wait for service initialization

Start-Sleep -Seconds 5

# Poll until ready

do {
    Start-Sleep -Milliseconds 500
    try {
        $status = Invoke-RestMethod -Uri http://127.0.0.1:23816/status -ErrorAction Stop
    } catch {
        $status = $null
    }
} while ($status.status -ne "ok")

Write-Host "IDA MCP HTTP service ready for automated analysis"

```

## Summary

- **IDA MCP HTTP service** is built into IDA Pro 7.5+ — no extra installation needed
- Start interactively via **File → Plugins → MCP Server → Start** or headless with `ida64 -MCP -p 23816`
- Default endpoint: `http://127.0.0.1:23816` — configurable with `-p` flag
- Verify with `curl http://127.0.0.1:23816/status`
- Repository routing in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) depends on this service for all `idapro_*` tool chains
- Stop gracefully via **File → Plugins → MCP Server → Stop** or `/shutdown` RPC endpoint

## Frequently Asked Questions

### What IDA Pro versions support the MCP HTTP service?

**IDA Pro 7.5 through 7.7 and later releases** include the MCP server as a bundled plug-in. Earlier versions require upgrading. Check the installation section in the repository [`README.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/README.md) for specific compatibility notes.

### Can I run multiple IDA MCP HTTP services simultaneously?

**Yes**, by assigning different ports to each instance. Use `ida64 -MCP -p 23817` for the second instance, `ida64 -MCP -p 23818` for the third, and so on. Ensure your automation scripts track which port corresponds to which analysis target.

### Why does my routing configuration fail to connect to IDA?

**The service is likely not running or bound to a non-default port.** Verify with `curl http://127.0.0.1:23816/status`. If IDA runs on a custom port, update the configuration in your skill invocation or set the `IDA_MCP_URL` environment variable to match your endpoint.

### Is the MCP service available without a commercial IDA Pro license?

**No.** The **IDA MCP HTTP service** requires a legitimate IDA Pro installation with appropriate licensing. The repository's skill routing expects this commercial dependency for full reverse-engineering capabilities.