SeleniumBase MCP Server
OfficialSeleniumBase MCP Server
Macht SeleniumBase-Browserautomatisierung als Tools über das Model Context Protocol verfügbar, sodass jeder MCP-Client (Claude Desktop, Claude Code, etc.) einen echten Browser steuern kann.
In diesem Ordner gibt es drei Server-Varianten:
Datei | Basis | Am besten geeignet für |
|
| Scraping/Automatisierung gegen Botschutz (Cloudflare, usw.). Ganz ohne WebDriver. Inklusive CAPTCHA-Lösung. |
|
| Allgemeine Automatisierung mit Unterstützung des Selenium-Ökosystems. |
|
| Die breiteste API-Oberfläche: Alles, was |
Alle drei verwenden standardmäßig headless=False — das Browserfenster ist
sichtbar, es sei denn, du übergibst headless=True beim Start einer Sitzung.
Richte deine MCP-Client-Konfiguration auf das passende *_server.py aus
(siehe Schritt 3 unten) — oder registriere alle drei unter verschiedenen Namen.
1. Installation
(Erfordert Python 3.10+ und uv)
git clone https://github.com/seleniumbase/seleniumbase-mcp.git
cd seleniumbase-mcp
uv syncuv sync liest pyproject.toml, erstellt einen .venv/-Ordner in diesem Verzeichnis und
installiert die beiden Abhängigkeiten (mcp[cli], seleniumbase) zusammen mit
diesem Projekt selbst — was über [project.scripts] drei Console-Script-Befehle registriert:
seleniumbase-driverseleniumbase-cdpseleniumbase-sb
Jeder davon ruft lediglich die main()-Funktion der jeweiligen Server-Datei auf
(mcp.run(transport="stdio")). Deshalb funktioniert uv run <name> — ohne
Python-Pfad, ohne Venv-Pfad, ohne Skript-Pfad — als Befehl für den MCP-Client
in den Schritten 3 und 4 weiter unten.
# SeleniumBase's Driver() and SB() formats need a browser driver downloaded:
uv run seleniumbase get chromedriver
# (Not needed for the "seleniumbase-cdp" Pure CDP Mode MCP Server,
# which doesn't use WebDriver at all.)(Kein uv? Ein normales python3 -m venv venv && pip install -e . funktioniert auch —
ersetze dann einfach uv run <name> durch python <skript>.py und verwende in deiner
MCP-Client-Konfiguration absolute Pfade zu bin/python und den Skripten anstelle der
pfadlosen Optionen.)
Related MCP server: gotham-browser
2. Eigenständig testen (optionaler Sanity-Check)
uv run mcp dev cdp_server.pyDas öffnet den MCP Inspector für den „Pure CDP Mode" von SeleniumBase, wo du die Tools testen kannst. Ctrl+C zum Beenden. Der eigentliche Test ist die Anbindung im nächsten Schritt.
3. Mit Claude Desktop verbinden
Claude Desktop läuft nicht aus einem bestimmten Projektverzeichnis heraus wie Claude Code,
daher findet ein nacktes uv run <name> dieses Repository nicht unbedingt. Zwei
Möglichkeiten für eine stabile Konfiguration:
Option A — global installieren (empfohlen, null Pfade überall):
uv tool install . # from inside the repo, installs the 3 commands globallyDas legt seleniumbase-driver/seleniumbase-cdp/seleniumbase-sb dauerhaft auf
deinen PATH (falls uv tool ensurepath eine Warnung ausgibt, dass das bin-Verzeichnis
nicht auf dem PATH liegt, einmal ausführen). Danach kann claude_desktop_config.json
so aussehen:
{
"mcpServers": {
"seleniumbase-cdp": { "command": "seleniumbase-cdp" },
"seleniumbase-driver": { "command": "seleniumbase-driver" },
"seleniumbase-sb": { "command": "seleniumbase-sb" }
}
}Option B — uv direkt auf das Repo zeigen lassen (ein absoluter Pfad, aber kein aufzuspürender Venv-/Interpreter-Pfad und kein separater Installationsschritt):
{
"mcpServers": {
"seleniumbase-cdp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-cdp"]
},
"seleniumbase-driver": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-driver"]
},
"seleniumbase-sb": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-sb"]
}
}
}Der Speicherort von claude_desktop_config.json hängt vom Betriebssystem ab:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Starte Claude Desktop neu. Du solltest ein 🔨-Symbol sehen, das anzeigt, dass der/die
Server verbunden sind, mit Tools wie start_browser, navigate, click usw.
Behalte nur die Einträge, die du tatsächlich brauchst — drei getrennte Server
sind viel, wenn du nur einen benötigst.
4. Mit Claude Code verbinden
Das .mcp.json in diesem Repo ist eingecheckt und sofort einsatzbereit —
uv run <name> findet bei claude aus diesem Verzeichnis heraus automatisch die
Projektkonfiguration in pyproject.toml:
{
"mcpServers": {
"seleniumbase-cdp": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-cdp"]
},
"seleniumbase-driver": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-driver"]
},
"seleniumbase-sb": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-sb"]
}
}
}Claude Code lädt .mcp.json automatisch, wenn du claude aus diesem Repository heraus
startest — identisch für jedes Teammitglied, ohne maschinenspezifische Anpassungen.
Wenn du dich nicht auf .mcp.json verlassen möchtest, kannst du den Server auch explizit registrieren:
claude mcp add seleniumbase-cdp -- uv run seleniumbase-cdp
claude mcp add seleniumbase-driver -- uv run seleniumbase-driver
claude mcp add seleniumbase-sb -- uv run seleniumbase-sbWerkzeuge (driver_server.py)
Datei/Tool | Beschreibung |
| Startet eine Browser-Sitzung (headless optional) |
| Navigiert zu einer URL |
| Klickt auf ein Element |
| Gibt Text in ein Eingabefeld ein |
| Liest den sichtbaren Text eines Elements |
| Speichert einen Screenshot der aktuellen Seite |
| Führt ein JavaScript-Snippet aus |
(Weitere Tools siehe unten: driver_server.py und sb_server.py decken den Großteil der SeleniumBase-API ab.)
{
"mcpServers": {
"seleniumbase-cdp": { "command": "seleniumbase-cdp" },
"seleniumbase-driver": { "command": "seleniumbase-driver" },
"seleniumbase-sb": { "command": "seleniumbase-sb" }
}
}Die Datei claude_desktop_config.json befindet sich je nach System an folgenden Orten:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Starte Claude Desktop neu. Du solltest ein 🔨-Werkzeugsymbol sehen, das anzeigt,
dass der Server verbunden ist, mit Tools wie start_browser, navigate, click
usw. Behalte nur die Einträge, die du wirklich brauchst — drei Server sind viel,
wenn du nur einen brauchst.
Option B: uv direkt auf das Repo zeigen lassen (ein absoluter Pfad, aber kein Venv-/Interpreter-Pfad zum Aufspüren, und kein separater Installationsschritt):
{
"mcpServers": {
"seleniumbase-cdp": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-cdp"]
},
"seleniumbase-driver": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-driver"]
},
"seleniumbase-sb": {
"command": "uv",
"args": ["--directory", "/absolute/path/to/seleniumbase-mcp", "run", "seleniumbase-sb"]
}
}
}Der Speicherort von claude_desktop_config.json hängt vom Betriebssystem ab:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Starte Claude Desktop neu. Es sollte eine 🔨-Anzeige erscheinen, dass der/die Server verbunden sind, mit Tools wie start_browser, navigate, click usw. Behalte nur die Einträge, die du wirklich brauchst — drei verschiedene Automatisierungs-Server ist eine Menge, wenn du nur einen brauchst.
4. Mit Claude Code verwenden
Richte .mcp.json so ein, dass es auf dieses Repository verweist:
claude mcp add seleniumbase-cdp -- uv run seleniumbase-cdp
claude mcp add seleniumbase-driver -- uv run seleniumbase-driver
claude mcp add seleniumbase-sb -- uv run seleniumbase-sb(führe claude im Stammverzeichnis dieses Repositorys aus, damit uv run <name> die lokale pyproject.toml findet.)
{
"mcpServers": {
"seleniumbase-cdp": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-cdp"]
},
"seleniumbase-driver": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-driver"]
},
"seleniumbase-sb": {
"type": "stdio",
"command": "uv",
"args": ["run", "seleniumbase-sb"]
}
}
}Claude Code liest beim Start automatisch das .mcp.json aus dem aktuellen Verzeichnis, sodass die Tools sofort verfügbar sind, wenn du claude aus diesem Projektordner startest. Für ein Team, das das Repository klont, genügt die mitgelieferte .mcp.json – alle erhalten dieselben MCP-Server.
Verfügbare Tools (Beispiele)
Die vollständige, aktuelle Liste findest du in den Docstrings der Tools in jeder *_server.py-Datei. Einige wichtige Beispiele:
Tool | Beschreibung |
| Startet eine Browser-Sitzung |
| Öffnet eine URL |
| Klickt ein Element (CSS oder XPath) |
| Gibt Text in ein Feld ein |
| Liest sichtbaren Text |
| Speichert einen Screenshot |
| Führt JavaScript aus |
Wichtig: Die Sitzung ist global — ein Tool-Aufruf startet den Browser,
alle weiteren Tools arbeiten in derselben Sitzung weiter, bis close_browser
aufgerufen wird.
Migrationshinweise / bekannte Limitierungen
Die MCP-Tools sind synchron — bei langlaufenden Aufrufen (
wait,solve_captcha) hängt der MCP-Prozess. Für produktive/parallele Nutzung müsstest du sie asynchron ausführen (z. B. überasyncio.to_thread).Alle Server teilen sich eine einzige globale Sitzung: Wenn du mehrere Tabs/Profile parallel brauchst, musst du die Server mehrmals mit unterschiedlichen Namen registrieren.
sb_server.pyerwartet, dass dieSB()-Instanz manuell betreten und verlassen wird (nicht mitwith). Das ist beabsichtigt — es erlaubt den Wechsel in den CDP-Modus mitten im Ablauf und macht die Tool-Schnittstelle für MCP sauber. Der Server ruftSB().__enter__()beim ersten Tool-Aufruf auf und__exit__()beiend_session.
cdp_server.py — Pure CDP Mode
Kapselt seleniumbase.sb_cdp.Chrome, den heimlichsten Modus von SeleniumBase:
Der Browser wird vollständig über das Chrome DevTools Protocol gesteuert, ganz ohne
WebDriver. Referenz: cdp_mode_methods.md.
Tool-Gruppen
Gruppe | Beispiele |
Sitzung |
|
Navigation |
|
Suchen & Lesen |
|
Interaktion |
|
Warten |
|
Assertions |
|
Cookies & Storage |
|
Tabs & Fenster |
|
Screenshots & PDF |
|
JavaScript |
|
Sonstiges |
|
Design-Hinweise / Erläuterungen
Eine einzige globale Sitzung. Das entspricht dem typischen MCP-Muster (ein Prozess pro Client-Verbindung) und hält die Server einfach. Für mehrere parallele Browser könntest du ein Dict von Sitzungen verwalten und jede
*_server.py-Datei um einen Sitzungs-Parameter erweitern.Client-triggerte Zustandsänderungen. Wrapper wie
start_browser,navigate,clicketc. rufen die jeweiligen SeleniumBase-Methoden auf. DieSB()-Kontextmanager-Äquivalente werden manuell aufgerufen, damit eine einzelne Sitzung über mehrere Tool-Aufrufe hinweg bestehen bleibt.Keine automatische Implizit-Wartezeit. Wartezeiten sind explizit über die
*wait*-Tools. SeleniumBase kann optional automatische Waits aktivieren (uc_connect_and_manage/uc), aber das bleibt dir überlassen.Headless/undetected: Für undetected Modus
uc_connect_and_manageanstelle vonChromeverwenden (siehe Doku).headless=Truewird unterstützt, kann aber von Bot-Erkennungsseiten erkannt werden.Kein SeleniumBase-
with-Block erforderlich.self.sbist eine Live-Instanz; alle Aktionen werden sofort ausgeführt, und die Sitzung bleibt bisclose_browserbestehen.
3. Client-Konfiguration (Claude Desktop, Claude Code, curl …)
Da jeder Server hier über stdio (JSON-RPC) spricht, kannst du jeden MCP-fähigen Client
mit einem mcpServers-Eintrag anbinden. Der Befehl muss uv run + den jeweiligen
Serverpfad nutzen, damit das Projekt-Setup (.venv, Abhängigkeiten) verwendet wird.
Beispiel für Claude Desktop (claude_desktop_config.json)
claude mcp add seleniumbase-cdp -- uv run seleniumbase-cdp
claude mcp add seleniumbase-driver -- uv run seleniumbase-driver
claude mcp add seleniumbase-sb -- uv run seleniumbase-sbBeispiel für Claude Code (claude mcp add)
with SB(uc=True) as sb:
sb.goto(...)Rohes JSON (z. B. für generische Clients)
sb_context = SB(**kwargs)
sb = sb_context.__enter__() # in start_browser
...
sb_context.__exit__(None, None, None) # in close_browser4. Verfügbare Tools (MCP)
Das hier ist die serverseitige MCP-Tool-Liste für alle drei Server, da die Methodensignaturen weitgehend identisch sind. Der tatsächliche Umfang hängt vom gewählten Dienst ab.
Tool | Beschreibung |
| Startet eine Browserinstanz (Chrome/SB). Parameter: |
| Öffnet eine URL im aktiven Tab. |
| Gibt den aktuellen Seitenquellcode als Text zurück. |
| Aktuelle URL abrufen. |
| Aktuellen Seitentitel abrufen. |
| Browser-Verlauf zurück/vor. |
| Seite neu laden. |
| Elemente per CSS-Selektor finden; returns Liste mit |
| Element per CSS/XPath klicken. |
| Text in ein Feld eingeben (ersetzt vorhandenen Inhalt). |
| Feld leeren. |
| Dropdown-Option auswählen. |
| Sichtbaren Text eines Elements holen. |
| Attributwert eines Elements holen. |
| Prüft, ob ein Element sichtbar ist. |
| Warten auf Element, Text oder Bedingung mit Timeout. |
| Screenshot des aktuellen Viewports speichern. |
| Beliebigen JavaScript-Code ausführen. |
| Browsersitzung beenden. |
4. Sicherheitshinweise (wichtig)
⚠️ Dieses Paket erlaubt die Ausführung von beliebigem JavaScript und WebDriver-Befehlen. Es ist ein Werkzeug für automatisierte Tests und Web-Scraping und sollte nicht als vertrauenswürdige Sandbox betrachtet werden.
Die Tools akzeptieren direkt Selektoren, Skripte und URLs. Wenn du das über eine öffentlich zugängliche API bereitstellst, validiere und beschränke die Eingaben, um Missbrauch zu verhindern.
Installiere es nur in vertrauenswürdigen Umgebungen und nicht in kritischen Systemen.
5. Fehlerbehebung
Problem | Lösung |
„Command not found: seleniumbase“ | Stelle sicher, dass UV und die Projektabhängigkeiten korrekt installiert sind ( |
„Driver not found“ | SeleniumBase lädt den passenden Treiber automatisch herunter; bei Netzwerkproblemen manuell installieren. |
Browserfenster erscheint nicht | Prüfe, ob |
| Verwende |
MCP-Verbindungsfehler | Logs in Claude Desktop anzeigen (Menü → „Entwickler“ → „Logs“). |
Keine Tools sichtbar | Stelle sicher, dass der Server ohne Fehler startet ( |
CDP-Modus nutzen (wichtig für Bot-Schutz)
self.sb.activate_cdp_mode(url) wechselt von Standard-WebDriver auf den CDP-Modus.
Das ist nützlich, wenn eine Website Bot-Erkennung einsetzt, die normales WebDriver blockiert.
with SB(uc=True) as sb:
sb.goto(...)Beispiel-Claude-Desktop-Konfiguration (alle drei Server)
sb_context = SB(**kwargs)
sb = sb_context.__enter__() # in start_browser
...
sb_context.__exit__(None, None, None) # in close_browserElemente werden nicht als Handles über die Leitung geschickt. Im nativen CDP-Modus gibt
find_element()ein Live-Objekt mit eigenen Methoden zurück (el.click(),el.get_html(), ...). MCP-Tools können nur JSON-serialisierbare Daten zurückgeben, daher lösenfind_element_info/find_all_infodas Element sofort in ein einfaches Dict auf (tag_name,text,html), anstatt ein Handle zurückzugeben, auf dem du weitere Methoden aufrufen könntest. Wenn du auf eines von mehreren Treffern reagieren musst, verwendeclick_nth_element(agiert nach Position) anstatt „finden, dann klicken“ als zwei getrennte Schritte.Captcha-Lösung ist nicht universell.
solve_captchabehandelt unterstützte Challenge-Typen (z. B. Cloudflare Turnstile in der SeleniumBase-Demo-App); es ist kein garantierter Bypass für beliebige CAPTCHAs.Session-Teardown.
sb.quit()(verwendet vonclose_browser) ist der dokumentierte Weg, eine Sitzung zu beenden; der Browser schließt sich auch automatisch, wenn der Prozess ohne ihn beendet wird.Nicht umfasst: PyAutoGUI-basierte
gui_*-Methoden (bewusst ausgeschlossen – siehe die Design-Hinweise auf oberster Ebene), Low-Level-Interna (get_websocket_url,add_handler, Berechtigungserteilungen, rohesget_document/get_flattened_document) und exakte Methoden-Aliasse (open/gotovs.get) wurden weggelassen, um die Tool-Liste fokussiert zu halten – füge sie auf die gleiche Weise wie jedes andere Tool hinzu, wenn du sie benötigst.
sb_server.py — SB() ohne die with-Anweisung
Umschließt seleniumbase.SB(), normalerweise als Kontextmanager verwendet:
with SB(uc=True) as sb:
sb.goto(...)Die Tool-Aufrufe eines MCP-Servers erfolgen einzeln über separate Funktionsaufrufe – es gibt keinen einzelnen eingerückten Block, um with darum zu legen – daher ruft dieser Server das Kontextmanager-Protokoll stattdessen manuell auf:
sb_context = SB(**kwargs)
sb = sb_context.__enter__() # in start_browser
...
sb_context.__exit__(None, None, None) # in close_browsersb ist eine BaseCase-Instanz, die breiteste API von SeleniumBase – eine Obermenge dessen, was Driver (in driver_server.py) bereitstellt, plus UC-Mode-Stealth-Helfer und ein paar Extras, die driver_server.py/cdp_server.py nicht haben. Dieser Server konzentriert sich auf diese Extras, anstatt alles bereits Abgedeckte erneut zu umschließen:
Gruppe | Werkzeuge |
UC/CDP-Stealth |
|
Zusätzliche Interaktionen |
|
MFA |
|
Dateien |
|
Website-Gesundheit |
|
Visuelles Feedback |
|
Plus die gleichen Kernwerkzeuge für Navigation/Interaktion/Warten/Assertions/Cookies/Scrollen/Tabs/Ausgabe wie die anderen beiden Server, aufgerufen über die BaseCase-Methodennamen (z. B. sb.goto, sb.click, sb.assert_element) statt über die von Driver oder CDP.
SB()-spezifische Design-Hinweise
UC-Modus (Stealth-Modus) erfordert
uc=Truebeim Start. Übergib es vorab instart_browser, falls du es benötigst.activate_cdp_modestartet keine neue Sitzung. Es wechselt den zugrunde liegenden Modus der bestehendensb-Sitzung für nachfolgende Aktionen zu Pure CDP – es ist eine Eskalation mitten im Ablauf, kein neuer Browser.
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 gradedqualityDmaintenanceEnables browser automation through MCP clients like Claude or Cursor, using the client's existing LLM without requiring an additional API key.Apache 2.0
- FlicenseNot gradedqualityBmaintenanceEnables Claude Code to control a real browser using AI for web scraping, competitive intelligence, and UX auditing through the MCP protocol.
- AlicenseNot gradedqualityBmaintenanceEnables Claude to perform stealth browser automation with anti-detection, including navigation, clicking, typing, screenshots, and network monitoring via an MCP server.MIT
- AlicenseBqualityCmaintenanceProvides undetectable browser automation for LLM agents via MCP, enabling real Chrome interaction with stealth features, DOM accessibility, and DevTools integration.983MIT
Related MCP Connectors
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Browser MCP for logged-in tasks. Uses your Chrome — credentials stay local. Zero-token replay.
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/seleniumbase/seleniumbase-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server