Playwright MCP

offiziell

Offizieller Playwright MCP-Server für Browserautomatisierung, Seiteninspektion, Screenshots und Webinteraktion von Claude, Cursor und anderen KI-Agenten.

Was kann man mit Playwright MCP machen?

  • Navigieren und Interagieren mit Webseiten — bitten Sie den Assistenten, eine URL zu öffnen, Elemente anzuklicken, Formulare auszufüllen oder strukturierte Barrierefreiheits-Snapshots mit Playwrights Browser-Automatisierung zu extrahieren.
  • Browserverhalten konfigurieren — legen Sie den Browsertyp, die Viewport-Größe, die Geräteemulation oder den User-Agent über die Argumente --browser, --device, --viewport-size und --user-agent fest.
  • Sitzungen und Authentifizierung verwalten — verwenden Sie persistente Profile (--user-data-dir), isolierte Sitzungen (--isolated) oder Speicherzustandsdateien (--storage-state), um den Anmeldestatus über mehrere Durchläufe hinweg zu steuern.
  • Mit einem vorhandenen Browser verbinden — verbinden Sie sich mit einer laufenden Chrome- oder Edge-Instanz über das Flag --extension, um angemeldete Sitzungen ohne erneute Authentifizierung wiederzuverwenden.
  • Ausgabe und Snapshots steuern — erfassen Sie Konsolenmeldungen, Netzwerkprotokolle und Barrierefreiheits-Snapshots in Dateien oder auf der Standardausgabe (stdout) mit --output-dir, --output-mode und --snapshot-mode.

Dokumentation

Playwright MCP

Ein Model Context Protocol (MCP)-Server, der Browserautomatisierungsfunktionen mit Playwright bereitstellt. Dieser Server ermöglicht es LLMs, über strukturierte Accessibility-Snapshots mit Webseiten zu interagieren, wodurch Screenshots oder visuell abgestimmte Modelle überflüssig werden.

Playwright MCP vs. Playwright CLI

Dieses Paket bietet eine MCP-Schnittstelle zu Playwright. Wenn Sie einen Coding-Agenten verwenden, könnten Sie stattdessen von der Nutzung der CLI+SKILLS profitieren.

  • CLI: Moderne Coding-Agenten bevorzugen zunehmend CLI-basierte Workflows, die als SKILLs bereitgestellt werden, gegenüber MCP, da CLI-Aufrufe token-effizienter sind: Sie vermeiden das Laden großer Tool-Schemata und ausführlicher Accessibility-Bäume in den Modellkontext und ermöglichen es Agenten, durch prägnante, zweckgebundene Befehle zu handeln. Dies macht CLI + SKILLS besser geeignet für Coding-Agenten mit hohem Durchsatz, die Browserautomatisierung mit großen Codebasen, Tests und Schlussfolgerungen innerhalb begrenzter Kontextfenster ausbalancieren müssen.
    Erfahren Sie mehr über Playwright CLI mit SKILLS.

  • MCP: MCP bleibt relevant für spezialisierte agentische Schleifen, die von persistentem Zustand, umfassender Introspektion und iterativem Schlussfolgern über die Seitenstruktur profitieren, wie z. B. explorative Automatisierung, selbstheilende Tests oder lang laufende autonome Workflows, bei denen die Aufrechterhaltung eines kontinuierlichen Browserkontexts die Token-Kostenbedenken überwiegt.

Hauptfunktionen

  • Schnell und leichtgewichtig. Verwendet den Accessibility-Baum von Playwright, nicht pixelbasierte Eingaben.
  • LLM-freundlich. Keine Vision-Modelle erforderlich, arbeitet ausschließlich mit strukturierten Daten.
  • Deterministische Tool-Anwendung. Vermeidet Mehrdeutigkeiten, die bei screenshotbasierten Ansätzen üblich sind.

Anforderungen

  • Node.js 18 oder neuer
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie oder ein anderer MCP-Client

Erste Schritte

Installieren Sie zunächst den Playwright MCP-Server mit Ihrem Client.

Standardkonfiguration funktioniert in den meisten Tools:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Install in VS Code Install in VS Code Insiders

Amp

Fügen Sie ihn über den Einstellungsbildschirm der Amp VS Code-Erweiterung oder durch Aktualisieren Ihrer settings.json-Datei hinzu:

"amp.mcpServers": {
  "playwright": {
    "command": "npx",
    "args": [
      "@playwright/mcp@latest"
    ]
  }
}

Amp CLI-Setup:

Fügen Sie ihn mit dem folgenden Befehl amp mcp add hinzu

amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity

Fügen Sie ihn über die Antigravity-Einstellungen oder durch Aktualisieren Ihrer Konfigurationsdatei hinzu:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
Claude Code

Verwenden Sie die Claude Code CLI, um den Playwright MCP-Server hinzuzufügen:

claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop

Befolgen Sie die MCP-Installations-Anleitung und verwenden Sie die obige Standardkonfiguration.

Cline

Befolgen Sie die Anweisungen im Abschnitt Konfigurieren von MCP-Servern

Beispiel: Lokales Setup

Fügen Sie Folgendes zu Ihrer cline_mcp_settings.json-Datei hinzu:

{
  "mcpServers": {
    "playwright": {
      "type": "stdio",
      "command": "npx",
      "timeout": 30,
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ],
      "disabled": false
    }
  }
}
Codex

Verwenden Sie die Codex CLI, um den Playwright MCP-Server hinzuzufügen:

codex mcp add playwright npx "@playwright/mcp@latest"

Alternativ können Sie die Konfigurationsdatei ~/.codex/config.toml erstellen oder bearbeiten und Folgendes hinzufügen:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Weitere Informationen finden Sie in der Codex MCP-Dokumentation.

Copilot

Verwenden Sie die Copilot CLI, um den Playwright MCP-Server interaktiv hinzuzufügen:

/mcp add

Alternativ können Sie die Konfigurationsdatei ~/.copilot/mcp-config.json erstellen oder bearbeiten und Folgendes hinzufügen:

