stygian-mcp
Unified MCP (Model Context Protocol) server aggregating
stygian-graph, stygian-browser, and stygian-proxy into a single JSON-RPC 2.0
process over stdin/stdout.
An LLM agent connecting to this server can scrape URLs, run pipeline DAGs, automate browsers, manage proxy pools, and combine all three capabilities — without needing to connect to three separate processes.
Installation
# Standalone binary
# Or add to your project
Usage
Run the binary directly:
This starts a JSON-RPC 2.0 server on stdin/stdout. Connect any MCP-compatible client (VS Code, Claude, IDE plugins, etc.) to begin calling scraping, browser, and proxy tools.
Features
| Feature | Description | Default |
|---|---|---|
| Base | Proxy + browser tools | ✓ |
extract |
Enable browser structured extraction tools (browser_extract, browser_extract_with_fallback, browser_extract_resilient) |
— |
mcp-attach |
Enable browser_attach to connect workflows to an existing user browser via CDP WebSocket |
— |
Enable extraction (requires stygian-browser/extract and stygian-graph/extract):
Enable CDP attach (lets agents attach to a running Chrome/Chromium profile):
MCP Tools
All tools from the three underlying crates are available under their respective prefixes:
| Prefix | Crate | Example tools |
|---|---|---|
graph_* |
stygian-graph |
graph_scrape, graph_scrape_rest, graph_pipeline_run |
browser_* |
stygian-browser |
browser_acquire, browser_navigate, browser_screenshot, browser_content, browser_eval, browser_query, browser_warmup, browser_refresh, browser_auth_session, browser_session_save, browser_session_restore, browser_humanize, browser_release, browser_attach* |
proxy_* |
stygian-proxy |
proxy_add, proxy_acquire_with_capabilities, proxy_fetch_freelist, proxy_fetch_freeapiproxies |
* browser_attach requires the mcp-attach feature.
Runner-first tool:
browser_acquire_and_extractis the recommended high-level browser path for acquisition + extraction in one call.- Supported
modevalues arefast,resilient,hostile, andinvestigate.
The aggregator also adds two cross-crate tools:
| Tool | Description |
|---|---|
scrape_proxied |
HTTP scrape routed through an acquired proxy |
browser_proxied |
Browser session with a proxy from the pool |
Architecture
LLM / IDE / Chat Interface
│ JSON-RPC 2.0 (stdin/stdout)
▼
┌─────────────────────────────────────┐
│ McpAggregator │
│ tools/list ── merge & dispatch │
│ tools/call ── route by prefix ─┐ │
└──────────────────┬──────────────┼──┘
│ │
┌──────────┼──────────────┘
▼ ▼ ▼
GraphHandler BrowserHandler ProxyHandler
Tool Execution Flow
- Client calls
tools/list→ aggregator merges all three sub-server tool lists - Client calls
tools/callwith a tool name + params - Aggregator routes:
graph_*→ strips prefix, forwards to graph sub-serverbrowser_*→ forwards to browser sub-serverproxy_*→ forwards to proxy sub-serverscrape_proxied,browser_proxied→ handled by aggregator (cross-crate coordination)
Examples
Scrape with Proxy Rotation
Browser Screenshot Through Proxy
Capture and Resume a Login Session
Capture login state after a manual or automated auth flow:
Restore it in a subsequent session:
Extract Structured Data
With extract feature enabled, use browser_extract:
Runner-First Acquisition by Mode
Use browser_acquire_and_extract when you want deterministic strategy escalation with minimal orchestration code.
fast mode:
resilient mode:
hostile mode:
investigate mode:
Migration note (old low-level path vs new runner path):
- Old low-level MCP path:
browser_acquire->browser_navigate->browser_evalorbrowser_extract->browser_release. - New runner path:
browser_acquire_and_extractwith one call and explicitmode. - The low-level path remains supported for custom multi-step interactions.
License
Licensed under either the GNU Affero General Public License v3.0 (AGPL-3.0-only)
or the Commercial License at your option.