# MCP Services in Reverse-Skill: Supported Services and Port Conflict Configuration

> Discover supported MCP services in reverse-skill and learn to configure port conflicts. Resolve potential issues with clear instructions for MetasploitMCP BurpSuite MCP and more.

- Repository: [ZhaoXu/reverse-skill](https://github.com/zhaoxuya520/reverse-skill)
- Tags: api-reference
- Published: 2026-09-01

---

**TL;DR:** The `reverse-skill` repository exposes 8 MCP (Model-Context-Protocol) services—including `anything-analyzer`, `MetasploitMCP`, `BurpSuite MCP`, and others—with default ports defined in [`skills/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json). Port conflicts are detected by [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh) using TCP probes and HTTP handshakes, and can be resolved by editing the manifest or setting environment variables like `MCP_PORT_<SERVICE>`.

Reverse engineering and penetration testing workflows increasingly rely on **Model-Context-Protocol (MCP) services** to bridge AI agents with specialized security tools. The `zhaoxuya520/reverse-skill` repository implements a modular architecture where multiple MCP servers can be discovered and registered dynamically. This guide covers all supported MCP services, their default ports, and exactly how to detect and resolve port conflicts when running multiple services.

## Supported MCP Services and Default Ports

The repository ships with eight distinct MCP services, each targeting a specific reverse engineering or pentesting domain. Default ports are centralized in [`skills/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json) (see [source](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json)):

| MCP Service | Purpose | Default Port |
|-------------|---------|--------------|
| **anything-analyzer** | Browser-based analysis, HTTP traffic capture, AI-driven inspection | **23816** |
| **jshookmcp** | Browser/CDP automation, JavaScript hooking, network interception, Frida/WASM analysis | 23816 (shared with `anything-analyzer`) |
| **MetasploitMCP** | Direct MCP bridge to Metasploit Framework (Kali 2026.1) | **13337** |
| **mcp-kali-server** | Official Kali MCP server forwarding AI calls to local terminal tools | **5000** |
| **HexStrike AI** | Auto-exposes 150+ security tools via MCP (Kali 2025.4) | **8085** |
| **BurpSuite MCP** | Full-control bridge to Burp Suite (proxy history, Intruder, Scanner, Repeater) | **9876** |
| **pentestMCP (Docker)** | Containerized MCP with curated pentesting toolset | **8765** |
| **r2mcp / r2http** | MCP front-end for radare2 analysis pipelines | 23816 (uses `anything-analyzer` port) |

Services like `jshookmcp` and `r2mcp` are designed to co-locate with `anything-analyzer` on port 23816 when installed together, reducing port consumption. Others require dedicated ports due to conflicting protocol expectations or container isolation requirements.

## Where Port Configuration Lives

All default ports are declared in the **bootstrap manifest** at this location:

```text
skills/scripts/bootstrap-manifest.json

```

Key excerpts from the manifest structure:

```json
{
  "services": [
    {
      "name": "anything-analyzer",
      "servicePort": 23816
    },
    {
      "name": "MetasploitMCP",
      "servicePort": 13337
    },
    {
      "name": "pentestMCP",
      "servicePort": 8765
    },
    {
      "name": "BurpSuite MCP",
      "servicePort": 9876
    },
    {
      "name": "mcp-kali-server",
      "servicePort": 5000
    },
    {
      "name": "HexStrike AI",
      "servicePort": 8085
    }
  ]
}

```

Some entries also support `servicePortRange` for dynamic allocation when the primary port is occupied. Check individual service definitions in the manifest for range availability.

## How Port Conflicts Are Detected

The [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh) script performs active probing before bootstrap completion. Two Python functions embedded in the script handle detection (see [source](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/refresh-tool-index.sh)):

```python
def tcp_open(port, timeout=1.0):
    s = socket.socket()
    s.settimeout(timeout)
    try:
        s.connect(('127.0.0.1', int(port)))
        return True
    except:
        return False

def mcp_http_handshake(port, timeout=3):
    try:
        urllib.request.urlopen(f'http://127.0.0.1:{int(port)}/mcp', timeout=timeout)
        return True
    except:
        return False

```

The bootstrap fails fast if either check returns `True` for a declared port. This prevents partial registrations that would break downstream AI agent routing.

## Resolving MCP Port Conflicts

Two resolution paths are supported, depending on your operational constraints.

### Option 1: Edit the Manifest Directly

Modify `servicePort` or `servicePortRange` in [`skills/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json), then re-run the bootstrap:

```bash

# Locate the conflicting service and change its port

# Example: moving anything-analyzer from 23816 to 25000

jq '.services[] |= if .name=="anything-analyzer" then .servicePort=25000 else . end' \
   skills/scripts/bootstrap-manifest.json > tmp.json && mv tmp.json skills/scripts/bootstrap-manifest.json

# Re-run bootstrap

bash skills/scripts/bootstrap-reverse.sh

```

Any JSON editor works—`jq`, `python -m json.tool`, or manual editing.

### Option 2: Runtime Override

Supply an alternative manifest or environment variable without modifying the original file:

- **Custom manifest:** Use the `--manifest` flag supported by [`bootstrap-reverse.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/bootstrap-reverse.sh) and `bootstrap-reverse.ps1`:

```bash
bash skills/scripts/bootstrap-reverse.sh --manifest /path/to/custom-manifest.json

```

- **Environment variable:** Set `MCP_PORT_<SERVICE>` where `<SERVICE>` matches the uppercase service name from the manifest. The exact variable parsing is implemented in [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh).

```bash
export MCP_PORT_ANYTHING_ANALYZER=25000
export MCP_PORT_METASPLAI_TMCP=14000
bash skills/scripts/bootstrap-reverse.sh

```

## Recommended Conflict-Resolution Workflow

Follow this sequence to diagnose and fix port clashes efficiently:

1. **Run initial bootstrap** to trigger conflict detection:

```bash
bash skills/scripts/bootstrap-reverse.sh

```

2. **Note the failing port** from the error output (e.g., `Port 23816 already in use`).

3. **Select an available port** using `ss` or `netstat`:

```bash
ss -tln | grep -E ':(23816|13337|8765|9876|5000|8085)'  # Check current bindings

FREE_PORT=25000  # Choose unassigned port

```

4. **Apply the fix** via manifest edit or environment variable (see options above).

5. **Verify resolution** by re-running bootstrap and checking for clean completion.

## Architecture: How Routing Integrates with MCP Services

MCP service selection is not arbitrary. The routing tables in [`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) declare which services are applicable per skill domain:

- **JavaScript reverse engineering** → `anything-analyzer`, `jshookmcp`
- **IDA/Ghidra workflows** → `anything-analyzer`, `r2mcp`
- **Active pentesting** → `MetasploitMCP`, `mcp-kali-server`, `HexStrike AI`, `pentestMCP`
- **Web application testing** → `BurpSuite MCP`, `anything-analyzer`

This mapping ensures AI agents invoke tool-appropriate MCP endpoints without manual configuration.

## Summary

- **Eight MCP services** are supported: `anything-analyzer`, `jshookmcp`, `MetasploitMCP`, `mcp-kali-server`, `HexStrike AI`, `BurpSuite MCP`, `pentestMCP`, and `r2mcp/r2http`.
- **Default ports** are defined in [`skills/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json) (23816, 13337, 5000, 8085, 9876, 8765).
- **Conflict detection** uses TCP connect probes and `/mcp` HTTP handshakes in [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh).
- **Resolution options:** edit the manifest directly, supply `--manifest` with a custom file, or set `MCP_PORT_<SERVICE>` environment variables.
- **Routing tables** ([`skills/routing.md`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/routing.md)) bind skills to appropriate MCP services automatically.

## Frequently Asked Questions

### What happens if I don't resolve a port conflict?

The bootstrap aborts before registering any services. Partial registration is prevented to avoid broken AI agent integrations. You must free the port or reconfigure before proceeding.

### Can two MCP services share the same port?

Only designed co-located pairs like `jshookmcp` and `r2mcp` with `anything-analyzer` can share port 23816. Other services have conflicting protocol handlers and require dedicated ports.

### How do I find which service is using a specific port?

Run `lsof -i :<PORT>` (Linux/macOS) or `netstat -ano | findstr :<PORT>` (Windows) to identify the occupying process. Cross-reference with your running MCP services or system services like Docker.

### Is there a way to auto-assign ports instead of manual configuration?

Some manifest entries support `servicePortRange`. When present, [`refresh-tool-index.sh`](https://github.com/zhaoxuya520/reverse-skill/blob/main/refresh-tool-index.sh) will iterate through the range and bind to the first available port. Check [`skills/scripts/bootstrap-manifest.json`](https://github.com/zhaoxuya520/reverse-skill/blob/main/skills/scripts/bootstrap-manifest.json) for range definitions on specific services.