Policy-first MCP facility for browser operations with explicit control boundaries.
Automating browser tasks without constraints is fragile and unsafe. This project separates three actions and enforces policy before execution:
read: inspect page statestage: draft content into UI fieldssubmit: finalize an action (requires explicit confirmation)
- Dry-run defaults to
true - URL/domain allowlist is enforced
submitrequires human confirmation token- Every action emits a machine-readable receipt
- In-process policy engine
- Mock browser adapter for deterministic testing
- MCP server entrypoint (optional
mcpdependency) - Security and architecture docs
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev,mcp]'
pytestRun as an MCP stdio server:
export MCP_BROWSER_OPERATOR_POLICY=examples/policies/default_policy.yaml
export MCP_BROWSER_OPERATOR_CONFIRM_TOKEN=change-me
mcp-browser-operatorbrowser_read(url, selector="body", dry_run=true)browser_stage(url, selector, text, dry_run=true)browser_submit(url, selector, confirm_token, dry_run=false)
See:
docs/SECURITY_MODEL.mddocs/CISO_CONTROLS.mddocs/STAKEHOLDER_GUARDRAILS.mddocs/ARCHITECTURE.mddocs/API.md
MIT