{
  "mcpServers": {
    "playwright": {
      "type": "local",
      "command": "npx",
      "tools": [
        "*"
      ],
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Weitere Informationen finden Sie in der Copilot CLI-Dokumentation.

Cursor

Klicken Sie auf die Schaltfläche, um zu installieren:

Install in Cursor

Oder manuell installieren:

Gehen Sie zu Cursor Settings -> MCP -> Add new MCP Server. Benennen Sie nach Belieben, verwenden Sie den Typ command mit dem Befehl npx @playwright/mcp@latest. Sie können die Konfiguration auch überprüfen oder befehlsähnliche Argumente hinzufügen, indem Sie auf Edit klicken.

Factory

Verwenden Sie die Factory CLI, um den Playwright MCP-Server hinzuzufügen:

droid mcp add playwright "npx @playwright/mcp@latest"

Alternativ geben Sie /mcp im Factory-Droid ein, um eine interaktive Benutzeroberfläche zum Verwalten von MCP-Servern zu öffnen.

Weitere Informationen finden Sie in der Factory MCP-Dokumentation.

Gemini CLI

Befolgen Sie die MCP-Installations-Anleitung und verwenden Sie die obige Standardkonfiguration.

Goose

Klicken Sie auf die Schaltfläche, um zu installieren:

Install in Goose

Oder manuell installieren:

Gehen Sie zu Advanced settings -> Extensions -> Add custom extension. Benennen Sie nach Belieben, verwenden Sie den Typ STDIO und setzen Sie command auf npx @playwright/mcp. Klicken Sie auf "Erweiterung hinzufügen".

Grok

Verwenden Sie die Grok CLI, um den Playwright MCP-Server hinzuzufügen:

grok mcp add playwright -- npx @playwright/mcp@latest

Alternativ können Sie die Konfigurationsdatei ~/.grok/config.toml erstellen oder bearbeiten und Folgendes hinzufügen:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Weitere Informationen finden Sie in der Grok MCP-Dokumentation.

Junie

So fügen Sie den Playwright MCP-Server in der Junie CLI hinzu:

  1. Geben Sie /mcp ein
  2. Drücken Sie Ctrl+A, um einen neuen MCP-Server hinzuzufügen
  3. Wählen Sie Playwright aus der Liste

Alternativ fügen Sie zu .junie/mcp/mcp.json hinzu:

{
  "mcpServers": {
    "Playwright": {
      "command": "npx",
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ]
    }
  }
}

Weitere Informationen finden Sie in der Junie MCP-Konfigurationsdokumentation.

Kiro

Add to Kiro

Befolgen Sie die MCP-Server-Dokumentation. Zum Beispiel in .kiro/settings/mcp.json:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
LM Studio

Klicken Sie auf die Schaltfläche, um zu installieren:

Add MCP Server playwright to LM Studio

Oder manuell installieren:

Gehen Sie zu Program in der rechten Seitenleiste -> Install -> Edit mcp.json. Verwenden Sie die obige Standardkonfiguration.

opencode

Befolgen Sie die MCP-Server-Dokumentation. Zum Beispiel in ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx",
        "@playwright/mcp@latest"
      ],
      "enabled": true
    }
  }
}

Qodo Gen

Öffnen Sie das Qodo Gen-Chat-Panel in VSCode oder IntelliJ → Weitere Tools verbinden → + Neues MCP hinzufügen → Fügen Sie die obige Standardkonfiguration ein.

Klicken Sie auf Speichern.

VS Code

Klicken Sie auf die Schaltfläche, um zu installieren:

Install in VS Code Install in VS Code Insiders

Oder manuell installieren:

Befolgen Sie die MCP-Installations-Anleitung und verwenden Sie die obige Standardkonfiguration. Sie können den Playwright MCP-Server auch mit der VS Code CLI installieren:

# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

Nach der Installation steht der Playwright MCP-Server zur Verwendung mit Ihrem GitHub Copilot-Agenten in VS Code zur Verfügung.

Warp

Gehen Sie zu Settings -> AI -> Manage MCP Servers -> + Add, um einen MCP-Server hinzuzufügen. Verwenden Sie die obige Standardkonfiguration.

Verwenden Sie alternativ den Slash-Befehl /add-mcp in der Warp-Eingabeaufforderung und fügen Sie die obige Standardkonfiguration ein:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
Windsurf

Befolgen Sie die Windsurf MCP-Dokumentation. Verwenden Sie die obige Standardkonfiguration.

Konfiguration

Der Playwright MCP-Server unterstützt die folgenden Argumente. Sie können in der obigen JSON-Konfiguration als Teil der "args"-Liste bereitgestellt werden:

