Exposes local Reqable network capture traffic to MCP clients
Reqable MCP Server
Reqable MCP Server exposes local Reqable capture traffic to MCP clients (Windsurf/Cursor/Claude/Codex).
Default architecture is local-only:
- Reqable posts HAR(JSON) to
http://127.0.0.1:18765/report. - Optional incremental WebSocket events can be posted to
http://127.0.0.1:18765/ws/events. reqable-mcpnormalizes and stores requests/messages in local SQLite.- MCP tools query local data only (no cloud relay by default).
Features
- Local-first, privacy-first ingest path.
- Real-time ingest via Reqable Report Server.
- HAR file import fallback for missed sessions.
- HTTP request query/search/domain stats/API analysis.
- WebSocket session/message parsing for HAR entries carrying message-frame extensions.
- Cross-platform runtime (macOS / Linux / Windows with Python 3.10+).
Prerequisites
- Install and open Reqable.
- Configure Reqable Report Server to post to
http://127.0.0.1:18765/report. - Ensure Node.js (for
npx) anduv(foruvx) are available.
Installation
Run via npx (recommended)
npx -y reqable-mcp@latest
Local development
uv run reqable-mcp
MCP Client Configuration
{
"mcpServers": {
"reqable": {
"command": "npx",
"args": ["-y", "reqable-mcp@latest"]
}
}
}
Reqable Report Server Setup
Use these values in Reqable "Add Report Server":
- Name:
reqable-mcp-local - Match rule:
*(or your target domains) - Server URL:
http://127.0.0.1:18765/report - Compression:
None(or keep consistent with your receiver)
After saving, generate traffic and call ingest_status to verify incoming payload count.
Important note: reqable-mcp still uses HTTP-only ingest transport (no native ws:// listener), but now supports two HTTP ingest paths: /report for HAR/session payload and /ws/events for incremental WebSocket events. WebSocket capture works when Reqable payload includes frame data (for example _webSocketMessages or event frame objects). Raw entry JSON and raw message JSON are preserved and exposed by WebSocket tools. HAR export/import remains the fallback when live pushes miss frames.
Available Tools
ingest_status: ingest server state and countersimport_har: import HAR from file pathlist_requests: list recent HTTP/WebSocket handshake requests with filtersget_request: fetch request details by ID (fullincludesraw_entry)search_requests: keyword search in HTTP URL/body/raw uploaded entry (raw/raw_entry)list_websocket_sessions: list captured WebSocket sessionslist_active_websocket_sessions: list recently active WebSocket sessions by latest captured framesget_websocket_session: fetch WebSocket session details and messages by ID (includingraw_entryand messageraw)tail_websocket_messages: incremental fetch byrequest_id+after_seqcursorsearch_websocket_messages: precise WebSocket message search by keyword, direction, type, opcode, close code, domain, and request IDanalyze_websocket_session: summarize directions, message types, JSON shapes, and close events for a sessionexport_websocket_session_raw: export the raw uploaded WebSocket entry and raw frame listhealth_report: ingest status + WebSocket data quality reportrepair_websocket_messages: backfill missing fields from raw frames (supports dry-run)get_domains: domain-level request statisticsanalyze_api: infer API shapes for a domaingenerate_code: generate sample client code from captured HTTP request
Environment Variables
| Variable | Description | Default |
|---|---|---|
REQABLE_INGEST_HOST |
Report receiver host | 127.0.0.1 |
REQABLE_INGEST_PORT |
Report receiver port | 18765 |
REQABLE_INGEST_PATH |
Report receiver path | /report |
REQABLE_WS_EVENTS_PATH |
Incremental WebSocket event receiver path | /ws/events |
REQABLE_DATA_DIR |
Local data directory | platform app data dir |
REQABLE_DB_PATH |
SQLite file path | ${REQABLE_DATA_DIR}/requests.db |
REQABLE_MAX_BODY_SIZE |
Max persisted body bytes per request/message | 102400 |
REQABLE_MAX_REPORT_SIZE |
Max accepted report payload bytes | 10485760 |
REQABLE_MAX_IMPORT_FILE_SIZE |
Max HAR import file bytes | 104857600 |
REQABLE_RETENTION_DAYS |
Local retention window | 7 |
REQABLE_INGEST_TOKEN |
Optional local auth token | unset |
Privacy and Data Retention
- Data stays on local machine in default mode.
- Retention cleanup is applied to local DB records, including WebSocket messages.
- If ingest server is offline, Reqable failed report push is not retried.
License
MIT
Tools (17)
ingest_statusReturns ingest server state and counters.import_harImports HAR from a file path.list_requestsLists recent HTTP/WebSocket handshake requests with filters.get_requestFetches request details by ID.search_requestsPerforms keyword search in HTTP URL, body, or raw uploaded entry.list_websocket_sessionsLists captured WebSocket sessions.list_active_websocket_sessionsLists recently active WebSocket sessions by latest captured frames.get_websocket_sessionFetches WebSocket session details and messages by ID.tail_websocket_messagesIncremental fetch by request_id and after_seq cursor.search_websocket_messagesSearches WebSocket messages by keyword, direction, type, opcode, or domain.analyze_websocket_sessionSummarizes directions, message types, JSON shapes, and close events for a session.export_websocket_session_rawExports the raw uploaded WebSocket entry and raw frame list.health_reportProvides ingest status and WebSocket data quality report.repair_websocket_messagesBackfills missing fields from raw frames.get_domainsReturns domain-level request statistics.analyze_apiInfers API shapes for a domain.generate_codeGenerates sample client code from a captured HTTP request.Environment Variables
REQABLE_INGEST_HOSTReport receiver hostREQABLE_INGEST_PORTReport receiver portREQABLE_INGEST_PATHReport receiver pathREQABLE_WS_EVENTS_PATHIncremental WebSocket event receiver pathREQABLE_DATA_DIRLocal data directoryREQABLE_DB_PATHSQLite file pathREQABLE_MAX_BODY_SIZEMax persisted body bytes per request/messageREQABLE_MAX_REPORT_SIZEMax accepted report payload bytesREQABLE_MAX_IMPORT_FILE_SIZEMax HAR import file bytesREQABLE_RETENTION_DAYSLocal retention windowREQABLE_INGEST_TOKENOptional local auth tokenConfiguration
{"mcpServers": {"reqable": {"command": "npx", "args": ["-y", "reqable-mcp@latest"]}}}