dev-browser-mcp
dev-browser-mcp
MCP-Server für SawyerHood/dev-browser. Agents steuern ein persistentes Chromium (oder ein bereits laufendes Chrome) mit sandboxed JavaScript und einem kleinen Satz strukturierter Werkzeuge.
Repository: github.com/kamkozlowski/dev-browser-mcp
Skripte laufen in QuickJS, nicht in Node.js. Benannte Seiten bleiben über Tool-Aufrufe hinweg durch den dev-browser-Daemon bestehen.
dev-browser (CLI + Playwright Chromium) ist eine Abhängigkeit dieses Pakets. npm install lädt die CLI herunter und installiert Chromium. Keine globale dev-browser-Installation erforderlich. Setze DEV_BROWSER_SKIP_CHROMIUM=1, um den Chromium-Download zu überspringen (z. B. wenn du nur an ein bestehendes Chrome anbindest). DEV_BROWSER_BIN überschreibt weiterhin die gebündelte CLI.
Installieren
Klone und baue:
git clone https://github.com/kamkozlowski/dev-browser-mcp.git
cd dev-browser-mcp
npm install
npm run buildOder installiere aus dem GitHub-Tarball:
npm pack github:kamkozlowski/dev-browser-mcp
tar -xzf dev-browser-mcp-*.tgz
cd package
npm install
npm run buildRelated MCP server: Cloudflare Playwright MCP
Cursor-Konfiguration
Füge zu ~/.cursor/mcp.json (oder Projekt-.cursor/mcp.json) hinzu.
Empfohlen: Bootstrap von GitHub (Cache unter ~/.cache)
Kein lokaler Klon nötig. Beim ersten Start lädt Cursor das Paket herunter, installiert Abhängigkeiten, baut und startet den Server:
{
"mcpServers": {
"dev-browser": {
"command": "bash",
"args": [
"/ABS/PATH/TO/dev-browser-mcp/scripts/bootstrap-mcp.sh"
],
"env": {
"DEV_BROWSER_HEADLESS": "true"
}
}
}
}Wenn du keinen lokalen Klon behältst, verwende diesen Einzeiler (gleiche Logik wie scripts/bootstrap-mcp.sh):
{
"mcpServers": {
"dev-browser": {
"command": "bash",
"args": [
"-lc",
"CACHE=\"${XDG_CACHE_HOME:-$HOME/.cache}/dev-browser-mcp\"; LOCK=\"$CACHE/.install.lock\"; PKG=\"$CACHE/package\"; ENTRY=\"$PKG/dist/index.js\"; mkdir -p \"$CACHE\"; install() { cd \"$CACHE\" && rm -rf package dev-browser-mcp-*.tgz && npm pack github:kamkozlowski/dev-browser-mcp >/dev/null && tar -xzf dev-browser-mcp-*.tgz && rm -f dev-browser-mcp-*.tgz && cd package && npm install && npm run build; }; if [ ! -f \"$ENTRY\" ]; then ( flock -n 9 || flock 9; [ -f \"$ENTRY\" ] || install ) 9>\"$LOCK\"; fi; [ -f \"$ENTRY\" ] || { echo \"Install failed; rm -rf $CACHE\" >&2; exit 1; }; cd \"$PKG\" && exec node dist/index.js"
],
"env": {
"DEV_BROWSER_HEADLESS": "true"
}
}
}
}Wenn der Server mit Cannot find module .../dist/index.js nicht startet, entferne den defekten Cache und versuche es erneut:
rm -rf "${XDG_CACHE_HOME:-$HOME/.cache}/dev-browser-mcp"Um an dein laufendes Chrome statt Chromium anzubinden:
{
"mcpServers": {
"dev-browser": {
"command": "bash",
"args": [
"-lc",
"CACHE=\"${XDG_CACHE_HOME:-$HOME/.cache}/dev-browser-mcp\"; LOCK=\"$CACHE/.install.lock\"; PKG=\"$CACHE/package\"; ENTRY=\"$PKG/dist/index.js\"; mkdir -p \"$CACHE\"; install() { cd \"$CACHE\" && rm -rf package dev-browser-mcp-*.tgz && npm pack github:kamkozlowski/dev-browser-mcp >/dev/null && tar -xzf dev-browser-mcp-*.tgz && rm -f dev-browser-mcp-*.tgz && cd package && npm install && npm run build; }; if [ ! -f \"$ENTRY\" ]; then ( flock -n 9 || flock 9; [ -f \"$ENTRY\" ] || install ) 9>\"$LOCK\"; fi; [ -f \"$ENTRY\" ] || { echo \"Install failed; rm -rf $CACHE\" >&2; exit 1; }; cd \"$PKG\" && exec node dist/index.js"
],
"env": {
"DEV_BROWSER_CONNECT": "auto",
"DEV_BROWSER_SKIP_CHROMIUM": "true"
}
}
}
}Aktiviere Remote-Debugging in Chrome unter chrome://inspect/#remote-debugging oder starte mit --remote-debugging-port=9222.
Lokaler Klon (einfach)
Nach npm install und npm run build in deinem Checkout:
{
"mcpServers": {
"dev-browser": {
"command": "node",
"args": ["/ABS/PATH/TO/dev-browser-mcp/dist/index.js"],
"env": {
"DEV_BROWSER_HEADLESS": "true"
}
}
}
}Lokaler Klon (selbststartend, bash)
Cursor installiert und baut beim ersten Start, wenn dist/ fehlt:
{
"mcpServers": {
"dev-browser": {
"command": "bash",
"args": [
"-lc",
"REPO=\"/ABS/PATH/TO/dev-browser-mcp\"; if [ ! -f \"$REPO/dist/index.js\" ]; then cd \"$REPO\" && npm install && npm run build; fi; cd \"$REPO\" && exec node dist/index.js"
],
"env": {
"DEV_BROWSER_HEADLESS": "true"
}
}
}
}Ersetze REPO durch deinen Checkout-Pfad.
Entwicklung (TypeScript, kein Build)
{
"mcpServers": {
"dev-browser": {
"command": "bash",
"args": [
"-lc",
"REPO=\"/ABS/PATH/TO/dev-browser-mcp\"; cd \"$REPO\" && exec npx --yes tsx src/index.ts"
],
"env": {
"DEV_BROWSER_HEADLESS": "true"
}
}
}
}Ersetze REPO durch deinen Checkout-Pfad.
Werkzeuge
Tool | Zweck |
| Hauptwerkzeug. Ein sandboxed Playwright-Skript ausführen. |
| Tabs auflisten: |
| Eine benannte Seite abrufen/erstellen (oder per targetId anbinden) |
| Eine benannte Seite schließen |
| Navigieren |
| KI-Barrierefreiheits-Snapshot ( |
| PNG-Screenshot (auch als Bild zurückgegeben) |
| Klicken per CSS-Selektor oder Snapshot-Referenz |
| Ein Eingabefeld ausfüllen |
| Zeichen für Zeichen eingeben |
| JavaScript in der Seite ausführen ( |
| Auf einen Selektor warten |
| Daemon-Status |
| Verwaltete Browser-Instanzen |
| Daemon stoppen |
| Playwright Chromium installieren |
Lies dev-browser://guide für die vollständige Sandbox-API, einschließlich page.cua (Vision) und page.domCua (DOM-IDs).
Umgebung
Variable | Bedeutung |
| Überschreibt den gebündelten |
|
|
| Benannte Daemon-Browser-Instanz (Standard: |
|
|
|
|
|
|
| Skript-Timeout in Sekunden (Standard: |
| Gestartete Browser bei Leerlauf schließen, z. B. |
Pro-Aufruf-browser, connect, headless, ignoreHttpsErrors und timeoutSeconds überschreiben die Umgebung.
Unterschiede zu Playwright MCP
dev-browser ist um ein sandboxed Skript pro Entscheidung herum aufgebaut, nicht um eine lange Kette atomarer MCP-Aufrufe. Verwende dev_browser_run für alles, was über einen einzelnen goto/click/fill hinausgeht. Komfortwerkzeuge existieren, damit häufige Inspect-/Act-Schritte strukturiert bleiben.
Im Gegensatz zu benkraus/dev-browser-mcp (Chrome-Erweiterung + CDP-Relay) umschließt dieser Server die offizielle dev-browser-CLI mit ihrer QuickJS-Sandbox und persistenten Daemon-Seiten.
Entwicklung
npm test
npm run typecheck
npm run buildMaintenance
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
- Flicense-qualityCmaintenanceEnables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
- Flicense-qualityCmaintenanceEnables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
- Flicense-qualityCmaintenanceEnables AI assistants to control a browser through a set of tools, allowing them to perform web automation tasks like navigation, typing, clicking, and taking screenshots.
- AlicenseBqualityFmaintenanceEnables AI agents to directly control your real Chrome browser with full context including login sessions, cookies, and open tabs. It provides tools for page scanning, JavaScript execution, CDP control, screenshots, and physical mouse/keyboard input for authentic browser automation.20239MIT
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Live browser debugging for AI assistants — DOM, console, network via MCP.
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/kamkozlowski/dev-browser-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server