OptionBeschreibung
--allowed-hosts <hosts...>Kommagetrennte Liste von Hosts, von denen dieser Server ausgeliefert werden darf. Standardmäßig der Host, an den der Server gebunden ist. Übergeben Sie '*', um die Host-Prüfung zu deaktivieren.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins Semikolongetrennte Liste VERTRAUENSWÜRDIGER Ursprünge, die der Browser anfordern darf. Standardmäßig sind alle erlaubt. Wichtig: Dient nicht als Sicherheitsgrenze und beeinflusst keine Weiterleitungen.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessErlaubt den Zugriff auf Dateien außerhalb der Arbeitsbereichs-Stammverzeichnisse. Erlaubt auch uneingeschränkten Zugriff auf file://-URLs. Standardmäßig ist der Zugriff auf das Dateisystem nur auf die Arbeitsbereichs-Stammverzeichnisse (oder das aktuelle Arbeitsverzeichnis, wenn keine Stammverzeichnisse konfiguriert sind) beschränkt und die Navigation zu file://-URLs wird blockiert.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins Semikolongetrennte Liste von Ursprüngen, die der Browser nicht anfordern darf. Die Blockierliste wird vor der Erlaubnisliste ausgewertet. Wenn sie ohne die Erlaubnisliste verwendet wird, sind Anfragen, die nicht der Blockierliste entsprechen, weiterhin erlaubt. Wichtig: Dient nicht als Sicherheitsgrenze und beeinflusst keine Weiterleitungen.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersBlockiert Service Worker.
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser Zu verwendender Browser oder Chrome-Kanal, mögliche Werte: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps Kommagetrennte Liste zusätzlicher zu aktivierender Fähigkeiten, mögliche Werte: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint CDP-Endpunkt, zu dem verbunden werden soll.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>CDP-Header, die mit der Verbindungsanfrage gesendet werden sollen, können mehrfach angegeben werden.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout Timeout in Millisekunden für die Verbindung zum CDP-Endpunkt, Standard ist 30000 ms.
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen Gibt die für die Codegenerierung zu verwendende Sprache an, mögliche Werte: "typescript", "none". Standard ist "typescript".
env PLAYWRIGHT_MCP_CODEGEN
--config Pfad zur Konfigurationsdatei.
env PLAYWRIGHT_MCP_CONFIG
--console-level Ebene der zurückzugebenden Konsolenmeldungen: "error", "warning", "info", "debug". Jede Ebene enthält die Meldungen der schwerwiegenderen Ebenen.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device Zu emulierendes Gerät, zum Beispiel: "iPhone 15".
env PLAYWRIGHT_MCP_DEVICE
--mobileEmuliert ein generisches mobiles Gerät (Pixel 10 für Chromium, iPhone 17 für WebKit). Mobile Seiten sind in der Regel leichter, was Token spart. Kann nicht mit --device kombiniert werden.
env PLAYWRIGHT_MCP_MOBILE
--executable-path Pfad zur ausführbaren Browser-Datei.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionVerbindet sich mit einer laufenden Browser-Instanz (nur Edge/Chrome). Erfordert die Installation der "Playwright Extension".
env PLAYWRIGHT_MCP_EXTENSION
--endpoint Gebundener Browser-Endpunkt, zu dem verbunden werden soll.
env PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>Liste der Berechtigungen, die dem Browser-Kontext gewährt werden sollen, zum Beispiel "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessFührt den Browser im Headless-Modus aus, standardmäßig mit sichtbarer Oberfläche.
env PLAYWRIGHT_MCP_HEADLESS
--host Host, an den der Server gebunden werden soll. Standard ist localhost. Verwenden Sie 0.0.0.0, um an alle Schnittstellen zu binden.
env PLAYWRIGHT_MCP_HOST
--ignore-https-errorsIgnoriert HTTPS-Fehler.
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>Pfad zu einer TypeScript-Datei, die auf dem Playwright-Seitenobjekt ausgewertet werden soll.
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>Pfad zu einer JavaScript-Datei, die als Initialisierungsskript hinzugefügt werden soll. Das Skript wird auf jeder Seite ausgewertet, bevor eines der Seitenskripte ausgeführt wird. Kann mehrfach angegeben werden.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedHält das Browserprofil im Speicher und speichert es nicht auf der Festplatte.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses Gibt an, ob Bildantworten an den Client gesendet werden sollen. Kann "allow" oder "omit" sein, Standard ist "allow".
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxDeaktiviert die Sandbox für alle Prozessarten, die normalerweise in einer Sandbox ausgeführt werden.
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir Pfad zum Verzeichnis für Ausgabedateien.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size Schwellenwert für das Entfernen alter Ausgabedateien, in Bytes.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--output-mode Gibt an, ob Snapshots, Konsolenmeldungen und Netzwerkprotokolle in eine Datei oder in die Standardausgabe gespeichert werden sollen. Kann "file" oder "stdout" sein. Standard ist "stdout".
env PLAYWRIGHT_MCP_OUTPUT_MODE
--port Port, der auf SSE-Transport lauschen soll.
env PLAYWRIGHT_MCP_PORT
--proxy-bypass Kommagetrennte Domains, die den Proxy umgehen sollen, zum Beispiel ".com,chromium.org,.domain.com".
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server Gibt den Proxy-Server an, zum Beispiel "http://myproxy:3128" oder "socks5://myproxy:8080".
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxAktiviert die Sandbox für alle Prozessarten, die normalerweise nicht in einer Sandbox ausgeführt werden.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionGibt an, ob die Playwright MCP-Sitzung im Ausgabeverzeichnis gespeichert werden soll.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets Pfad zu einer Datei mit Geheimnissen im Dotenv-Format.
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextVerwendet denselben Browser-Kontext für alle verbundenen HTTP-Clients wieder.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-mode Gibt bei der Erstellung von Snapshots für Antworten den zu verwendenden Modus an. Kann "full" oder "none" sein. Standard ist "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state Pfad zur Speicherstatusdatei für isolierte Sitzungen.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute Gibt das für Test-IDs zu verwendende Attribut an, Standard ist "data-testid".
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action Gibt das Aktions-Timeout in Millisekunden an, Standard ist 5000 ms.
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation Gibt das Navigations-Timeout in Millisekunden an, Standard ist 60000 ms.
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--user-agent Gibt den User-Agent-String an.
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir Pfad zum Benutzerdatenverzeichnis. Wenn nicht angegeben, wird ein temporäres Verzeichnis erstellt.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size Gibt die Größe des Browser-Ansichtsfensters in Pixeln an, zum Beispiel "1280x720".
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

Benutzerprofil

Sie können Playwright MCP mit einem persistenten Profil wie einen normalen Browser (Standard), in isolierten Kontexten für Testsitzungen oder über die Browser-Erweiterung mit Ihrem vorhandenen Browser verbinden.

Persistentes Profil

Alle Anmeldeinformationen werden im persistenten Profil gespeichert. Sie können es zwischen Sitzungen löschen, wenn Sie den Offline-Status löschen möchten. Das persistente Profil befindet sich an den folgenden Orten und Sie können es mit dem Argument --user-data-dir überschreiben.

# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}

# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}

# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}

{workspace-hash} wird vom Arbeitsbereichs-Stammverzeichnis des MCP-Clients abgeleitet, sodass verschiedene Projekte automatisch separate Profile erhalten.

[!WICHTIG] Ein persistentes Profil kann jeweils nur von einer Browser-Instanz verwendet werden, sodass gleichzeitige MCP-Clients, die denselben Arbeitsbereich nutzen, in Konflikt geraten. Um mehrere Clients parallel auszuführen, starten Sie jeden zusätzlichen Client mit --isolated oder verweisen Sie auf ein anderes --user-data-dir.

Isoliert

Im isolierten Modus wird jede Sitzung in einem isolierten Profil gestartet. Jedes Mal, wenn Sie MCP auffordern, den Browser zu schließen, wird die Sitzung beendet und der gesamte Speicherstatus für diese Sitzung geht verloren. Sie können den anfänglichen Speicherstatus für den Browser über den Konfigurationseintrag contextOptions oder das Argument --storage-state bereitstellen. Erfahren Sie mehr über den Speicherstatus hier.

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--isolated",
        "--storage-state={path/to/storage.json}"
      ]
    }
  }
}

Browser-Erweiterung

Die Playwright MCP Chrome-Erweiterung ermöglicht es Ihnen, eine Verbindung zu vorhandenen Browser-Tabs herzustellen und Ihre angemeldeten Sitzungen und den Browser-Status zu nutzen. Siehe microsoft/playwright › packages/extension für Installations- und Einrichtungsanweisungen.

Anfangszustand

Es gibt mehrere Möglichkeiten, den Anfangszustand für den Browser-Kontext oder eine Seite bereitzustellen.

Für den Speicherstatus können Sie entweder:

  • Mit einem Benutzerdatenverzeichnis über das Argument --user-data-dir starten. Dadurch bleiben alle Browserdaten zwischen den Sitzungen erhalten.
  • Mit einer Speicherstatusdatei über das Argument --storage-state starten. Dadurch werden Cookies und lokaler Speicher aus der Datei in einen isolierten Browser-Kontext geladen.

Für den Seitenzustand können Sie Folgendes verwenden:

  • --init-page, um auf eine TypeScript-Datei zu verweisen, die auf dem Playwright-Seitenobjekt ausgewertet wird. Dadurch können Sie beliebigen Code ausführen, um die Seite einzurichten.
// init-page.ts
export default async ({ page }) => {
  await page.context().grantPermissions(['geolocation']);
  await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
  await page.setViewportSize({ width: 1280, height: 720 });
};
  • --init-script, um auf eine JavaScript-Datei zu verweisen, die als Initialisierungsskript hinzugefügt wird. Das Skript wird auf jeder Seite ausgewertet, bevor eines der Seitenskripte ausgeführt wird. Dies ist nützlich, um Browser-APIs zu überschreiben oder die Umgebung einzurichten.
// init-script.js
window.isPlaywrightMCP = true;

Konfigurationsdatei

Der Playwright MCP-Server kann über eine JSON-Konfigurationsdatei konfiguriert werden. Sie können die Konfigurationsdatei mit der Befehlszeilenoption --config angeben:

npx @playwright/mcp@latest --config path/to/config.json
Schema der Konfigurationsdatei
{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

    /**
     * Keep the browser profile in memory, do not save it to disk.
     */
    isolated?: boolean;

    /**
     * Path to a user data directory for browser profile persistence.
     * Temporary directory is created by default.
     */
    userDataDir?: string;

    /**
     * Launch options passed to
     * @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
     *
     * This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
     */
    launchOptions?: playwright.LaunchOptions;

    /**
     * Context options for the browser context.
     *
     * This is useful for settings options like `viewport`.
     */
    contextOptions?: playwright.BrowserContextOptions;

    /**
     * Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
     */
    cdpEndpoint?: string;

    /**
     * CDP headers to send with the connect request.
     */
    cdpHeaders?: Record<string, string>;

    /**
     * Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
     */
    cdpTimeout?: number;

    /**
     * Remote endpoint to connect to an existing Playwright server. May be a
     * WebSocket URL string, or a [ConnectOptions] object that mirrors the
     * `connectOptions` shape used by the test runner. When passed as an object,
     * `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
     * underlying connect call.
     */
    remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };

    /**
     * Paths to TypeScript files to add as initialization scripts for Playwright page.
     */
    initPage?: string[];

    /**
     * Paths to JavaScript files to add as initialization scripts.
     * The scripts will be evaluated in every page before any of the page's scripts.
     */
    initScript?: string[];
  },

  /**
   * Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
   * config is ignored.
   * Requires the "Playwright Extension" to be installed.
   */
  extension?: boolean;

  server?: {
    /**
     * The port to listen on for SSE or MCP transport.
     */
    port?: number;

    /**
     * The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
     */
    host?: string;

    /**
     * The hosts this server is allowed to serve from. Defaults to the host server is bound to.
     * This is not for CORS, but rather for the DNS rebinding protection.
     */
    allowedHosts?: string[];
  },

  /**
   * List of enabled tool capabilities. Possible values:
   *   - 'core': Core browser automation features.
   *   - 'pdf': PDF generation and manipulation.
   *   - 'vision': Coordinate-based interactions.
   *   - 'devtools': Developer tools features.
   */
  capabilities?: ToolCapability[];

  /**
   * Whether to save the Playwright session into the output directory.
   */
  saveSession?: boolean;

  /**
   * Reuse the same browser context between all connected HTTP clients.
   */
  sharedBrowserContext?: boolean;

  /**
   * Secrets are used to replace matching plain text in the tool responses to prevent the LLM
   * from accidentally getting sensitive data. It is a convenience and not a security feature,
   * make sure to always examine information coming in and from the tool on the client.
   */
  secrets?: Record<string, string>;

  /**
   * The directory to save output files.
   */
  outputDir?: string;

  /**
   * Threshold for evicting old output files, in bytes.
   */
  outputMaxSize?: number;

  console?: {
    /**
     * The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    allowedOrigins?: string[];

    /**
     * List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    blockedOrigins?: string[];
  };

  /**
   * Specify the attribute to use for test ids, defaults to "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
     */
    action?: number;

    /*
     * Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
     */
    navigation?: number;

    /**
     * Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
     */
    expect?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
   */
  imageResponses?: 'allow' | 'omit';

  snapshot?: {
    /**
     * When taking snapshots for responses, specifies the mode to use.
     */
    mode?: 'full' | 'none';
  };

  /**
   * allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
   * wandering outside its intended workspace. It is a convenience defense to catch unintended
   * file access, not a secure boundary; a deliberate attempt to reach other directories can be
   * easily worked around, so always rely on client-level permissions for true security.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Specify the language to use for code generation.
   */
  codegen?: 'typescript' | 'none';
}

Eigenständiger MCP-Server

Wenn Sie einen Browser mit sichtbarer Oberfläche auf einem System ohne Anzeige oder aus Worker-Prozessen von IDEs ausführen, starten Sie den MCP-Server aus einer Umgebung mit DISPLAY und übergeben Sie das Flag --port, um den HTTP-Transport zu aktivieren.

npx @playwright/mcp@latest --port 8931

Und setzen Sie dann in der MCP-Client-Konfiguration url auf den HTTP-Endpunkt:

{
  "mcpServers": {
    "playwright": {
      "url": "http://localhost:8931/mcp"
    }
  }
}

Sicherheit

Playwright MCP ist keine Sicherheitsgrenze. Siehe MCP Security Best Practices für Hinweise zur Sicherung Ihrer Bereitstellung.

Docker

HINWEIS: Die Docker-Implementierung unterstützt derzeit nur headless Chromium.

{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
    }
  }
}

Oder wenn Sie den Container lieber als dauerhaften Dienst ausführen möchten, anstatt ihn vom MCP-Client starten zu lassen, verwenden Sie:

docker run -d -i --rm --init --pull=always \
  --entrypoint node \
  --name playwright \
  -p 8931:8931 \
  mcr.microsoft.com/playwright/mcp \
  /app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0

Der Server lauscht auf Host-Port 8931 und kann von jedem MCP-Client erreicht werden.

Sie können das Docker-Image selbst erstellen.

docker build -t mcr.microsoft.com/playwright/mcp .
Programmatische Nutzung
import http from 'http';

import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';

http.createServer(async (req, res) => {
  // ...

  // Creates a headless Playwright MCP server with SSE transport
  const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
  const transport = new SSEServerTransport('/messages', res);
  await connection.connect(transport);

  // ...
});

Werkzeuge

