# How MCP Service Ports Are Assigned and Managed for IDA Pro, Anything-Analyzer, and BurpSuite

> Learn how MCP service ports are assigned and managed for IDA Pro, Anything-Analyzer, and BurpSuite. Discover how to override default hard-coded ports using environment variables.

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

---

**Each Model Context Protocol (MCP) server in the reverse-skill repository binds to a well-defined TCP port that is hard-coded by default but can be overridden via environment-specific variables.**

The **reverse-skill** repository implements an MCP-based architecture where AI agents invoke specialized reverse engineering and security tools through dedicated HTTP servers. Port assignment follows a centralized routing table pattern with environment variable overrides, ensuring predictable defaults while allowing flexible multi-instance deployments.

## Default Port Assignments and Documentation

Each tool's default port is documented in dedicated reference files and the central routing table.

| Tool | Default MCP Port | Primary Documentation |
|------|------------------|----------------------|
| **Anything-Analyzer** | **23816** | [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) – "Port 23816 MCP server (browser + HTTP capture + AI analysis)" |
| **IDA Pro** | **8765** | [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md) – "HTTP mode running" |
| **BurpSuite** | **9876** | [`skills/pentest-tools/references/burpsuite-mcp-guide.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/pentest-tools/references/burpsuite-mcp-guide.md) – `BURP_MCP_PORT=9876` |

The [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) file serves as the **single source of truth** for all port assignments in the repository.

## Environment Variable Overrides

Every MCP server supports runtime port configuration through dedicated environment variables. This eliminates the need to modify source files when running multiple instances.

- **Anything-Analyzer**: `ANYTHING_ANALYZER_MCP_PORT` (defaults to 23816)
- **IDA Pro**: `IDA_MCP_PORT` (defaults to 8765)
- **BurpSuite**: `BURP_MCP_HOST` and `BURP_MCP_PORT` (default to 127.0.0.1:9876)

The bootstrap scripts in `skills/scripts/` read these variables at startup and pass them to the underlying MCP server executables.

## Port Management Implementation

### Bootstrap and Conflict Detection

The [`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh) script (and platform-specific equivalents) handles MCP server lifecycle management:

1. Parses the environment variable for the target tool
2. Validates port availability using `lsof` or `netstat`
3. Aborts with a clear error message if the port is occupied
4. Launches the MCP server with the verified configuration

This prevents silent failures from port collisions and ensures AI agents can reach the expected endpoint.

### Runtime Service Discovery

Skills query `skills/scripts/` [`.omc/tool-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.omc/tool-manifest.json) at runtime to verify MCP service reachability before invoking tools. This registry contains the registered server names (`idapro`, `anything-analyzer`, `burpsuite`) and their configured endpoints.

## Code Examples for MCP Port Configuration

### Starting Anything-Analyzer with Custom Port

```python
import os
import subprocess

# Override default 23816 via environment

port = os.getenv("ANYTHING_ANALYZER_MCP_PORT", "23816")
subprocess.run(
    ["anything-analyzer", "--mcp-port", port],
    check=True
)

```

### Querying IDA Pro MCP Server

```python
import json
import urllib.request

host = os.getenv("IDA_MCP_HOST", "127.0.0.1")
port = os.getenv("IDA_MCP_PORT", "8765")
url = f"http://{host}:{port}/idapro_idb_list"

response = urllib.request.urlopen(url)
tools = json.load(response)
print(tools)  # Available IDA sessions via MCP

```

### BurpSuite MCP Bridge Invocation

```python
import os
import requests

burp_host = os.getenv("BURP_MCP_HOST", "127.0.0.1")
burp_port = os.getenv("BURP_MCP_PORT", "9876")
api = f"http://{burp_host}:{burp_port}/burp/api/v1/scan"

payload = {"target": "http://example.com"}
r = requests.post(api, json=payload)
print(r.json())  # Scan results via MCP bridge

```

## Key Configuration Files

| File Path | Purpose |
|-----------|---------|
| [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) | Central MCP port routing table |
| [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md) | IDA Pro MCP server specification |
| [`skills/pentest-tools/references/burpsuite-mcp-guide.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/pentest-tools/references/burpsuite-mcp-guide.md) | BurpSuite MCP bridge configuration |
| [`skills/scripts/bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-reverse.sh) | MCP server startup and port validation |
| [`.omc/tool-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.omc/tool-manifest.json) | Runtime MCP service registry |

## Summary

- **Hard-coded defaults** are defined in [`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) and tool-specific references: 23816 (Anything-Analyzer), 8765 (IDA Pro), 9876 (BurpSuite)
- **Environment variables** (`*_MCP_PORT`) enable port customization without code changes
- **Bootstrap scripts** handle port conflict detection and server initialization
- **Runtime registry** at [`.omc/tool-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.omc/tool-manifest.json) supports dynamic service discovery
- Source files in `zhaoxuya520/reverse-skill` implement this architecture for reliable AI-to-tool communication

## Frequently Asked Questions

### What happens if two MCP servers try to use the same port?

The bootstrap script detects the conflict using `lsof` or `netstat` and aborts with an error message. The user must set a different `*_MCP_PORT` environment variable and restart.

### Can I run multiple instances of the same MCP tool on one host?

Yes. Start each instance with a unique `*_MCP_PORT` value and register each in [`.omc/tool-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/.omc/tool-manifest.json) with distinct server names. The routing table supports per-instance configuration.

### Why does IDA Pro use port 8765 specifically?

Port 8765 is the conventional default for IDA's remote debugging server. The MCP implementation in `skills/ida-reverse/` follows this convention for consistency with existing IDA tooling and documentation.

### Where is the authoritative list of all MCP ports?

[`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md) contains the complete routing table. Tool-specific details appear in [`skills/ida-reverse/references/ida-mcp-cheatsheet.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/ida-reverse/references/ida-mcp-cheatsheet.md) and [`skills/pentest-tools/references/burpsuite-mcp-guide.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/pentest-tools/references/burpsuite-mcp-guide.md).