Obscura Browser MCP
Overview
Use Obscura as the default local MCP-controlled browser for fast, text-first browser work. It is useful for navigation, extraction, interaction, cookies, storage, JavaScript evaluation, network logs, and console logs; it is not a replacement for Chrome when visual rendering, screenshots, profile state, extensions, or pixel-level QA matter.
First Checks
Anchor the target before acting:
- Current MCP server name:
obscura.
- Expected command:
/Users/stevmq/.cargo/bin/obscura.
- Expected args:
mcp.
- Expected transport: stdio.
- Expected Codex config block:
[mcp_servers.obscura].
If the tool namespace is not visible in the current running session, verify config with codex mcp get obscura and tell the user that a fresh Codex session or app restart may be required for newly added MCP tools to appear.
Default Routing Rule
Use Obscura for browser labor by default, then escalate to Chrome, the in-app browser, Playwright screenshots, or computer-use only when the claim needs visual, authenticated, profile-specific, extension-specific, anti-bot, or browser-parity proof.
Typical flow:
- Obscura does the work: navigate, inspect, click, fill, extract, summarize, and capture DOM/text evidence.
- Chrome verifies when needed: screenshots, responsive layout, logged-in profile state, extension behavior, CAPTCHA/2FA, payments, account settings, or exact Chromium rendering.
When To Use Obscura
Prefer Obscura for:
- Fast page navigation and text extraction.
- Accessibility/DOM snapshots, markdown extraction, link discovery, and structured extraction.
- Click, fill, type, select, keypress, tab, wait, and JavaScript evaluation workflows.
- Cookie and storage-state inspection where a disposable browser state is acceptable.
- Network request and console-message diagnostics.
- Agentic browsing through MCP when a real Chrome profile is unnecessary.
Prefer Chrome, the in-app browser, computer-use, or a real Playwright/Chromium session for:
- Screenshots, visual QA, layout inspection, canvas/video/WebGL, or pixel evidence.
- Logged-in profile state, extensions, passkeys, browser-specific permissions, or account dashboards.
- Anti-bot-heavy targets where full Chrome behavior, proxy strategy, or manual review is required.
- Actions that are paid, destructive, credential-sensitive, CAPTCHA/2FA-gated, or privacy-sensitive without explicit user approval.
Operating Pattern
Verify availability when current access is uncertain:
- Run
python3 /Users/stevmq/.agents/skills/obscura-browser-mcp/scripts/smoke_obscura_mcp.py.
- If this passes but tools are absent in Codex, the installed MCP is valid but the current session has not loaded it.
Use the Obscura tools for the page workflow:
- Navigate first with
browser_navigate.
- Read state with
browser_snapshot, browser_markdown, browser_links, or browser_extract.
- Interact with refs from the snapshot when available; otherwise use selectors carefully.
- Inspect diagnostics with
browser_network_requests and browser_console_messages.
- Use
browser_storage_state or cookie tools when session state matters.
Keep state boundaries explicit:
- Treat Obscura as an isolated browser session unless the user has configured shared cookies/storage.
- Do not claim logged-in, visual, or profile-browser verification from Obscura alone.
- Use
--allow-private-network only when the user explicitly wants local/private-network browsing.
- Do not expose Obscura MCP over HTTP without auth, origin allowlisting, and network isolation.
Visibility
The user cannot watch Obscura as a visual browser because Obscura does not render pixels or support screenshots. Make work observable by reporting concrete evidence:
- Current URL and title.
- Snapshot or markdown excerpts.
- Clicked refs/selectors and filled field names.
- Network and console summaries.
- Tool calls completed and blocked checks.
- Whether the browser state was isolated, authenticated, or unknown.
When visual proof is required, route the task to Chrome, in-app browser, Playwright screenshots, or computer-use and say why.
Closeout Receipt
Close Obscura browser work with:
Obscura status:
- Target:
- MCP access: <available | installed-but-session-not-loaded | blocked>
- Actions completed:
- Evidence captured:
- Auth/session state:
- Visual coverage: none unless verified elsewhere
- Durable state touched:
- Blocked/not verified:
1---2name: obscura-browser-mcp3description: Use the local Obscura MCP browser server from Codex as the default worker browser for fast DOM/text web automation, page extraction, form interaction, cookies/storage checks, console/network diagnostics, and agent browser work where screenshots are not required. Use when the user mentions Obscura, asks whether an agent can browse or act on their behalf through MCP, wants to verify Obscura MCP access, compare Obscura with Chrome/Playwright, or run web research, scraping, smoke checks, or browser workflows that can be proven with DOM/text evidence rather than visual screenshots.4---56# Obscura Browser MCP78## Overview910Use Obscura as the default local MCP-controlled browser for fast, text-first browser work. It is useful for navigation, extraction, interaction, cookies, storage, JavaScript evaluation, network logs, and console logs; it is not a replacement for Chrome when visual rendering, screenshots, profile state, extensions, or pixel-level QA matter.1112## First Checks1314Anchor the target before acting:1516- Current MCP server name: `obscura`.17- Expected command: `/Users/stevmq/.cargo/bin/obscura`.18- Expected args: `mcp`.19- Expected transport: stdio.20- Expected Codex config block: `[mcp_servers.obscura]`.2122If the tool namespace is not visible in the current running session, verify config with `codex mcp get obscura` and tell the user that a fresh Codex session or app restart may be required for newly added MCP tools to appear.2324## Default Routing Rule2526Use Obscura for browser labor by default, then escalate to Chrome, the in-app browser, Playwright screenshots, or computer-use only when the claim needs visual, authenticated, profile-specific, extension-specific, anti-bot, or browser-parity proof.2728Typical flow:29301. Obscura does the work: navigate, inspect, click, fill, extract, summarize, and capture DOM/text evidence.312. Chrome verifies when needed: screenshots, responsive layout, logged-in profile state, extension behavior, CAPTCHA/2FA, payments, account settings, or exact Chromium rendering.3233## When To Use Obscura3435Prefer Obscura for:3637- Fast page navigation and text extraction.38- Accessibility/DOM snapshots, markdown extraction, link discovery, and structured extraction.39- Click, fill, type, select, keypress, tab, wait, and JavaScript evaluation workflows.40- Cookie and storage-state inspection where a disposable browser state is acceptable.41- Network request and console-message diagnostics.42- Agentic browsing through MCP when a real Chrome profile is unnecessary.4344Prefer Chrome, the in-app browser, computer-use, or a real Playwright/Chromium session for:4546- Screenshots, visual QA, layout inspection, canvas/video/WebGL, or pixel evidence.47- Logged-in profile state, extensions, passkeys, browser-specific permissions, or account dashboards.48- Anti-bot-heavy targets where full Chrome behavior, proxy strategy, or manual review is required.49- Actions that are paid, destructive, credential-sensitive, CAPTCHA/2FA-gated, or privacy-sensitive without explicit user approval.5051## Operating Pattern52531. Verify availability when current access is uncertain:54 - Run `python3 /Users/stevmq/.agents/skills/obscura-browser-mcp/scripts/smoke_obscura_mcp.py`.55 - If this passes but tools are absent in Codex, the installed MCP is valid but the current session has not loaded it.56572. Use the Obscura tools for the page workflow:58 - Navigate first with `browser_navigate`.59 - Read state with `browser_snapshot`, `browser_markdown`, `browser_links`, or `browser_extract`.60 - Interact with refs from the snapshot when available; otherwise use selectors carefully.61 - Inspect diagnostics with `browser_network_requests` and `browser_console_messages`.62 - Use `browser_storage_state` or cookie tools when session state matters.63643. Keep state boundaries explicit:65 - Treat Obscura as an isolated browser session unless the user has configured shared cookies/storage.66 - Do not claim logged-in, visual, or profile-browser verification from Obscura alone.67 - Use `--allow-private-network` only when the user explicitly wants local/private-network browsing.68 - Do not expose Obscura MCP over HTTP without auth, origin allowlisting, and network isolation.6970## Visibility7172The user cannot watch Obscura as a visual browser because Obscura does not render pixels or support screenshots. Make work observable by reporting concrete evidence:7374- Current URL and title.75- Snapshot or markdown excerpts.76- Clicked refs/selectors and filled field names.77- Network and console summaries.78- Tool calls completed and blocked checks.79- Whether the browser state was isolated, authenticated, or unknown.8081When visual proof is required, route the task to Chrome, in-app browser, Playwright screenshots, or computer-use and say why.8283## Closeout Receipt8485Close Obscura browser work with:8687```text88Obscura status:89- Target:90- MCP access: <available | installed-but-session-not-loaded | blocked>91- Actions completed:92- Evidence captured:93- Auth/session state:94- Visual coverage: none unless verified elsewhere95- Durable state touched:96- Blocked/not verified:97```