browser-stream
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@browser-streamNavigate to google.com and search for 'weather in New York'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
browser-stream
MCP server that collapses browser act-then-observe into single tool calls. Every action returns its consequences — what appeared, disappeared, changed, or shifted — so agents see the effect of each action without a separate observation step.
~50% fewer tool calls. ~90% fewer tokens.
Tools
Tool | Description |
| Navigate to a URL. Returns a snapshot of interactive elements. |
| Take a snapshot of the current page. Returns interactive elements with |
| Click an element by ref. Returns consequences. |
| Fill a text input by ref. Returns consequences. |
| Press a key or key combination (e.g. |
| Scroll the viewport or a container. Detects DOM churn and layout shifts. |
| Wait for text to appear or a ref to become visible. Polls every 500ms. |
Related MCP server: Playwright MCP
Refs
Every interactive element gets a globally unique ref like @e1, @e5, @e23. Refs are stable across actions — use them to target clicks, fills, and scrolls. When an element leaves the DOM, its ref is never reused.
Refs resolve through a 3-tier system: backendNodeId (fast) → CSS domPath (fallback) → REF_STALE error.
Consequences
Every action returns what changed:
appeared — new interactive elements in the DOM
disappeared — elements that left the DOM
changed — elements with modified properties (name, value, checked, etc.)
network — Fetch/XHR requests triggered by the action
dom-churn — remove-then-re-add pairs (e.g. React re-rendering an entire list on scroll)
layout-shift — CLS events without recent user input
Scroll detection
browser_scroll detects rendering pathologies that are invisible to before/after snapshot diffing:
→ browser_scroll({ ref: "@e12", direction: "down", amount: "page" })
consequences: [
{ type: "dom-churn", churnCount: 36, desc: "DOM churn detected: 36 remove/re-add pairs" },
{ type: "layout-shift", cls: 0.042, shiftCount: 2, desc: "Layout shift: cls=0.042 (2 shifts)" }
]Setup
npm install
npm run buildUsage
Launch Chrome automatically:
node dist/index.jsConnect to an existing Chrome instance:
node dist/index.js --cdp-url ws://127.0.0.1:9222/devtools/browser/...With Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"browser-stream": {
"command": "node",
"args": ["/path/to/browser-stream/dist/index.js"]
}
}
}Development
npm run dev # watch mode build
npm test # run tests
npm run test:watch # watch mode testsArchitecture
src/
├── index.ts # CLI entrypoint, MCP server setup
├── types.ts # All shared types and response schemas
├── cdp/
│ └── client.ts # CDP connection (chrome-launcher + chrome-remote-interface)
├── state/
│ ├── ref-map.ts # @e ref registry with 3-tier resolution
│ ├── snapshot.ts # AX tree → ref assignment → compact line format
│ └── differ.ts # Pre/post snapshot diffing → consequences
├── actions/
│ ├── interactable.ts # Scroll-into-view + box model + center point
│ ├── stability.ts # DOM mutation debounce + network tracking + churn detection
│ └── engine.ts # Action orchestration (click, fill, scroll, etc.)
└── tools/
├── actions.ts # MCP tool registrations for actions
└── observation.ts # MCP tool registrations for snapshot/wait_forLicense
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sgreen7979/browser-stream'
If you have feedback or need assistance with the MCP directory API, please join our Discord server