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

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. Port conflicts are detected by 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 (see source):

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:

skills/scripts/bootstrap-manifest.json

Key excerpts from the manifest structure:

{
  "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 script performs active probing before bootstrap completion. Two Python functions embedded in the script handle detection (see source):

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, then re-run the bootstrap:


# 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 and bootstrap-reverse.ps1:
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.
export MCP_PORT_ANYTHING_ANALYZER=25000
export MCP_PORT_METASPLAI_TMCP=14000
bash skills/scripts/bootstrap-reverse.sh

Follow this sequence to diagnose and fix port clashes efficiently:

  1. Run initial bootstrap to trigger conflict detection:
bash skills/scripts/bootstrap-reverse.sh
  1. Note the failing port from the error output (e.g., Port 23816 already in use).

  2. Select an available port using ss or netstat:

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

FREE_PORT=25000  # Choose unassigned port
  1. Apply the fix via manifest edit or environment variable (see options above).

  2. 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 and skills/routing_zh.md declare which services are applicable per skill domain:

  • JavaScript reverse engineeringanything-analyzer, jshookmcp
  • IDA/Ghidra workflowsanything-analyzer, r2mcp
  • Active pentestingMetasploitMCP, mcp-kali-server, HexStrike AI, pentestMCP
  • Web application testingBurpSuite 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 (23816, 13337, 5000, 8085, 9876, 8765).
  • Conflict detection uses TCP connect probes and /mcp HTTP handshakes in 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) 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 will iterate through the range and bind to the first available port. Check skills/scripts/bootstrap-manifest.json for range definitions on specific services.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →