Umbra MCP Server
Umbra
Steuere dein eigenes angemeldetes Chrome über einen KI-Agenten, jeweils eine Sitzung nach der anderen, ohne dem Agenten deine Cookies zu übergeben.
Umbra besteht aus zwei Teilen, die über einen gemeinsam genutzten Schlüssel, den du erzeugst, zusammenarbeiten: eine MV3-Chrome-Erweiterung, die jeden Chrome-API-Aufruf besitzt, und einen lokalen MCP-Server, der eine Browser-Tool-Oberfläche für jeden MCP-Client bereitstellt. Sie kommunizieren nur über einen authentifizierten Loopback-WebSocket. Nichts verlässt die Maschine.
Warum es das gibt
Remote-Debugging eines Browsers gibt einem Agenten auf einmal alles: jeden Tab, jeden Cookie-Jar, jedes Profil. Umbra vertritt die gegenteilige Position. Der Agent bekommt eine Tab-Gruppe, die er erstellt hat, die Tabs darin und sonst nichts. Wenn du es bittest, einen Tab zu lesen, der ihm nicht gehört, verweigert die Erweiterung die Aktion, bevor Chrome überhaupt berührt wird.
Zwei Tools sitzen absichtlich außerhalb dieser Grenze, und beide sind als solche in docs/permissions.md aufgeführt: browser_find_tabs und browser_find_groups melden den Titel und die URL von Tabs, die einer Sitzung nicht gehören – so übergibst du einen Tab –, und browser_cleanup_groups gleicht Tab-Gruppen anhand des Titels über das gesamte Profil ab, um Gruppen zu entfernen, die von einer nicht mehr vorhandenen Sitzung hinterlassen wurden. Gib browser_cleanup_groups ein Titel-Präfix, das deine eigenen Gruppen nicht teilen, oder führe es zuerst mit dryRun: true aus.
Diese Grenze macht es einsetzbar mit einem Browser, bei dem du bereits angemeldet bist. Der Agent kann ein Dashboard lesen, bei dem du angemeldet bist, ein Formular ausfüllen, eine CSV exportieren und seine eigenen Tabs schließen, wenn er fertig ist, während deine anderen Fenster unberührt und unlesbar bleiben.
Das Projekt ist bewusst langweilig:
echtes Chrome, echtes Profil, echter angemeldeter Zustand, von dir gewählt
viele gleichzeitige Agentensitzungen in einem Browser, jede isoliert in ihrer eigenen Tab-Gruppe
pro Sitzung durchgesetzte Tab-Inhaberschaft bei jeder Aktion
kein Cookie-Export, keine Token-Extraktion, kein CAPTCHA-Lösen, kein generischer Hintergrundabruf
Nur-Loopback-Transport mit HMAC-Handshake in beide Richtungen
Related MCP server: byob
Installation
Eine vollständige Anleitung mit jeder Variablen, die eine normale Installation benötigt, findest du in docs/install.md. Die Kurzfassung:
git clone https://github.com/RobertJLora/umbra
cd umbra/mcp-server
npm install
npm testDie Abhängigkeiten liegen in mcp-server/, nicht im Repository-Stammverzeichnis, daher installiert npm install im Stammverzeichnis nichts und npm test schlägt dort fehl, bis der obige Befehl einmal ausgeführt wurde. Danach funktionieren npm test, npm run doctor und npm run release:check alle vom Stammverzeichnis aus.
Lade extension/ als entpackte Erweiterung unter chrome://extensions bei aktiviertem Entwicklermodus, öffne die Optionsseite der Erweiterung, klicke auf Generate Key, dann auf Copy Environment Line und füge diese Zeile in deine MCP-Client-Konfiguration ein. Starte den Client neu und die Tools erscheinen. Klicke auf derselben Seite vor dem ersten Seitenlesen auf Grant Site Access, da Umbra bei der Installation keinen Site-Zugriff anfordert.
Die Installation ist ein Checkout aus dem öffentlichen Repository. Nach dem obigen Klon erzeugt node mcp-server/cli.js pair den Schlüssel, schreibt ihn nach ~/.umbra/shared-key und gibt den Client-Konfigurationsblock aus. Der öffentliche Checkout enthält keine optionalen lokalen Plugins.
Tool-Oberfläche
Sitzung und Tabs
browser_create_tab, browser_list_tabs, browser_switch_tab, browser_close_tab, browser_close_session_tabs, browser_freeze_session_tabs, browser_group_tabs, browser_cleanup_groups, browser_mark_debug_group, browser_tabs_context, browser_get_session_status, browser_get_bridge_pressure
Übernahme bereits geöffneter Tabs
browser_find_tabs, browser_adopt_tab, browser_find_groups, browser_adopt_group
Navigation
browser_navigate, browser_navigate_back, browser_navigate_forward, browser_wait, browser_resize
Lesen
browser_get_page_content, browser_read_page, browser_read_interactive, browser_find, browser_get_technical_snapshot, browser_screenshot, browser_console_messages
Interaktion
browser_click, browser_click_text, browser_type, browser_fill, browser_form_input, browser_select_option, browser_hover, browser_press_key, browser_shortcut, browser_scroll, browser_file_upload
Zusammengesetzte Aktionen, die Roundtrips sparen
browser_batch, browser_wait_click_read, browser_navigate_wait_read, browser_click_wait_selector_read
Escape-Hatches
browser_javascript, browser_run_page_action, browser_wait_for_download
browser_reload_extension existiert nur für entpackte Entwicklerinstallationen. Es wird angezeigt, wenn UMBRA_ALLOW_EXTENSION_RELOAD=1 gesetzt ist, und Store-Installationen lehnen es ab. Der Reload-Button auf der Optionsseite deckt denselben Arbeitsablauf ab, ohne ein sitzungsübergreifendes Tool bereitzustellen.
Die obige Liste ist die gesamte Oberfläche jedes veröffentlichten Builds. Ein Checkout kann optionale lokale Page-Rezept-Plugins enthalten, die nicht Teil eines veröffentlichten Builds sind: ein Modul in mcp-server/plugins/ zusammen mit einem Page-Rezept in extension/recipes/. Beide Ordner sind unversioniert und unveröffentlicht, und ein Plugin fügt seine eigenen Tools und seine eigenen browser_run_page_action-Werte nur in der Installation hinzu, die es enthält.
Hinweise, die du kennen solltest, bevor du diese aufrufst:
browser_get_page_contentist standardmäßig auf nur Text eingestellt und unterstützt Selektor-Eingrenzung sowie einmaxChars-Limit. ÜbergibincludeImages: truenur, wenn du die Auflistung der sichtbaren Bilder benötigst.browser_batchführt einen begrenzten Arbeitsablauf aus create, navigate, wait, read, click, fill, press, scroll, close in einem einzigen MCP-Aufruf aus. Untergeordnete Parameter können frühere Ergebnisse referenzieren mit{"$ref":"prev.tabId"}für den letzten erfolgreichen Schritt,{"$ref":"0.tabId"}für einen Schritt per Index oder{"$ref":"create.tabId"}, wenn der frühere Aufruflabel: "create"gesetzt hat.browser_read_interactivegibt eine kompakte Liste sichtbarer Steuerelemente mit kurzlebigen Referenzen zurück, die an die aktuelle DOM-Version gebunden sind.browser_click,browser_fill,browser_scrollundbrowser_screenshotakzeptieren diese Referenzen; eine veraltete Referenz gibt einen Fehler zurück, der den Aufrufer auffordert, erneut zu lesen.browser_get_bridge_pressuremeldet den Druck einer Sitzung: die Anzahl der von ihr besessenen Tabs und eine Stichprobe dieser Tabs, die Anzahl verbundener Listener und die Tiefe der Content-Agent-Warteschlange. Es räumt auch Inhaberschaftsdatensätze für Tabs ab, die nicht mehr existieren, ist also nicht rein lesend.browser_freeze_session_tabsverwirft besessene inaktive Tabs mitchrome.tabs.discard, um Renderer-Speicher freizugeben. Standardmäßig istdryRun: truegesetzt, und es zielt nie auf einen Tab, der einer anderen Sitzung gehört.browser_run_page_actionführt vordefinierte, benannte Seitenaktionen aus und gibt JSON-sichere Ausgabe zurück. Es ist kein Tool für beliebige Skripte; das istbrowser_javascript, und es läuft über den Debugger auf dem besessenen Tab.
Wie es zusammenpasst
Dein MCP-Client spricht über stdio mit dem lokalen Server.
Der Server registriert eine Sitzung, entweder direkt auf einem Loopback-Bridge-Listener oder über den Rust-Broker.
Das Offscreen-Dokument der Chrome-Erweiterung hält den WebSocket und hält ihn über Service-Worker-Neustarts hinweg am Leben.
Die Erweiterung authentifiziert jede Verbindung mit einer HMAC-Herausforderung über den gemeinsamen Schlüssel plus sitzungsspezifische Nonces.
Der Background-Service-Worker weist jeder Sitzung ihre eigene Tab-Gruppe zu und prüft die Inhaberschaft vor jedem Chrome-Aufruf.
Es gibt zwei Transporte. Der Rust-Broker ist die Standardeinstellung des Launchers: eine Erweiterungs-WebSocket, viele leichtgewichtige MCP-Shims, die dahinter Sitzungen über einen lokalen Unix-Socket registrieren, wobei der Broker Routing, Authentifizierung, Druckzähler und Anfragebereinigung übernimmt. Der Legacy-Modus gibt jeder Sitzung einen eigenen Loopback-Listener und ist mit UMBRA_BROKER_MODE=legacy nur eine Einstellung entfernt. In beiden Fällen ist die Erweiterung das Einzige, das eine Chrome-API berührt.
Nebenläufigkeit und Inhaberschaft
Ein Chrome-Profil hostet viele Sitzungen gleichzeitig.
Jede Sitzung erhält eine Sitzungs-ID, eine benannte cyanfarbene Chrome-Tab-Gruppe und ihre eigene Sicht auf den Browser.
Öffnen, Navigieren und DOM-Interaktion verwenden standardmäßig inaktive Tabs, sodass Routinearbeit Chrome nie in den Vordergrund holt. Übergib
activate: true, wenn du tatsächlich Fokus benötigst.Umbra merkt sich ein dediziertes Chrome-Fenster für seine Tabs und leitet neue Sitzungs-Tabs dorthin. Es weigert sich, dieses Fenster wiederzuverwenden, solange es fokussiert ist, und fügt daher nie Tabs zu dem Fenster hinzu, in dem du arbeitest.
Die Navigation ist an der Erweiterungsgrenze auf Schemata begrenzt:
http:,https:,file:undabout:blanksind erlaubt, und riskante Schemata wiejavascript:unddata:werden abgelehnt, bevor Chrome sie sieht.Bei Abschluss der Aufgabe sollte der Agent
browser_close_session_tabsaufrufen, das die gesamte besessene Gruppe schließt. Es schließt ein ganzes Fenster nur, wenn jeder Tab in diesem Fenster zur Sitzung gehört, sodass nicht besessene leere Tabs überleben.Ein sauberes Herunterfahren des Servers führt standardmäßig dieselbe Bereinigung durch. Setze
UMBRA_KEEP_TABS_OPEN=1oderUMBRA_CLOSE_ON_SHUTDOWN=0, wenn ein Lauf Tabs zur Überprüfung offen lassen soll.Der Standard-Portbereich ist
47821-47852, was breit genug ist, dass gewöhnliche Multi-Agent-Arbeit nie ohne Platz dasteht. Die Erweiterung begrenzt einen konfigurierten Port auf1024-65535; setze denselben Bereich auf beiden Seiten.
Was Umbra nicht tut
Cookies ausgeben oder synchronisieren
Tokens extrahieren
Speicher-Lesen und -Schreiben als Tools bereitstellen
im Hintergrund im Auftrag einer Seite abrufen
CAPTCHAs lösen
Lesezeichen, Verlauf oder Zwischenablage anfassen
Native Messaging verwenden
irgendetwas automatisch aktualisieren, automatisch pullen oder automatisch installieren
Bekannte Einschränkungen
Standard-Screenshots aktivieren den von der Sitzung besessenen Tab vor der Aufnahme.
silent: truevermeidet das, indemchrome.debuggerfür einPage.captureScreenshotan den besessenen Tab angehängt wird, wodurch Chrome sein Automatisierungsbanner anzeigt.Site-Zugriff ist eine optionale Berechtigung, die über den Grant-Site-Access-Button auf der Optionsseite angefordert wird, nicht bei der Installation. Bis sie gewährt wird, schlagen Seitenlesungen und Screenshots mit Chromes eigenem Berechtigungsfehler fehl, da Chrome für die programmatische Erfassung sichtbarer Tabs eine explizite breite Host-Berechtigung benötigt.
docs/permissions.mdbegründet jede Berechtigung, die die Erweiterung deklariert.Der Abschluss von Downloads wird durch Beobachten des Dateisystems erkannt, da die Erweiterung nicht die
downloads-Berechtigung von Chrome anfordert. RichteUMBRA_DOWNLOAD_DIRauf den Download-Ordner deines Browsers, falls du ihn verschoben hast.browser_read_interactiveist bewusst kompakt. Umbra stellt keinen vollständigen Accessibility-Tree-Dump bereit.Generische Textklicks können bei dichten App-Oberflächen wie Suchpaginierung das falsche Steuerelement treffen. Verwende
browser_read_interactivemit Referenzen oderbrowser_run_page_actionmitinspect_controlsund dannclick_control, anstatt zu raten.Eine Änderung des Portbereichs erfordert ein Neuladen auf beiden Seiten: Starte den MCP-Client neu, damit neue Serverprozesse die Umgebung erben, und lade die entpackte Erweiterung neu, damit der persistierte Erweiterungsspeicher normalisiert wird.
Aufbau
extension/– MV3-Erweiterung: Background-Worker, Offscreen-Bridge, Content-Agent, Optionsseite, Popupextension/recipes/– optionale seitenbezogene Page-Rezepte, bei Bedarf injiziert und im veröffentlichten Paket nicht enthaltenmcp-server/– Stdio-MCP-Server, Loopback-Bridge, Rust-Broker-Shim-Client und die lokale Entwicklungsumgebungrust-broker/– Tokio-Broker-Laufzeit, die Sitzungen über eine einzige Erweiterungs-WebSocket multiplexierttests/– Abdeckung für Authentifizierung, Inhaberschaft, Sitzungsisolierung, Erweiterungslebenszyklus und Paketierungscripts/– isolierter Chrome-Testprofil-Launcher und Smoke-Test-Wrapperlaunchd/– Vorlage für den optionalen macOS-Job, der den Broker am Laufen hältdocs/– Installations-, Architektur-, Berechtigungs- und Smoke-Test-Hinweise
Dokumentation
docs/install.md– Einrichtung vom Klon bis zu einer verbundenen Sitzung, plus jede Umgebungsvariabledocs/architecture.md– Komponenten, Ablauf und die Begründung für die Aufteilung in Offscreen und Backgrounddocs/permissions.md– jede Chrome-Berechtigung mit ihrem Risiko und ihrer Gegenmaßnahmedocs/smoke-test.md– automatisierte und manuelle Verifikationspfadedocs/performance/performance-work.md– was der Performance-Durchgang geändert hat und was er gemessen hatMCP_PROTOCOL.md– das Drahtprotokoll zwischen Erweiterung und ServerTHREAT_MODEL.md– Assets, Vertrauensgrenzen, Angreifer und GegenmaßnahmenSECURITY_REVIEW.md– Review-Haltung, die Behalten-Entfernen-Matrix und Ergebnisse des Upstream-Auditsrust-broker/README.md– Broker-Umfang und wie man ihn ausführtrust-broker/LEGACY_FALLBACK.md– Rollback-Auslöser und die Form des Übergangs
Lies THREAT_MODEL.md und SECURITY_REVIEW.md, bevor du dies auf einen Browser richtest, der etwas enthält, das dir wichtig ist.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to control and automate your Chrome browser directly, leveraging existing login states and configurations for tasks like content analysis, semantic search across tabs, screenshots, network monitoring, and interactive operations.10MIT
- AlicenseNot gradedqualityCmaintenanceLets AI assistants control your real Chrome browser to perform web tasks like reading pages, taking screenshots, clicking, and typing, using your existing logged-in sessions.131MIT
- AlicenseBqualityAmaintenanceControls a real Chrome browser for AI agents, enabling authenticated automation with parallel lanes, token-efficient page reads, and robust recovery mechanisms.1002,122232MIT
- AlicenseAqualityDmaintenanceEnables AI agents to control the user's Chrome or Firefox browser, leveraging existing sessions for tasks requiring authentication and user handoff.181715MIT
Related MCP Connectors
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
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/RobertJLora/umbra'
If you have feedback or need assistance with the MCP directory API, please join our Discord server