Skip to main content
Glama

wsrx-mcp

English | 简体中文

An MCP (Model Context Protocol) server that manages WebSocket Reflector X (wsrx) tunnels.

The ret2shell CTF platform exposes dynamic challenge instances only through WebSocket traffic links such as:

wss://ctf.example.com/api/traffic/<token>?port=9999

Platforms that hand out plain host:port pairs can be reached with nc / pwntools directly; these links cannot.

wsrx bridges a WebSocket endpoint to a local TCP port; wsrx-mcp then wraps starting, inspecting, and closing tunnels as MCP tools, so your MCP client (Claude Desktop, Codex, etc.) can call them directly — no manual terminal work.

┌───────────────┐   TCP    ┌──────────────┐   WSS    ┌───────────────────┐
│ nc / pwntools ├─────────►│ wsrx connect ├─────────►│ platform instance │
└───────────────┘  :1337   └──────────────┘ wss link └───────────────────┘
                     managed by wsrx-mcp (MCP tools)

Tools

Tool

Description

wsrx_connect(remote, local_port?, wait?)

Forward a local TCP port to a ws:///wss:// URL. For the same remote, an existing tunnel is reused; a free port is picked automatically when not specified; by default the call returns only once the local port is actually connectable.

wsrx_list()

List tunnels: remote, local port, endpoint, PID, alive.

wsrx_disconnect(local_port? | remote?)

Close a tunnel by its local port or remote URL.

wsrx_stop_all()

Close every tunnel.

wsrx_doctor()

Check the wsrx binary is on PATH and list current tunnels.

Related MCP server: ptywright

Requirements

  • Python 3.10+

  • The wsrx CLI (releases) installed and on PATH, or set WSRX_BINARY to its location.

Install & configure

Run directly from GitHub with uvx (recommended — no clone needed):

{
  "mcpServers": {
    "wsrx": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/springbot2025/wsrx-mcp", "wsrx-mcp"]
    }
  }
}

Or install once, then point your MCP client at the wsrx-mcp command:

pipx install git+https://github.com/springbot2025/wsrx-mcp
{
  "mcpServers": {
    "wsrx": { "command": "wsrx-mcp" }
  }
}

Configuration (environment variables)

Variable

Default

Description

WSRX_BINARY

wsrx

Path/resolved name of the wsrx executable.

WSRX_MCP_BIND_HOST

127.0.0.1

Address tunnels bind to. Use 0.0.0.0 only if other hosts must reach the tunnels.

WSRX_MCP_STARTUP_TIMEOUT

15

How long to wait for the local port to become connectable, in seconds.

Example session

Ask your agent:

Connect to wss://ctf.example.com/api/traffic/abc123?port=9999 (the wsrx link from the ret2shell platform) and tell me the local endpoint.

The agent calls wsrx_connect, gets back {"endpoint": "127.0.0.1:54321", ...}, and can then run nc 127.0.0.1 54321 or use pwntools to connect. The same tunnel is reused across calls, and all tunnels close when the service exits.

Security notes

  • Tunnels bind to 127.0.0.1 by default.

  • The server manages subprocesses and holds no credentials — traffic tokens live in the URLs you pass in.

  • Only ws:// and wss:// remotes are accepted.

Development

pip install -e . pytest
pytest

The tunnel core (wsrx_mcp.manager) has no MCP dependency and is fully injectable for testing.

License

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/springbot2025/wsrx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server