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
--manifestflag supported bybootstrap-reverse.shandbootstrap-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 inrefresh-tool-index.sh.
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:
- Run initial bootstrap to trigger conflict detection:
bash skills/scripts/bootstrap-reverse.sh
-
Note the failing port from the error output (e.g.,
Port 23816 already in use). -
Select an available port using
ssornetstat:
ss -tln | grep -E ':(23816|13337|8765|9876|5000|8085)' # Check current bindings
FREE_PORT=25000 # Choose unassigned port
-
Apply the fix via manifest edit or environment variable (see options above).
-
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 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, andr2mcp/r2http. - Default ports are defined in
skills/scripts/bootstrap-manifest.json(23816, 13337, 5000, 8085, 9876, 8765). - Conflict detection uses TCP connect probes and
/mcpHTTP handshakes inrefresh-tool-index.sh. - Resolution options: edit the manifest directly, supply
--manifestwith a custom file, or setMCP_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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →