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.
Related MCP Servers
- -license-quality-maintenanceEnables browser automation and web interaction through structured accessibility snapshots using Playwright. Provides fast, deterministic web page interaction without requiring screenshots or vision models.Last updated6,700,967
- Alicense-qualityDmaintenanceProvides browser automation capabilities using Playwright's accessibility tree, enabling LLMs to interact with web pages through structured data without screenshots or vision models. It's designed for specialized agentic loops that benefit from persistent state and iterative reasoning over page structure.Last updatedApache 2.0
- AlicenseAqualityAmaintenanceGives AI agents a compact, semantic interface to the browser, returning structured page snapshots with stable element IDs instead of raw DOM. Enables agents to navigate, interact, and extract information from web pages efficiently.Last updated263814MIT
- Alicense-qualityBmaintenanceOptimizes browser automation for AI agents by reducing token usage and latency through smart element extraction and caching.Last updatedMIT
Related MCP Connectors
E2LLM gives your AI eyes and hands in a real browser: structured perception (SiFR) plus action.
Browser-backed QA with evidence and fix-ready reports for coding agents.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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