Kernautomatisierung - **browser_click**
  • Titel: Klicken
  • Beschreibung: Führt einen Klick auf einer Webseite aus
  • Parameter:
    • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
    • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
    • doubleClick (boolean, optional): Gibt an, ob ein Doppelklick anstelle eines Einfachklicks ausgeführt werden soll
    • button (string, optional): Zu klickende Maustaste, standardmäßig links
    • modifiers (array, optional): Zu drückende Modifikatortasten
  • Schreibgeschützt: false
  • browser_close
    • Titel: Browser schließen
    • Beschreibung: Schließt die Seite
    • Parameter: Keine
    • Schreibgeschützt: false
  • browser_console_messages
    • Titel: Konsolenmeldungen abrufen
    • Beschreibung: Gibt alle Konsolenmeldungen zurück
    • Parameter:
      • level (string): Ebene der zurückzugebenden Konsolenmeldungen. Jede Ebene enthält die Meldungen der schwerwiegenderen Ebenen. Standardmäßig "info".
      • all (boolean, optional): Gibt alle Konsolenmeldungen seit Beginn der Sitzung zurück, nicht nur seit der letzten Navigation. Standardmäßig false.
      • filename (string, optional): Dateiname, in dem die Konsolenmeldungen gespeichert werden sollen. Wenn nicht angegeben, werden die Meldungen als Text zurückgegeben.
    • Schreibgeschützt: true
  • browser_drag
    • Titel: Maus ziehen
    • Beschreibung: Führt Drag & Drop zwischen zwei Elementen aus
    • Parameter:
      • startElement (string, optional): Menschenlesbare Quell-Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • startTarget (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • endElement (string, optional): Menschenlesbare Ziel-Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • endTarget (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
    • Schreibgeschützt: false
  • browser_drop
    • Titel: Dateien oder Daten auf ein Element ablegen
    • Beschreibung: Legt Dateien oder Daten mit MIME-Typ auf einem Element ab, als ob sie von außerhalb der Seite gezogen würden. Mindestens einer der Parameter "paths" oder "data" muss angegeben werden.
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • paths (array, optional): Absolute Pfade zu den Dateien, die auf dem Element abgelegt werden sollen.
      • data (object, optional): Abzulegende Daten als Zuordnung von MIME-Typ zu Zeichenfolgenwert (z. B. {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • Schreibgeschützt: false
  • browser_evaluate
    • Titel: JavaScript auswerten
    • Beschreibung: Wertet einen JavaScript-Ausdruck auf der Seite oder einem Element aus
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string, optional): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • function (string): () => { /* code / } oder (element) => { / code */ }, wenn ein Element angegeben wird
      • filename (string, optional): Dateiname, in dem das Ergebnis gespeichert werden soll. Wenn nicht angegeben, wird das Ergebnis als Text zurückgegeben.
    • Schreibgeschützt: false
  • browser_file_upload
    • Titel: Dateien hochladen
    • Beschreibung: Lädt eine oder mehrere Dateien hoch
    • Parameter:
      • paths (array, optional): Die absoluten Pfade zu den hochzuladenden Dateien. Kann eine einzelne Datei oder mehrere Dateien sein. Wenn weggelassen, wird die Dateiauswahl abgebrochen.
    • Schreibgeschützt: false
  • browser_fill_form
    • Titel: Formular ausfüllen
    • Beschreibung: Füllt mehrere Formularfelder aus
    • Parameter:
      • fields (array): Auszufüllende Felder
    • Schreibgeschützt: false
  • browser_find
    • Titel: Im Seiten-Snapshot suchen
    • Beschreibung: Durchsucht den Accessibility-Snapshot der aktuellen Seite nach Text oder einem regulären Ausdruck. Gibt übereinstimmende Snapshot-Knoten mit einigen Zeilen umgebenden Kontexts zurück (wie Suchausschnitte), jeweils unter ihrem Pfad von der Wurzel des Baums aus angezeigt, was günstiger ist, als den gesamten Snapshot zu erfassen, wenn Sie nur ein Element und seine Referenz finden müssen.
    • Parameter:
      • text (string, optional): Klartext, nach dem im Seiten-Snapshot gesucht werden soll (Groß-/Kleinschreibung ignorierende Teilzeichenfolgen-Übereinstimmung). Geben Sie entweder Text oder Regex an, nicht beides.
      • regex (string, optional): Regulärer Ausdruck, nach dem im Seiten-Snapshot gesucht werden soll. Bei der Übereinstimmung wird standardmäßig die Groß-/Kleinschreibung beachtet; schließen Sie das Muster in Schrägstriche ein, um Flags hinzuzufügen, z. B. "/error/i" für Groß-/Kleinschreibung ignorierend. Geben Sie entweder Text oder Regex an, nicht beides.
    • Schreibgeschützt: true
  • browser_handle_dialog
    • Titel: Dialog behandeln
    • Beschreibung: Behandelt einen Dialog
    • Parameter:
      • accept (boolean): Gibt an, ob der Dialog akzeptiert werden soll.
      • promptText (string, optional): Der Text der Eingabeaufforderung im Falle eines Eingabeaufforderungsdialogs.
    • Schreibgeschützt: false
  • browser_hover
    • Titel: Maus bewegen
    • Beschreibung: Bewegt die Maus über ein Element auf der Seite
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
    • Schreibgeschützt: false
  • browser_navigate
    • Titel: Zu einer URL navigieren
    • Beschreibung: Navigiert zu einer URL
    • Parameter:
      • url (string): Die URL, zu der navigiert werden soll
    • Schreibgeschützt: false
  • browser_navigate_back
    • Titel: Zurück
    • Beschreibung: Geht zur vorherigen Seite im Verlauf zurück
    • Parameter: Keine
    • Schreibgeschützt: false
  • browser_network_request
    • Titel: Netzwerkanfragedetails anzeigen
    • Beschreibung: Gibt vollständige Details (Header und Body) einer einzelnen Netzwerkanfrage oder eines einzelnen Teils zurück, wenn part gesetzt ist. Verwenden Sie die Nummer von browser_network_requests.
    • Parameter:
      • index (integer): 1-basierter Index der Anfrage, wie von browser_network_requests ausgegeben.
      • part (string, optional): Gibt nur diesen Teil der Anfrage zurück. Weglassen, um vollständige Details zurückzugeben.
      • filename (string, optional): Dateiname, in dem das Ergebnis gespeichert werden soll. Wenn nicht angegeben, wird die Ausgabe als Text zurückgegeben.
    • Schreibgeschützt: true
  • browser_network_requests
    • Titel: Netzwerkanfragen auflisten
    • Beschreibung: Gibt eine nummerierte Liste der Netzwerkanfragen seit dem Laden der Seite zurück. Verwenden Sie browser_network_request mit der Nummer, um vollständige Details zu erhalten.
    • Parameter:
      • static (boolean): Gibt an, ob erfolgreiche statische Ressourcen wie Bilder, Schriftarten, Skripte usw. eingeschlossen werden sollen. Standardmäßig false.
      • filter (string, optional): Gibt nur Anfragen zurück, deren URL diesem regulären Ausdruck entspricht (z. B. "/api/.*user").
      • filename (string, optional): Dateiname, in dem die Netzwerkanfragen gespeichert werden sollen. Wenn nicht angegeben, werden die Anfragen als Text zurückgegeben.
    • Schreibgeschützt: true
  • browser_press_key
    • Titel: Taste drücken
    • Beschreibung: Drückt eine Taste auf der Tastatur
    • Parameter:
      • key (string): Name der zu drückenden Taste oder ein zu erzeugendes Zeichen, wie z. B. ArrowLeft oder a
    • Schreibgeschützt: false
  • browser_resize
    • Titel: Browserfenster skalieren
    • Beschreibung: Skaliert das Browserfenster
    • Parameter:
      • width (number): Breite des Browserfensters
      • height (number): Höhe des Browserfensters
    • Schreibgeschützt: false
  • browser_run_code_unsafe
    • Titel: Playwright-Code ausführen (unsicher)
    • Beschreibung: Führt einen Playwright-Codeausschnitt aus. Unsicher: Führt beliebiges JavaScript im Playwright-Serverprozess aus und ist RCE-äquivalent.
    • Parameter:
      • code (string, optional): Eine JavaScript-Funktion, die auszuführenden Playwright-Code enthält. Sie wird mit einem einzigen Argument, page, aufgerufen, das Sie für jede Seiteninteraktion verwenden können. Zum Beispiel: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, optional): Lädt Code aus der angegebenen Datei. Wenn sowohl Code als auch Dateiname angegeben werden, wird der Code ignoriert.
    • Schreibgeschützt: false
  • browser_select_option
    • Titel: Option auswählen
    • Beschreibung: Wählt eine Option in einer Dropdown-Liste aus
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • values (array): Array von Werten, die in der Dropdown-Liste ausgewählt werden sollen. Dies kann ein einzelner Wert oder mehrere Werte sein.
    • Schreibgeschützt: false
  • browser_snapshot
    • Titel: Seiten-Snapshot
    • Beschreibung: Erfasst den Accessibility-Snapshot der aktuellen Seite, dies ist besser als ein Screenshot
    • Parameter:
      • target (string, optional): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • filename (string, optional): Speichert den Snapshot in einer Markdown-Datei, anstatt ihn in der Antwort zurückzugeben.
      • depth (number, optional): Begrenzt die Tiefe des Snapshot-Baums
      • boxes (boolean, optional): Fügt den Begrenzungsrahmen jedes Elements als [box=x,y,width,height] in den Snapshot ein. Koordinaten sind relativ zum Viewport, in CSS-Pixeln (Element.getBoundingClientRect)
    • Schreibgeschützt: true
  • browser_take_screenshot
    • Titel: Screenshot aufnehmen
    • Beschreibung: Nimmt einen Screenshot der aktuellen Seite auf. Sie können keine Aktionen basierend auf dem Screenshot ausführen, verwenden Sie browser_snapshot für Aktionen.
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string, optional): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • type (string): Bildformat für den Screenshot. Standard ist png.
      • filename (string, optional): Dateiname, unter dem der Screenshot gespeichert werden soll. Standardmäßig page-{timestamp}.{png|jpeg}, wenn nicht angegeben. Bevorzugen Sie relative Dateinamen, um im Ausgabeverzeichnis zu bleiben.
      • fullPage (boolean, optional): Wenn true, wird ein Screenshot der gesamten scrollbaren Seite anstelle des aktuell sichtbaren Viewports aufgenommen. Kann nicht mit Element-Screenshots verwendet werden.
      • scale (string): Bildauflösungsskalierung. "css" erzeugt einen Screenshot in CSS-Pixelgröße (kleiner, geräteübergreifend konsistent). "device" erzeugt einen hochauflösenden Screenshot mit Gerätepixeln (größer, berücksichtigt das Gerätepixelverhältnis). Standard ist css.
    • Schreibgeschützt: true
  • browser_type
    • Titel: Text eingeben
    • Beschreibung: Gibt Text in ein bearbeitbares Element ein
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • text (string): In das Element einzugebender Text
      • submit (boolean, optional): Gibt an, ob der eingegebene Text abgeschickt werden soll (Enter drücken danach)
      • slowly (boolean, optional): Gibt an, ob zeichenweise eingegeben werden soll. Nützlich zum Auslösen von Tasten-Handlern auf der Seite. Standardmäßig wird der gesamte Text auf einmal eingefügt.
    • Schreibgeschützt: false
  • browser_wait_for
    • Titel: Warten auf
    • Beschreibung: Warten, bis Text erscheint oder verschwindet oder eine bestimmte Zeit verstrichen ist
    • Parameter:
      • time (number, optional): Die Wartezeit in Sekunden
      • text (string, optional): Der Text, auf den gewartet werden soll
      • textGone (string, optional): Der Text, auf dessen Verschwinden gewartet werden soll
    • Schreibgeschützt: false
Tab-Verwaltung
  • browser_tabs
    • Titel: Tabs verwalten
    • Beschreibung: Browser-Tabs auflisten, erstellen, schließen oder auswählen.
    • Parameter:
      • action (string): Auszuführende Operation
      • index (number, optional): Tab-Index, verwendet für Schließen/Auswählen. Wenn beim Schließen weggelassen, wird der aktuelle Tab geschlossen.
      • url (string, optional): URL, zu der im neuen Tab navigiert werden soll, verwendet für Neu.
    • Schreibgeschützt: false
Browser-Installation
Konfiguration (Opt-in über --caps=config)
  • browser_get_config
    • Titel: Konfiguration abrufen
    • Beschreibung: Ruft die endgültige aufgelöste Konfiguration nach Zusammenführung von CLI-Optionen, Umgebungsvariablen und Konfigurationsdatei ab.
    • Parameter: Keine
    • Schreibgeschützt: true
Netzwerk (Opt-in über --caps=network)
  • browser_network_state_set
    • Titel: Netzwerkstatus setzen
    • Beschreibung: Setzt den Netzwerkstatus des Browsers auf online oder offline. Wenn offline, schlagen alle Netzwerkanfragen fehl.
    • Parameter:
      • state (string): Auf "offline" setzen, um den Offline-Modus zu simulieren, "online", um die Netzwerkkonnektivität wiederherzustellen
    • Schreibgeschützt: false
  • browser_route
    • Titel: Netzwerkanfragen simulieren
    • Beschreibung: Richtet eine Route ein, um Netzwerkanfragen zu simulieren, die einem URL-Muster entsprechen
    • Parameter:
      • pattern (string): Zu vergleichendes URL-Muster (z. B. "/api/users", "/*.{png,jpg}")
      • status (number, optional): Zurückzugebender HTTP-Statuscode (Standard: 200)
      • body (string, optional): Antworttext (Text oder JSON-String)
      • contentType (string, optional): Content-Type-Header (z. B. "application/json", "text/html")
      • headers (array, optional): Hinzuzufügende Header im Format "Name: Wert"
      • removeHeaders (string, optional): Kommagetrennte Liste der aus der Anfrage zu entfernenden Header-Namen
    • Schreibgeschützt: false
  • browser_route_list
    • Titel: Netzwerkrouten auflisten
    • Beschreibung: Listet alle aktiven Netzwerkrouten auf
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_unroute
    • Titel: Netzwerkrouten entfernen
    • Beschreibung: Entfernt Netzwerkrouten, die einem Muster entsprechen (oder alle Routen, wenn kein Muster angegeben ist)
    • Parameter:
      • pattern (string, optional): Zu entfernendes URL-Muster (weglassen, um alle Routen zu entfernen)
    • Schreibgeschützt: false
Speicher (Opt-in über --caps=storage)
  • browser_cookie_clear
    • Titel: Cookies löschen
    • Beschreibung: Alle Cookies löschen
    • Parameter: Keine
    • Schreibgeschützt: false
  • browser_cookie_delete
    • Titel: Cookie löschen
    • Beschreibung: Ein bestimmtes Cookie löschen
    • Parameter:
      • name (string): Name des zu löschenden Cookies
    • Schreibgeschützt: false
  • browser_cookie_get
    • Titel: Cookie abrufen
    • Beschreibung: Ein bestimmtes Cookie anhand des Namens abrufen
    • Parameter:
      • name (string): Name des abzurufenden Cookies
    • Schreibgeschützt: true
  • browser_cookie_list
    • Titel: Cookies auflisten
    • Beschreibung: Alle Cookies auflisten (optional gefiltert nach Domain/Pfad)
    • Parameter:
      • domain (string, optional): Cookies nach Domain filtern
      • path (string, optional): Cookies nach Pfad filtern
    • Schreibgeschützt: true
  • browser_cookie_set
    • Titel: Cookie setzen
    • Beschreibung: Ein Cookie mit optionalen Flags setzen (Domain, Pfad, Ablauf, httpOnly, secure, sameSite)
    • Parameter:
      • name (string): Cookie-Name
      • value (string): Cookie-Wert
      • domain (string, optional): Cookie-Domain
      • path (string, optional): Cookie-Pfad
      • expires (number, optional): Cookie-Ablauf als Unix-Zeitstempel
      • httpOnly (boolean, optional): Ob das Cookie nur HTTP ist
      • secure (boolean, optional): Ob das Cookie sicher ist
      • sameSite (string, optional): SameSite-Attribut des Cookies
    • Schreibgeschützt: false
  • browser_localstorage_clear
    • Titel: localStorage löschen
    • Beschreibung: Gesamten localStorage löschen
    • Parameter: Keine
    • Schreibgeschützt: false
  • browser_localstorage_delete
    • Titel: localStorage-Eintrag löschen
    • Beschreibung: Einen localStorage-Eintrag löschen
    • Parameter:
      • key (string): Zu löschender Schlüssel
    • Schreibgeschützt: false
  • browser_localstorage_get
    • Titel: localStorage-Eintrag abrufen
    • Beschreibung: Einen localStorage-Eintrag anhand des Schlüssels abrufen
    • Parameter:
      • key (string): Abzurufender Schlüssel
    • Schreibgeschützt: true
  • browser_localstorage_list
    • Titel: localStorage auflisten
    • Beschreibung: Alle Schlüssel-Wert-Paare des localStorage auflisten
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_localstorage_set
    • Titel: localStorage-Eintrag setzen
    • Beschreibung: Einen localStorage-Eintrag setzen
    • Parameter:
      • key (string): Zu setzender Schlüssel
      • value (string): Zu setzender Wert
    • Schreibgeschützt: false
  • browser_sessionstorage_clear
    • Titel: sessionStorage löschen
    • Beschreibung: Gesamten sessionStorage löschen
    • Parameter: Keine
    • Schreibgeschützt: false
  • browser_sessionstorage_delete
    • Titel: sessionStorage-Eintrag löschen
    • Beschreibung: Einen sessionStorage-Eintrag löschen
    • Parameter:
      • key (string): Zu löschender Schlüssel
    • Schreibgeschützt: false
  • browser_sessionstorage_get
    • Titel: sessionStorage-Eintrag abrufen
    • Beschreibung: Einen sessionStorage-Eintrag anhand des Schlüssels abrufen
    • Parameter:
      • key (string): Abzurufender Schlüssel
    • Schreibgeschützt: true
  • browser_sessionstorage_list
    • Titel: sessionStorage auflisten
    • Beschreibung: Alle Schlüssel-Wert-Paare des sessionStorage auflisten
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_sessionstorage_set
    • Titel: sessionStorage-Eintrag setzen
    • Beschreibung: Einen sessionStorage-Eintrag setzen
    • Parameter:
      • key (string): Zu setzender Schlüssel
      • value (string): Zu setzender Wert
    • Schreibgeschützt: false
  • browser_set_storage_state
    • Titel: Speicherstatus wiederherstellen
    • Beschreibung: Stellt den Speicherstatus (Cookies, localStorage) aus einer Datei wieder her. Dies löscht vorhandene Cookies und localStorage vor der Wiederherstellung.
    • Parameter:
      • filename (string): Pfad zur Speicherstatus-Datei, aus der wiederhergestellt werden soll
    • Schreibgeschützt: false
  • browser_storage_state
    • Titel: Speicherstatus speichern
    • Beschreibung: Speichert den Speicherstatus (Cookies, localStorage) zur späteren Wiederverwendung in einer Datei
    • Parameter:
      • filename (string, optional): Dateiname, unter dem der Speicherstatus gespeichert werden soll. Standardmäßig storage-state-{timestamp}.json, wenn nicht angegeben.
    • Schreibgeschützt: true
DevTools (Opt-in über --caps=devtools)
  • browser_annotate
    • Titel: Aktuelle Seite annotieren
    • Beschreibung: Öffnet das Playwright Dashboard im Annotationsmodus für die aktuelle Seite und wartet darauf, dass der Benutzer Annotationen zeichnet. Gibt den annotierten Screenshot, den ARIA-Snapshot und die Liste der Annotationen zurück.
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_hide_highlight
    • Titel: Element-Hervorhebung ausblenden
    • Beschreibung: Entfernt eine zuvor für das Element hinzugefügte Hervorhebungsüberlagerung.
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die beim Hinzufügen der Hervorhebung verwendet wurde; muss mit dem an browser_highlight übergebenen Wert übereinstimmen.
      • target (string, optional): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
    • Schreibgeschützt: true
  • browser_highlight
    • Titel: Element hervorheben
    • Beschreibung: Zeigt eine dauerhafte Hervorhebungsüberlagerung um das Element auf der Seite an.
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
      • style (string, optional): Zusätzliches Inline-CSS, das auf die Hervorhebungsüberlagerung angewendet wird, z. B. "outline: 2px dashed red".
    • Schreibgeschützt: true
  • browser_resume
    • Titel: Angehaltene Skriptausführung fortsetzen
    • Beschreibung: Setzt die Skriptausführung fort, nachdem sie angehalten wurde. Wenn mit step auf true gesetzt aufgerufen, wird die Ausführung vor der nächsten Aktion erneut angehalten.
    • Parameter:
      • step (boolean, optional): Wenn true, wird die Ausführung vor der nächsten Aktion erneut angehalten, was schrittweises Debuggen ermöglicht.
      • location (string, optional): Ausführung an einer bestimmten : anhalten, z. B. "example.spec.ts:42".
    • Schreibgeschützt: false
  • browser_start_tracing
    • Titel: Tracing starten
    • Beschreibung: Trace-Aufzeichnung starten
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_start_video
    • Titel: Video starten
    • Beschreibung: Videoaufzeichnung starten
    • Parameter:
      • filename (string, optional): Dateiname zum Speichern des Videos.
      • size (object, optional): Videogröße
    • Schreibgeschützt: true
  • browser_stop_tracing
    • Titel: Tracing stoppen
    • Beschreibung: Trace-Aufzeichnung stoppen
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_stop_video
    • Titel: Video stoppen
    • Beschreibung: Videoaufzeichnung stoppen
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_video_chapter
    • Titel: Videokapitel
    • Beschreibung: Fügt der Videoaufzeichnung eine Kapitelmarkierung hinzu. Zeigt eine bildschirmfüllende Kapitelkarte mit unscharfem Hintergrund.
    • Parameter:
      • title (string): Kapiteltitel
      • description (string, optional): Kapitelbeschreibung
      • duration (number, optional): Dauer in Millisekunden, um die Kapitelkarte anzuzeigen
    • Schreibgeschützt: true
  • browser_video_hide_actions
    • Titel: Aktionsüberlagerungen ausblenden
    • Beschreibung: Beendet die Annotation von auf der Seite ausgeführten Aktionen.
    • Parameter: Keine
    • Schreibgeschützt: true
  • browser_video_show_actions
    • Titel: Aktionsüberlagerungen anzeigen
    • Beschreibung: Annotation nachfolgender auf der Seite ausgeführter Aktionen mit einem Hinweis, der die Aktion benennt und das Zielelement hervorhebt. Nützlich während der Videoaufzeichnung oder Bildschirmübertragung.
    • Parameter:
      • duration (number, optional): Wie lange jede Aktionsannotation auf dem Bildschirm bleibt, in Millisekunden. Standard ist 500.
      • position (string, optional): Wo der Aktionstitel relativ zur Seite platziert werden soll. Standard ist oben-rechts.
      • cursor (string, optional): Cursor-Dekoration für Zeigeraktionen. "pointer" (Standard) animiert einen Mauszeiger vom vorherigen Aktionspunkt zum nächsten; "none" deaktiviert die Cursor-Dekoration.
    • Schreibgeschützt: true
Koordinatenbasiert (opt-in über --caps=vision)
  • browser_mouse_click_xy
    • Titel: Klicken
    • Beschreibung: Maustaste an einer bestimmten Position klicken
    • Parameter:
      • x (number): X-Koordinate
      • y (number): Y-Koordinate
      • button (string, optional): Zu klickende Taste, Standard ist links
      • clickCount (number, optional): Anzahl der Klicks, Standard ist 1
      • delay (number, optional): Wartezeit zwischen Drücken und Loslassen der Maustaste in Millisekunden, Standard ist 0
    • Read-only: false
  • browser_mouse_down
    • Titel: Maustaste drücken
    • Beschreibung: Maustaste drücken
    • Parameter:
      • button (string, optional): Zu drückende Taste, Standard ist links
    • Read-only: false
  • browser_mouse_drag_xy
    • Titel: Maus ziehen
    • Beschreibung: Linke Maustaste an eine bestimmte Position ziehen
    • Parameter:
      • startX (number): Start-X-Koordinate
      • startY (number): Start-Y-Koordinate
      • endX (number): End-X-Koordinate
      • endY (number): End-Y-Koordinate
    • Read-only: false
  • browser_mouse_move_xy
    • Titel: Maus bewegen
    • Beschreibung: Maus an eine bestimmte Position bewegen
    • Parameter:
      • x (number): X-Koordinate
      • y (number): Y-Koordinate
    • Read-only: false
  • browser_mouse_up
    • Titel: Maustaste loslassen
    • Beschreibung: Maustaste loslassen
    • Parameter:
      • button (string, optional): Loszulassende Taste, Standard ist links
    • Read-only: false
  • browser_mouse_wheel
    • Titel: Mausrad scrollen
    • Beschreibung: Mausrad scrollen
    • Parameter:
      • deltaX (number): X-Delta
      • deltaY (number): Y-Delta
    • Read-only: false
PDF-Generierung (opt-in über --caps=pdf)
  • browser_pdf_save
    • Titel: Als PDF speichern
    • Beschreibung: Seite als PDF speichern
    • Parameter:
      • filename (string, optional): Dateiname zum Speichern der PDF. Standardmäßig page-{timestamp}.pdf, falls nicht angegeben. Relative Dateinamen bevorzugen, um im Ausgabeverzeichnis zu bleiben.
    • Read-only: true
Test-Assertions (opt-in über --caps=testing)
  • browser_generate_locator
    • Titel: Locator für Element erstellen
    • Beschreibung: Locator für das angegebene Element zur Verwendung in Tests generieren
    • Parameter:
      • element (string, optional): Menschenlesbare Elementbeschreibung, die verwendet wird, um die Berechtigung zur Interaktion mit dem Element zu erhalten
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot oder ein eindeutiger Element-Selektor
    • Read-only: true
  • browser_verify_element_visible
    • Titel: Sichtbarkeit des Elements überprüfen
    • Beschreibung: Überprüft, ob das Element auf der Seite sichtbar ist
    • Parameter:
      • role (string): ROLE des Elements. Kann im Snapshot so gefunden werden: - {ROLE} "Accessible Name":
      • accessibleName (string): ACCESSIBLE_NAME des Elements. Kann im Snapshot so gefunden werden: - role "{ACCESSIBLE_NAME}"
    • Read-only: false
  • browser_verify_list_visible
    • Titel: Sichtbarkeit der Liste überprüfen
    • Beschreibung: Überprüft, ob die Liste auf der Seite sichtbar ist
    • Parameter:
      • element (string): Menschenlesbare Listenbeschreibung
      • target (string): Exakte Ziel-Elementreferenz, die auf die Liste zeigt
      • items (array): Zu überprüfende Elemente
    • Read-only: false
  • browser_verify_text_visible
    • Titel: Sichtbarkeit des Textes überprüfen
    • Beschreibung: Überprüft, ob der Text auf der Seite sichtbar ist. Wenn möglich, browser_verify_element_visible bevorzugen.
    • Parameter:
      • text (string): TEXT, der überprüft werden soll. Kann im Snapshot so gefunden werden: - role "Accessible Name": {TEXT} oder so: - text: {TEXT}
    • Read-only: false
  • browser_verify_value
    • Titel: Wert überprüfen
    • Beschreibung: Elementwert überprüfen
    • Parameter:
      • type (string): Typ des Elements
      • element (string): Menschenlesbare Elementbeschreibung
      • target (string): Exakte Ziel-Elementreferenz aus dem Seiten-Snapshot
      • value (string): Zu überprüfender Wert. Für Checkbox "true" oder "false" verwenden.
    • Read-only: false