Expand description
MCP (Model Context Protocol) server for browser automation.
Exposes stygian-browser capabilities as an MCP server over stdin/stdout
using the JSON-RPC 2.0 protocol. External tools (LLM agents, IDE plugins)
can acquire browsers, navigate pages, evaluate JavaScript, and capture
screenshots via the standardised MCP interface.
§Enabling
[dependencies]
stygian-browser = { version = "*", features = ["mcp"] }To use browser_attach (cdp_ws mode), also enable mcp-attach:
[dependencies]
stygian-browser = { version = "*", features = ["mcp", "mcp-attach"] }§Running the server
STYGIAN_MCP_ENABLED=true cargo run --example mcp_server -p stygian-browser§Protocol
The server implements MCP 2025-11-25 over JSON-RPC 2.0 on stdin/stdout. Supported methods:
| MCP Method | Description |
|---|---|
initialize | Handshake, return server capabilities |
tools/list | List available browser tools |
tools/call | Execute a browser tool |
resources/list | List active browser sessions as MCP resources |
resources/read | Read session state |
§Tools
| Tool | Parameters | Returns |
|---|---|---|
browser_acquire | stealth_level?, tls_profile?, webrtc_policy?, cdp_fix_mode?, proxy? (opt-in only) | session_id, requested_metadata |
browser_acquire_and_extract | url, mode, wait_for_selector?, extraction_js?, total_timeout_secs? | strategy_used, final_url, status_code, extracted?, html_excerpt?, diagnostics |
browser_navigate | session_id, url, timeout_secs? | title, url |
browser_eval | session_id, script | result: Value |
browser_screenshot | session_id | data: base64 PNG |
browser_content | session_id | html: String |
browser_attach (mcp-attach feature) | mode, endpoint?, profile_hint?, target_profile? | attach session result |
browser_auth_session | session_id, mode, file_path?, ttl_secs?, navigate_to_origin?, interaction_level? | auth/session workflow result |
browser_session_save | session_id, ttl_secs?, file_path?, include_snapshot? | saved session state metadata |
browser_session_restore | session_id, snapshot?, file_path?, use_saved?, navigate_to_origin? | restored session state metadata |
browser_apply_behavior_json | behavior, session_id? | applied behavior plan + effective config |
browser_humanize | session_id, level?, viewport_width?, viewport_height? | humanization result |
browser_verify_stealth | session_id, url, timeout_secs? | DiagnosticReport JSON |
browser_release | session_id | success |
pool_stats | – | active, max, available |
browser_query | session_id, url, selector, fields?, limit?, timeout_secs? | results array of text or field objects |
browser_extract | session_id, url, root_selector, schema, timeout_secs? | results array of structured objects |
browser_extract_with_fallback | session_id, url, root_selectors, schema, timeout_secs? | first successful selector + results |
browser_extract_resilient | session_id, url, root_selector, schema, timeout_secs? | results plus skipped-count metadata |
browser_find_similar (similarity feature) | session_id, url, reference_selector, threshold?, max_results?, timeout_secs? | scored matches array |
browser_warmup | session_id, url, wait?, timeout_ms?, stabilize_ms? | warmup report |
browser_refresh | session_id, wait?, timeout_ms?, reset_connection? | refresh report |
Proxy guidance: leave proxy unset by default. Only pass proxy when the
user explicitly requests proxy routing or after a proxy has been acquired
from the proxy pool.
Structs§
- Json
RpcError - A JSON-RPC 2.0 error object.
- Json
RpcRequest - A JSON-RPC 2.0 request.
- Json
RpcResponse - A JSON-RPC 2.0 response.
- McpBrowser
Server
Functions§
- is_
mcp_ enabled - Returns
trueif the MCP server is enabled via theSTYGIAN_MCP_ENABLEDenvironment variable.