Playwright MCP

resmi

Server MCP Playwright resmi untuk otomatisasi browser, inspeksi halaman, tangkapan layar, dan interaksi web dari Claude, Cursor, serta agen AI lainnya.

Apa yang bisa Anda lakukan dengan Playwright MCP?

  • Otomatisasi browser melalui snapshot aksesibilitas — Minta AI Anda untuk menavigasi halaman dan berinteraksi dengan elemen menggunakan data aksesibilitas terstruktur, tanpa perlu tangkapan layar.
  • Sesi penjelajahan persisten — Pertahankan status masuk di seluruh percakapan dengan profil persisten, atau gunakan sesi terisolasi untuk pengujian yang bersih.
  • Dukungan multi-browser — Otomatiskan tugas di Chromium, Firefox, atau WebKit, dengan opsi mode headless dan emulasi perangkat.
  • Konfigurasi browser kustom — Atur ukuran viewport, agen pengguna, pengaturan proxy, dan izin sesuai kebutuhan pengujian Anda.
  • Integrasi ekstensi browser — Hubungkan ke browser Chrome atau Edge yang sudah ada untuk memanfaatkan tab saat ini dan sesi yang sudah masuk.

Dokumentasi

Playwright MCP

Server Model Context Protocol (MCP) yang menyediakan kemampuan otomatisasi browser menggunakan Playwright. Server ini memungkinkan LLM untuk berinteraksi dengan halaman web melalui snapshot aksesibilitas terstruktur, tanpa memerlukan screenshot atau model yang disetel secara visual.

Playwright MCP vs Playwright CLI

Paket ini menyediakan antarmuka MCP ke Playwright. Jika Anda menggunakan coding agent, Anda mungkin lebih diuntungkan dengan menggunakan CLI+SKILLS.

  • CLI: Coding agent modern semakin mengutamakan alur kerja berbasis CLI yang diekspos sebagai SKILLs daripada MCP karena pemanggilan CLI lebih hemat token: mereka menghindari memuat skema alat yang besar dan pohon aksesibilitas yang bertele-tele ke dalam konteks model, memungkinkan agen untuk bertindak melalui perintah yang ringkas dan dirancang khusus. Ini membuat CLI + SKILLs lebih cocok untuk coding agent bervolume tinggi yang harus menyeimbangkan otomatisasi browser dengan basis kode yang besar, pengujian, dan penalaran dalam jendela konteks yang terbatas.
    Pelajari lebih lanjut tentang Playwright CLI dengan SKILLS.

  • MCP: MCP tetap relevan untuk loop agen khusus yang diuntungkan dari status persisten, introspeksi kaya, dan penalaran iteratif atas struktur halaman, seperti otomatisasi eksplorasi, pengujian yang dapat menyembuhkan diri sendiri, atau alur kerja otonom jangka panjang di mana mempertahankan konteks browser yang berkelanjutan lebih penting daripada biaya token.

Fitur Utama

  • Cepat dan ringan. Menggunakan pohon aksesibilitas Playwright, bukan input berbasis piksel.
  • Ramah LLM. Tidak memerlukan model visi, beroperasi murni pada data terstruktur.
  • Aplikasi alat yang deterministik. Menghindari ambiguitas yang umum terjadi pada pendekatan berbasis screenshot.

Persyaratan

  • Node.js 18 atau lebih baru
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie, atau klien MCP lainnya

Memulai

Pertama, instal server Playwright MCP dengan klien Anda.

Konfigurasi standar berfungsi di sebagian besar alat:

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

Install in VS Code Install in VS Code Insiders

Amp

Tambahkan melalui layar pengaturan ekstensi VS Code Amp atau dengan memperbarui file settings.json Anda:

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

Pengaturan Amp CLI:

Tambahkan melalui perintah amp mcp add di bawah ini

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

Tambahkan melalui pengaturan Antigravity atau dengan memperbarui file konfigurasi Anda:

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

Gunakan CLI Claude Code untuk menambahkan server Playwright MCP:

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

Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas.

Cline

Ikuti instruksi di bagian Mengonfigurasi Server MCP

Contoh: Pengaturan Lokal

Tambahkan berikut ini ke file cline_mcp_settings.json Anda:

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

Gunakan CLI Codex untuk menambahkan server Playwright MCP:

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

Atau, buat atau edit file konfigurasi ~/.codex/config.toml dan tambahkan:

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

Untuk informasi lebih lanjut, lihat dokumentasi MCP Codex.

Copilot

Gunakan CLI Copilot untuk menambahkan server Playwright MCP secara interaktif:

/mcp add

Atau, buat atau edit file konfigurasi ~/.copilot/mcp-config.json dan tambahkan:

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

Untuk informasi lebih lanjut, lihat dokumentasi CLI Copilot.

Cursor

Klik tombol untuk menginstal:

Install in Cursor

Atau instal secara manual:

Buka Cursor Settings -> MCP -> Add new MCP Server. Beri nama sesuai keinginan Anda, gunakan tipe command dengan perintah npx @playwright/mcp@latest. Anda juga dapat memverifikasi konfigurasi atau menambahkan argumen seperti perintah dengan mengklik Edit.

Factory

Gunakan CLI Factory untuk menambahkan server Playwright MCP:

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

Atau, ketik /mcp di dalam Factory droid untuk membuka UI interaktif untuk mengelola server MCP.

Untuk informasi lebih lanjut, lihat dokumentasi MCP Factory.

Gemini CLI

Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas.

Goose

Klik tombol untuk menginstal:

Install in Goose

Atau instal secara manual:

Buka Advanced settings -> Extensions -> Add custom extension. Beri nama sesuai keinginan Anda, gunakan tipe STDIO, dan atur command menjadi npx @playwright/mcp. Klik "Add Extension".

Grok

Gunakan CLI Grok untuk menambahkan server Playwright MCP:

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

Atau, buat atau edit file konfigurasi ~/.grok/config.toml dan tambahkan:

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

Untuk informasi lebih lanjut, lihat dokumentasi MCP Grok.

Junie

Untuk menambahkan server Playwright MCP di Junie CLI:

  1. Ketik /mcp
  2. Tekan Ctrl+A untuk menambahkan server MCP baru
  3. Pilih Playwright dari daftar

Atau, tambahkan ke .junie/mcp/mcp.json:

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

Untuk informasi lebih lanjut, lihat dokumentasi konfigurasi MCP Junie.

Kiro

Add to Kiro

Ikuti dokumentasi Server MCP. Misalnya di .kiro/settings/mcp.json:

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

Klik tombol untuk menginstal:

Add MCP Server playwright to LM Studio

Atau instal secara manual:

Buka Program di sidebar kanan -> Install -> Edit mcp.json. Gunakan konfigurasi standar di atas.

opencode

Ikuti dokumentasi Server MCP. Misalnya di ~/.config/opencode/opencode.json:

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

Qodo Gen

Buka panel obrolan Qodo Gen di VSCode atau IntelliJ → Connect more tools → + Add new MCP → Tempel konfigurasi standar di atas.

Klik Save.

VS Code

Klik tombol untuk menginstal:

Install in VS Code Install in VS Code Insiders

Atau instal secara manual:

Ikuti panduan instalasi MCP, gunakan konfigurasi standar di atas. Anda juga dapat menginstal server Playwright MCP menggunakan CLI VS Code:

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

Setelah instalasi, server Playwright MCP akan tersedia untuk digunakan dengan agen GitHub Copilot Anda di VS Code.

Warp

Buka Settings -> AI -> Manage MCP Servers -> + Add untuk menambahkan Server MCP. Gunakan konfigurasi standar di atas.

Atau, gunakan perintah garis miring /add-mcp di prompt Warp dan tempel konfigurasi standar dari atas:

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

Ikuti dokumentasi MCP Windsurf. Gunakan konfigurasi standar di atas.

Konfigurasi

Server Playwright MCP mendukung argumen berikut. Argumen tersebut dapat diberikan dalam konfigurasi JSON di atas, sebagai bagian dari daftar "args":

OpsiDeskripsi
--allowed-hosts <hosts...>daftar host yang dipisahkan koma yang diizinkan untuk dilayani oleh server ini. Defaultnya adalah host tempat server terikat. Berikan '*' untuk menonaktifkan pemeriksaan host.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins daftar origin TERPERCAYA yang dipisahkan titik koma untuk mengizinkan browser meminta. Defaultnya adalah mengizinkan semua. Penting: tidak berfungsi sebagai batas keamanan dan tidak memengaruhi pengalihan.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessmengizinkan akses ke file di luar root workspace. Juga mengizinkan akses tanpa batas ke URL file://. Secara default, akses ke sistem file dibatasi hanya ke direktori root workspace (atau cwd jika tidak ada root yang dikonfigurasi), dan navigasi ke URL file:// diblokir.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins daftar origin yang dipisahkan titik koma untuk diblokir agar tidak diminta oleh browser. Daftar blokir dievaluasi sebelum daftar izin. Jika digunakan tanpa daftar izin, permintaan yang tidak cocok dengan daftar blokir tetap diizinkan. Penting: tidak berfungsi sebagai batas keamanan dan tidak memengaruhi pengalihan.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersmemblokir service worker
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser browser atau saluran chrome yang akan digunakan, nilai yang mungkin: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps daftar kemampuan tambahan yang dipisahkan koma untuk diaktifkan, nilai yang mungkin: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint endpoint CDP untuk terhubung.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>header CDP yang akan dikirim dengan permintaan koneksi, dapat ditentukan beberapa kali.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout waktu tunggu dalam milidetik untuk terhubung ke endpoint CDP, defaultnya 30000ms
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen tentukan bahasa yang akan digunakan untuk pembuatan kode, nilai yang mungkin: "typescript", "python", "java", "csharp", "none". Defaultnya adalah "typescript".
env PLAYWRIGHT_MCP_CODEGEN
--config jalur ke file konfigurasi.
env PLAYWRIGHT_MCP_CONFIG
--console-level tingkat pesan konsol yang akan dikembalikan: "error", "warning", "info", "debug". Setiap tingkat mencakup pesan dari tingkat yang lebih parah.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device perangkat yang akan ditiru, misalnya: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobilemeniru perangkat seluler generik (Pixel 10 untuk Chromium, iPhone 17 untuk WebKit). Halaman seluler biasanya lebih ringan, yang menghemat token. Tidak dapat digabungkan dengan --device.
env PLAYWRIGHT_MCP_MOBILE
--executable-path jalur ke executable browser.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionTerhubung ke instance browser yang sedang berjalan (khusus Edge/Chrome). Memerlukan "Playwright Extension" untuk diinstal.
env PLAYWRIGHT_MCP_EXTENSION
--endpoint Endpoint browser terikat untuk terhubung.
env PLAYWRIGHT_MCP_ENDPOINT
--file-paths bagaimana jalur file dirender dalam hasil alat, "relative" ke root workspace atau "absolute". Defaultnya adalah "relative".
env PLAYWRIGHT_MCP_FILE_PATHS
--grant-permissions <permissions...>Daftar izin yang akan diberikan ke konteks browser, misalnya "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessmenjalankan browser dalam mode headless, berjendela secara default
env PLAYWRIGHT_MCP_HEADLESS
--host host untuk mengikat server. Defaultnya adalah localhost. Gunakan 0.0.0.0 untuk mengikat ke semua antarmuka.
env PLAYWRIGHT_MCP_HOST
--idle-timeout tutup browser setelah sekian milidetik tanpa panggilan alat yang selesai, panggilan alat berikutnya akan meluncurkannya kembali. Defaultnya adalah satu jam untuk browser headless, tidak pernah untuk browser berjendela, 0 menonaktifkan.
env PLAYWRIGHT_MCP_IDLE_TIMEOUT
--ignore-https-errorsabaikan kesalahan https
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>jalur ke file TypeScript untuk dievaluasi pada objek halaman Playwright
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>jalur ke file JavaScript untuk ditambahkan sebagai skrip inisialisasi. Skrip akan dievaluasi di setiap halaman sebelum skrip halaman mana pun. Dapat ditentukan beberapa kali.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedsimpan profil browser di memori, jangan simpan ke disk.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses apakah akan mengirim respons gambar ke klien. Dapat berupa "allow", "omit" atau "only". Dengan "only", respons yang membawa gambar terdiri dari bagian gambar saja, tanpa bagian teks. Defaultnya adalah "allow".
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxnonaktifkan sandbox untuk semua jenis proses yang biasanya di-sandbox.
env PLAYWRIGHT_MCP_NO_SANDBOX
--no-webmcpjangan kumpulkan atau tampilkan alat yang didaftarkan halaman melalui API WebMCP.
env PLAYWRIGHT_MCP_WEBMCP=false
--output-dir jalur ke direktori untuk file keluaran yang diberi nama otomatis, misalnya tangkapan layar yang diambil tanpa nama file eksplisit. File dengan nama eksplisit diselesaikan terhadap root workspace dan tidak terpengaruh oleh opsi ini.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size Ambang batas untuk mengeluarkan file keluaran lama, dalam byte.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--port port untuk mendengarkan transport SSE.
env PLAYWRIGHT_MCP_PORT
--profile-dir-name nama direktori profil di direktori data pengguna untuk terhubung dengan --extension, misalnya "Profile 1". Defaultnya adalah profil terakhir yang digunakan yang memiliki ekstensi terinstal.
env PLAYWRIGHT_MCP_PROFILE_DIR_NAME
--proxy-bypass domain yang dipisahkan koma untuk melewati proxy, misalnya ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server tentukan server proxy, misalnya "http://myproxy:3128" atau "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxaktifkan sandbox untuk semua jenis proses yang biasanya tidak di-sandbox.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionApakah akan menyimpan sesi Playwright MCP ke direktori keluaran.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets jalur ke file yang berisi rahasia dalam format dotenv
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextgunakan kembali konteks browser yang sama di antara semua klien HTTP yang terhubung.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-boxessertakan kotak pembatas setiap elemen sebagai [box=x,y,width,height] dalam snapshot. Koordinat relatif terhadap viewport, dalam piksel CSS.
env PLAYWRIGHT_MCP_SNAPSHOT_BOXES
--snapshot-mode saat mengambil snapshot untuk respons, tentukan mode yang akan digunakan. Dapat berupa "full" atau "none". Defaultnya adalah "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state jalur ke file status penyimpanan untuk sesi terisolasi.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute tentukan atribut yang akan digunakan untuk id pengujian, defaultnya adalah "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action tentukan waktu tunggu tindakan dalam milidetik, defaultnya 5000ms
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation tentukan waktu tunggu navigasi dalam milidetik, defaultnya 60000ms
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--timeout-settle berapa lama menunggu setelah setiap tindakan agar pekerjaan yang dipicu selesai, dalam milidetik, defaultnya 500ms
env PLAYWRIGHT_MCP_TIMEOUT_SETTLE
--user-agent tentukan string agen pengguna
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir jalur ke direktori data pengguna. Jika tidak ditentukan, direktori sementara akan dibuat.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size tentukan ukuran viewport browser dalam piksel, misalnya "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

Profil pengguna

Anda dapat menjalankan Playwright MCP dengan profil persisten seperti browser biasa (default), dalam konteks terisolasi untuk sesi pengujian, atau terhubung ke browser yang sudah ada menggunakan ekstensi browser.

Profil persisten

Semua informasi yang masuk akan disimpan dalam profil persisten, Anda dapat menghapusnya di antara sesi jika ingin membersihkan status offline. Profil persisten terletak di lokasi berikut dan Anda dapat menimpanya dengan argumen --user-data-dir.

# 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} berasal dari root workspace klien MCP, sehingga proyek yang berbeda otomatis mendapatkan profil terpisah.

[!IMPORTANT] Profil persisten hanya dapat digunakan oleh satu instance browser pada satu waktu, sehingga klien MCP bersamaan yang berbagi workspace yang sama akan bertentangan. Untuk menjalankan beberapa klien secara paralel, mulai setiap klien tambahan dengan --isolated atau arahkan ke --user-data-dir yang berbeda.

Terisolasi

Dalam mode terisolasi, setiap sesi dimulai dengan profil terisolasi. Setiap kali Anda meminta MCP untuk menutup browser, sesi ditutup dan semua status penyimpanan untuk sesi ini hilang. Anda dapat memberikan status penyimpanan awal ke browser melalui contextOptions konfigurasi atau melalui argumen --storage-state. Pelajari lebih lanjut tentang status penyimpanan di sini.

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

Ekstensi Browser

Ekstensi Chrome Playwright MCP memungkinkan Anda terhubung ke tab browser yang ada dan memanfaatkan sesi masuk serta status browser Anda. Lihat microsoft/playwright › packages/extension untuk petunjuk instalasi dan pengaturan.

Status awal

Ada beberapa cara untuk memberikan status awal ke konteks browser atau halaman.

Untuk status penyimpanan, Anda dapat:

  • Mulai dengan direktori data pengguna menggunakan argumen --user-data-dir. Ini akan menyimpan semua data browser di antara sesi.
  • Mulai dengan file status penyimpanan menggunakan argumen --storage-state. Ini akan memuat cookie dan penyimpanan lokal dari file ke dalam konteks browser terisolasi.

Untuk status halaman, Anda dapat menggunakan:

  • --init-page untuk menunjuk ke file TypeScript yang akan dievaluasi pada objek halaman Playwright. Ini memungkinkan Anda menjalankan kode arbitrer untuk menyiapkan halaman.
// 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 untuk menunjuk ke file JavaScript yang akan ditambahkan sebagai skrip inisialisasi. Skrip akan dievaluasi di setiap halaman sebelum skrip halaman mana pun. Ini berguna untuk menimpa API browser atau menyiapkan lingkungan.
// init-script.js
window.isPlaywrightMCP = true;

File konfigurasi

Server Playwright MCP dapat dikonfigurasi menggunakan file konfigurasi JSON. Anda dapat menentukan file konfigurasi menggunakan opsi baris perintah --config:

npx @playwright/mcp@latest --config path/to/config.json
Skema file konfigurasi
{
  /**
   * 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;

  /**
   * Whether to collect and expose the tools that a page registers through the
   * experimental WebMCP API. Enabled by default.
   */
  webmcp?: 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 for automatically named output files, for example a screenshot taken without an
   * explicit file name. Files with an explicit name are resolved against the workspace root instead
   * and are not affected by this option.
   */
  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;

    /**
     * How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
     */
    settle?: number;

    /**
     * Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
     * Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
     * The CLI shuts the whole session down instead of relaunching.
     */
    idle?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
   * With "only", a response that carries an image consists of the image parts alone, without the text part.
   */
  imageResponses?: 'allow' | 'omit' | 'only';

  /**
   * How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
   */
  filePaths?: 'relative' | 'absolute';

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

    /**
     * Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
     * Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
     */
    boxes?: boolean;
  };

  /**
   * 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' | 'python' | 'java' | 'csharp' | 'none';
}

Server MCP mandiri

Saat menjalankan browser berjendela pada sistem tanpa tampilan atau dari proses pekerja IDE, jalankan server MCP dari lingkungan dengan DISPLAY dan berikan flag --port untuk mengaktifkan transport HTTP.

npx @playwright/mcp@latest --port 8931

Dan kemudian di konfigurasi klien MCP, atur url ke endpoint HTTP:

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

Keamanan

Playwright MCP bukan merupakan batas keamanan. Lihat Praktik Terbaik Keamanan MCP untuk panduan mengamankan deployment Anda.

Docker

CATATAN: Implementasi Docker saat ini hanya mendukung chromium headless.

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

Atau jika Anda lebih suka menjalankan container sebagai layanan jangka panjang daripada membiarkan klien MCP yang memulainya, gunakan:

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

Server akan mendengarkan pada port host 8931 dan dapat diakses oleh klien MCP mana pun.

Anda dapat membangun image Docker sendiri.

docker build -t mcr.microsoft.com/playwright/mcp .
Penggunaan terprogram
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);

  // ...
});

Alat

Otomasi inti
  • browser_click
    • Judul: Klik
    • Deskripsi: Melakukan klik pada halaman web
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • doubleClick (boolean, opsional): Apakah akan melakukan klik ganda alih-alih klik tunggal
      • button (string, opsional): Tombol yang akan diklik, default ke kiri
      • modifiers (array, opsional): Tombol pengubah yang akan ditekan
    • Hanya-baca: false
  • browser_close
    • Judul: Tutup browser
    • Deskripsi: Menutup halaman
    • Parameter: Tidak ada
    • Hanya-baca: false
  • browser_console_messages
    • Judul: Dapatkan pesan konsol
    • Deskripsi: Mengembalikan semua pesan konsol
    • Parameter:
      • level (string): Tingkat pesan konsol yang akan dikembalikan. Setiap tingkat menyertakan pesan dari tingkat yang lebih parah. Default ke "info".
      • all (boolean, opsional): Mengembalikan semua pesan konsol sejak awal sesi, bukan hanya sejak navigasi terakhir. Default ke false.
      • filename (string, opsional): Nama file untuk menyimpan pesan konsol. Nama file relatif diselesaikan terhadap root workspace. Jika tidak disediakan, pesan dikembalikan sebagai teks.
    • Hanya-baca: true
  • browser_drag
    • Judul: Seret mouse
    • Deskripsi: Melakukan seret dan lepas antara dua elemen
    • Parameter:
      • startElement (string, opsional): Deskripsi elemen sumber yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • startTarget (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • endElement (string, opsional): Deskripsi elemen target yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • endTarget (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
    • Hanya-baca: false
  • browser_drop
    • Judul: Lepaskan file atau data ke elemen
    • Deskripsi: Lepaskan file atau data berjenis MIME ke elemen, seolah-olah diseret dari luar halaman. Setidaknya salah satu dari "paths" atau "data" harus disediakan.
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • paths (array, opsional): Jalur absolut ke file yang akan dilepaskan ke elemen.
      • data (object, opsional): Data yang akan dilepaskan, sebagai peta jenis MIME ke nilai string (misalnya {"text/plain": "halo", "text/uri-list": "https://example.com"}).
    • Hanya-baca: false
  • browser_emulate_media
    • Judul: Emulasikan fitur media
    • Deskripsi: Emulasikan fitur media CSS untuk halaman, misalnya beralih antara skema warna terang dan gelap. Parameter yang dihilangkan dibiarkan tidak berubah; null menghapus penimpaan.
    • Parameter:
      • colorScheme (opsional): Mengemulasikan fitur media prefers-color-scheme
      • reducedMotion (opsional): Mengemulasikan fitur media prefers-reduced-motion
      • forcedColors (opsional): Mengemulasikan fitur media forced-colors
      • contrast (opsional): Mengemulasikan fitur media prefers-contrast
      • media (opsional): Mengubah jenis media CSS halaman
    • Hanya-baca: false
  • browser_evaluate
    • Judul: Evaluasi JavaScript
    • Deskripsi: Evaluasi ekspresi JavaScript pada halaman atau elemen
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • function (string): () => { /* kode / } atau (element) => { / kode */ } saat elemen disediakan
      • filename (string, opsional): Nama file untuk menyimpan hasil. Nama file relatif diselesaikan terhadap root workspace. Jika tidak disediakan, hasil dikembalikan sebagai teks.
    • Hanya-baca: false
  • browser_file_upload
    • Judul: Unggah file
    • Deskripsi: Unggah satu atau beberapa file
    • Parameter:
      • paths (array, opsional): Jalur absolut ke file yang akan diunggah. Dapat berupa satu file atau beberapa file. Jika dihilangkan, pemilih file dibatalkan.
    • Hanya-baca: false
  • browser_fill_form
    • Judul: Isi formulir
    • Deskripsi: Isi beberapa kolom formulir
    • Parameter:
      • fields (array): Kolom yang akan diisi
    • Hanya-baca: false
  • browser_find
    • Judul: Temukan di snapshot halaman
    • Deskripsi: Cari snapshot aksesibilitas halaman saat ini untuk teks atau ekspresi reguler. Mengembalikan node snapshot yang cocok dengan beberapa baris konteks di sekitarnya (seperti cuplikan pencarian), masing-masing ditampilkan di bawah jalurnya dari akar pohon, yang lebih murah daripada menangkap seluruh snapshot saat Anda hanya perlu menemukan elemen dan ref-nya.
    • Parameter:
      • text (string, opsional): Teks biasa untuk dicari di snapshot halaman (pencocokan substring tidak peka huruf besar/kecil). Berikan teks atau regex, bukan keduanya.
      • regex (string, opsional): Ekspresi reguler untuk dicari di snapshot halaman. Pencocokan peka huruf besar/kecil secara default; bungkus pola dalam garis miring untuk menambahkan flag, misalnya "/error/i" untuk tidak peka huruf besar/kecil. Berikan teks atau regex, bukan keduanya.
      • filename (string, opsional): Simpan hasil ke file alih-alih mengembalikannya dalam respons. Nama file relatif diselesaikan terhadap root workspace.
    • Hanya-baca: true
  • browser_handle_dialog
    • Judul: Tangani dialog
    • Deskripsi: Tangani dialog
    • Parameter:
      • accept (boolean): Apakah akan menerima dialog.
      • promptText (string, opsional): Teks prompt jika berupa dialog prompt.
    • Hanya-baca: false
  • browser_hover
    • Judul: Arahkan mouse
    • Deskripsi: Arahkan kursor ke elemen pada halaman
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
    • Hanya-baca: false
  • browser_navigate
    • Judul: Navigasi ke URL
    • Deskripsi: Navigasi ke URL
    • Parameter:
      • url (string): URL yang akan dinavigasi
    • Hanya-baca: false
  • browser_navigate_back
    • Judul: Kembali
    • Deskripsi: Kembali ke halaman sebelumnya dalam riwayat
    • Parameter: Tidak ada
    • Hanya-baca: false
  • browser_network_request
    • Judul: Tampilkan detail permintaan jaringan
    • Deskripsi: Mengembalikan detail lengkap (header dan isi) dari satu permintaan jaringan, atau satu bagian jika part diatur. Gunakan nomor dari browser_network_requests.
    • Parameter:
      • index (integer): Indeks berbasis 1 dari permintaan, seperti yang dicetak oleh browser_network_requests.
      • part (string, opsional): Hanya kembalikan bagian permintaan ini. Hilangkan untuk mengembalikan detail lengkap.
      • filename (string, opsional): Nama file untuk menyimpan hasil. Nama file relatif diselesaikan terhadap root workspace. Jika tidak disediakan, output dikembalikan sebagai teks.
    • Hanya-baca: true
  • browser_network_requests
    • Judul: Daftar permintaan jaringan
    • Deskripsi: Mengembalikan daftar bernomor permintaan jaringan sejak memuat halaman. Gunakan browser_network_request dengan nomor untuk mendapatkan detail lengkap.
    • Parameter:
      • static (boolean): Apakah akan menyertakan sumber daya statis yang berhasil seperti gambar, font, skrip, dll. Default ke false.
      • filter (string, opsional): Hanya kembalikan permintaan yang URL-nya cocok dengan regexp ini (misalnya "/api/.*user").
      • filename (string, opsional): Nama file untuk menyimpan permintaan jaringan. Nama file relatif diselesaikan terhadap root workspace. Jika tidak disediakan, permintaan dikembalikan sebagai teks.
    • Hanya-baca: true
  • browser_press_key
    • Judul: Tekan tombol
    • Deskripsi: Tekan tombol pada keyboard
    • Parameter:
      • key (string): Nama tombol yang akan ditekan atau karakter yang akan dihasilkan, seperti ArrowLeft atau a
    • Hanya-baca: false
  • browser_resize
    • Judul: Ubah ukuran jendela browser
    • Deskripsi: Ubah ukuran jendela browser
    • Parameter:
      • width (number): Lebar jendela browser
      • height (number): Tinggi jendela browser
    • Hanya-baca: false
  • browser_run_code_unsafe
    • Judul: Jalankan kode Playwright (tidak aman)
    • Deskripsi: Jalankan cuplikan kode Playwright. Tidak aman: mengeksekusi JavaScript arbitrer dalam proses server Playwright dan setara dengan RCE.
    • Parameter:
      • code (string, opsional): Fungsi JavaScript yang berisi kode Playwright untuk dieksekusi. Ini akan dipanggil dengan satu argumen, page, yang dapat Anda gunakan untuk interaksi halaman apa pun. Misalnya: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, opsional): Muat kode dari file yang ditentukan. Nama file relatif diselesaikan terhadap root workspace. Jika kode dan nama file disediakan, kode akan diabaikan.
    • Hanya-baca: false
  • browser_select_option
    • Judul: Pilih opsi
    • Deskripsi: Pilih opsi dalam dropdown
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • values (array): Array nilai yang akan dipilih dalam dropdown. Ini bisa berupa satu nilai atau beberapa nilai.
    • Hanya-baca: false
  • browser_snapshot
    • Judul: Snapshot halaman
    • Deskripsi: Mengambil snapshot aksesibilitas dari halaman saat ini, ini lebih baik daripada screenshot
    • Parameter:
      • target (string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • filename (string, opsional): Simpan snapshot ke file alih-alih mengembalikannya dalam respons. Nama file relatif diselesaikan terhadap root workspace.
      • depth (number, opsional): Batasi kedalaman pohon snapshot
      • boxes (boolean, opsional): Sertakan kotak pembatas setiap elemen sebagai [box=x,y,width,height] dalam snapshot. Koordinat relatif terhadap viewport, dalam piksel CSS (Element.getBoundingClientRect)
    • Hanya-baca: true
  • browser_take_screenshot
    • Judul: Ambil screenshot
    • Deskripsi: Ambil screenshot dari halaman saat ini. Anda tidak dapat melakukan tindakan berdasarkan screenshot, gunakan browser_snapshot untuk tindakan.
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • type (string, opsional): Format gambar untuk screenshot. Jika tidak diatur, disimpulkan dari ekstensi nama file, jika tidak png.
      • filename (string, opsional): Nama file untuk menyimpan screenshot. Nama file relatif diselesaikan terhadap root workspace. Jika tidak ditentukan, screenshot disimpan ke direktori output sebagai page-{timestamp}.{png|jpeg|webp}.
      • fullPage (boolean, opsional): Jika true, mengambil screenshot dari seluruh halaman yang dapat digulir, alih-alih viewport yang terlihat saat ini. Tidak dapat digunakan dengan screenshot elemen.
      • scale (string): Skala resolusi gambar. "css" menghasilkan screenshot berukuran dalam piksel CSS (lebih kecil, konsisten di seluruh perangkat). "device" menghasilkan screenshot resolusi tinggi menggunakan piksel perangkat (lebih besar, memperhitungkan rasio piksel perangkat). Default adalah css.
    • Hanya-baca: true
  • browser_type
    • Judul: Ketik teks
    • Deskripsi: Ketik teks ke elemen yang dapat diedit
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • text (string): Teks untuk diketik ke elemen
      • submit (boolean, opsional): Apakah akan mengirimkan teks yang dimasukkan (tekan Enter setelahnya)
      • slowly (boolean, opsional): Apakah akan mengetik satu karakter pada satu waktu. Berguna untuk memicu penangan tombol di halaman. Secara default seluruh teks diisi sekaligus.
    • Hanya-baca: false
  • browser_wait_for
    • Judul: Tunggu
    • Deskripsi: Tunggu teks muncul atau hilang atau waktu tertentu berlalu
    • Parameter:
      • time (number, opsional): Waktu tunggu dalam detik, paling banyak 30
      • text (string, opsional): Teks yang ditunggu
      • textGone (string, opsional): Teks yang ditunggu untuk hilang
    • Hanya-baca: false
Manajemen tab
  • browser_tabs
    • Judul: Kelola tab
    • Deskripsi: Daftar, buat, tutup, atau pilih tab browser.
    • Parameter:
      • action (string): Operasi yang akan dilakukan
      • index (number, opsional): Indeks tab, digunakan untuk menutup/memilih. Jika dihilangkan untuk menutup, tab saat ini ditutup.
      • url (string, opsional): URL untuk dinavigasi di tab baru, digunakan untuk baru.
    • Hanya-baca: false
Instalasi browser
Konfigurasi (opsional melalui --caps=config)
  • browser_get_config
    • Judul: Dapatkan konfigurasi
    • Deskripsi: Dapatkan konfigurasi akhir yang diselesaikan setelah menggabungkan opsi CLI, variabel lingkungan, dan file konfigurasi.
    • Parameter: Tidak ada
    • Hanya-baca: true
Jaringan (opsional melalui --caps=network)
  • browser_network_state_set
    • Judul: Atur status jaringan
    • Deskripsi: Mengatur status jaringan browser menjadi online atau offline. Saat offline, semua permintaan jaringan akan gagal.
    • Parameter:
      • state (string): Atur ke "offline" untuk mensimulasikan mode offline, "online" untuk memulihkan konektivitas jaringan
    • Hanya-baca: false
  • browser_route
    • Judul: Mock permintaan jaringan
    • Deskripsi: Atur rute untuk mock permintaan jaringan yang cocok dengan pola URL
    • Parameter:
      • pattern (string): Pola URL untuk dicocokkan (mis., "/api/users", "/*.{png,jpg}")
      • status (number, opsional): Kode status HTTP untuk dikembalikan (default: 200)
      • body (string, opsional): Isi respons (teks atau string JSON)
      • contentType (string, opsional): Header Content-Type (mis., "application/json", "text/html")
      • headers (array, opsional): Header untuk ditambahkan dalam format "Nama: Nilai"
      • removeHeaders (string, opsional): Daftar nama header yang dipisahkan koma untuk dihapus dari permintaan
    • Hanya-baca: false
  • browser_route_list
    • Judul: Daftar rute jaringan
    • Deskripsi: Daftar semua rute jaringan aktif
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_unroute
    • Judul: Hapus rute jaringan
    • Deskripsi: Hapus rute jaringan yang cocok dengan pola (atau semua rute jika tidak ada pola yang ditentukan)
    • Parameter:
      • pattern (string, opsional): Pola URL untuk dihapus rutenya (hilangkan untuk menghapus semua rute)
    • Hanya-baca: false
Penyimpanan (opsional melalui --caps=storage)
  • browser_cookie_clear
    • Judul: Hapus cookie
    • Deskripsi: Hapus semua cookie
    • Parameter: Tidak ada
    • Hanya-baca: false
  • browser_cookie_delete
    • Judul: Hapus cookie
    • Deskripsi: Hapus cookie tertentu
    • Parameter:
      • name (string): Nama cookie yang akan dihapus
    • Hanya-baca: false
  • browser_cookie_get
    • Judul: Dapatkan cookie
    • Deskripsi: Dapatkan cookie tertentu berdasarkan nama
    • Parameter:
      • name (string): Nama cookie yang akan didapatkan
    • Hanya-baca: true
  • browser_cookie_list
    • Judul: Daftar cookie
    • Deskripsi: Daftar semua cookie (opsional difilter berdasarkan domain/path)
    • Parameter:
      • domain (string, opsional): Filter cookie berdasarkan domain
      • path (string, opsional): Filter cookie berdasarkan path
    • Hanya-baca: true
  • browser_cookie_set
    • Judul: Atur cookie
    • Deskripsi: Atur cookie dengan flag opsional (domain, path, expires, httpOnly, secure, sameSite)
    • Parameter:
      • name (string): Nama cookie
      • value (string): Nilai cookie
      • domain (string, opsional): Domain cookie
      • path (string, opsional): Path cookie
      • expires (number, opsional): Kedaluwarsa cookie sebagai timestamp Unix
      • httpOnly (boolean, opsional): Apakah cookie hanya HTTP
      • secure (boolean, opsional): Apakah cookie aman
      • sameSite (string, opsional): Atribut SameSite cookie
    • Hanya-baca: false
  • browser_localstorage_clear
    • Judul: Hapus localStorage
    • Deskripsi: Hapus semua localStorage
    • Parameter: Tidak ada
    • Hanya-baca: false
  • browser_localstorage_delete
    • Judul: Hapus item localStorage
    • Deskripsi: Hapus item localStorage
    • Parameter:
      • key (string): Kunci yang akan dihapus
    • Hanya-baca: false
  • browser_localstorage_get
    • Judul: Dapatkan item localStorage
    • Deskripsi: Dapatkan item localStorage berdasarkan kunci
    • Parameter:
      • key (string): Kunci yang akan didapatkan
    • Hanya-baca: true
  • browser_localstorage_list
    • Judul: Daftar localStorage
    • Deskripsi: Daftar semua pasangan kunci-nilai localStorage
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_localstorage_set
    • Judul: Atur item localStorage
    • Deskripsi: Atur item localStorage
    • Parameter:
      • key (string): Kunci yang akan diatur
      • value (string): Nilai yang akan diatur
    • Hanya-baca: false
  • browser_sessionstorage_clear
    • Judul: Hapus sessionStorage
    • Deskripsi: Hapus semua sessionStorage
    • Parameter: Tidak ada
    • Hanya-baca: false
  • browser_sessionstorage_delete
    • Judul: Hapus item sessionStorage
    • Deskripsi: Hapus item sessionStorage
    • Parameter:
      • key (string): Kunci yang akan dihapus
    • Hanya-baca: false
  • browser_sessionstorage_get
    • Judul: Dapatkan item sessionStorage
    • Deskripsi: Dapatkan item sessionStorage berdasarkan kunci
    • Parameter:
      • key (string): Kunci yang akan didapatkan
    • Hanya-baca: true
  • browser_sessionstorage_list
    • Judul: Daftar sessionStorage
    • Deskripsi: Daftar semua pasangan kunci-nilai sessionStorage
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_sessionstorage_set
    • Judul: Atur item sessionStorage
    • Deskripsi: Atur item sessionStorage
    • Parameter:
      • key (string): Kunci yang akan diatur
      • value (string): Nilai yang akan diatur
    • Hanya-baca: false
  • browser_set_storage_state
    • Judul: Pulihkan status penyimpanan
    • Deskripsi: Pulihkan status penyimpanan (cookie, penyimpanan lokal) dari file. Ini menghapus cookie dan penyimpanan lokal yang ada sebelum memulihkan.
    • Parameter:
      • filename (string): Path ke file status penyimpanan untuk dipulihkan. Nama file relatif diselesaikan terhadap root workspace.
    • Hanya-baca: false
  • browser_storage_state
    • Judul: Simpan status penyimpanan
    • Deskripsi: Simpan status penyimpanan (cookie, penyimpanan lokal) ke file untuk digunakan kembali nanti
    • Parameter:
      • filename (string, opsional): Nama file untuk menyimpan status penyimpanan. Nama file relatif diselesaikan terhadap root workspace. Jika tidak ditentukan, status penyimpanan disimpan ke direktori output sebagai storage-state-{timestamp}.json.
    • Hanya-baca: true
DevTools (opsional melalui --caps=devtools)
  • browser_annotate
    • Judul: Anotasi halaman saat ini
    • Deskripsi: Buka Playwright Dashboard dalam mode anotasi untuk halaman saat ini dan tunggu pengguna menggambar anotasi. Mengembalikan screenshot beranotasi, snapshot ARIA, dan daftar anotasi.
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_hide_highlight
    • Judul: Sembunyikan sorotan elemen
    • Deskripsi: Hapus overlay sorotan yang sebelumnya ditambahkan untuk elemen.
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia digunakan saat menambahkan sorotan; harus cocok dengan nilai yang diteruskan ke browser_highlight.
      • target (string, opsional): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
    • Hanya-baca: true
  • browser_highlight
    • Judul: Sorot elemen
    • Deskripsi: Tampilkan overlay sorotan persisten di sekitar elemen pada halaman.
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia yang digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
      • style (string, opsional): CSS inline tambahan yang diterapkan pada overlay sorotan, misalnya "outline: 2px dashed red".
    • Hanya-baca: true
  • browser_resume
    • Judul: Lanjutkan eksekusi skrip yang dijeda
    • Deskripsi: Lanjutkan eksekusi skrip setelah dijeda. Ketika dipanggil dengan step diatur ke true, eksekusi akan berhenti lagi sebelum aksi berikutnya.
    • Parameter:
      • step (boolean, opsional): Ketika true, eksekusi akan berhenti lagi sebelum aksi berikutnya, memungkinkan debugging langkah demi langkah.
      • location (string, opsional): Jeda eksekusi pada : tertentu, misalnya "example.spec.ts:42".
    • Hanya-baca: false
  • browser_start_recording
    • Judul: Mulai merekam aksi pengguna
    • Deskripsi: Mulai merekam aksi yang dilakukan pengguna di browser sebagai kode Playwright. Gunakan ini ketika pengguna ingin mendemonstrasikan alur secara manual. Panggil browser_stop_recording ketika pengguna mengatakan selesai untuk mengambil aksi yang direkam.
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_start_tracing
    • Judul: Mulai penelusuran
    • Deskripsi: Mulai perekaman penelusuran
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_start_video
    • Judul: Mulai video
    • Deskripsi: Mulai perekaman video
    • Parameter:
      • filename (string, opsional): Nama file untuk menyimpan video. Nama file relatif diselesaikan terhadap akar ruang kerja. Jika tidak ditentukan, video disimpan ke direktori keluaran sebagai video-{timestamp}.webm.
      • size (object, opsional): Ukuran video
      • fps (number, opsional): Kecepatan bingkai video dalam bingkai per detik, defaultnya 25
      • cursor (boolean, opsional): Render kursor mouse animasi yang bergerak ke setiap titik aksi. Mengatur tempo aksi sebesar 800ms sehingga kursor memiliki waktu untuk bergerak.
    • Hanya-baca: true
  • browser_stop_recording
    • Judul: Berhenti merekam aksi pengguna
    • Deskripsi: Hentikan perekaman yang dimulai dengan browser_start_recording dan kembalikan aksi yang direkam sebagai kode Playwright.
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_stop_tracing
    • Judul: Berhenti menelusuri
    • Deskripsi: Hentikan perekaman penelusuran
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_stop_video
    • Judul: Hentikan video
    • Deskripsi: Hentikan perekaman video
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_video_chapter
    • Judul: Bab video
    • Deskripsi: Tambahkan penanda bab ke perekaman video. Menampilkan kartu bab layar penuh dengan latar belakang buram.
    • Parameter:
      • title (string): Judul bab
      • description (string, opsional): Deskripsi bab
      • duration (number, opsional): Durasi dalam milidetik untuk menampilkan kartu bab
    • Hanya-baca: true
  • browser_video_hide_actions
    • Judul: Sembunyikan overlay aksi
    • Deskripsi: Berhenti memberi anotasi pada aksi yang dilakukan di halaman.
    • Parameter: Tidak ada
    • Hanya-baca: true
  • browser_video_show_actions
    • Judul: Tampilkan overlay aksi
    • Deskripsi: Beri anotasi pada aksi berikutnya yang dilakukan di halaman dengan callout yang menyebutkan nama aksi dan, ketika diberi gaya, menandai titik aksi dan menyorot elemen target. Berguna saat merekam video atau screencasting.
    • Parameter:
      • duration (number, opsional): Berapa lama setiap anotasi aksi tetap di layar, dalam milidetik. Defaultnya 500.
      • position (string, opsional): Di mana menempatkan judul aksi relatif terhadap halaman. Defaultnya kanan-atas.
      • cursor (string, opsional): Dekorasi kursor untuk aksi penunjuk. "pointer" (default) menganimasikan penunjuk mouse dari titik aksi sebelumnya ke titik berikutnya; "none" menonaktifkan dekorasi kursor.
      • style (object, opsional): Gaya dari dekorasi aksi.
    • Hanya-baca: true
Berbasis koordinat (opsional melalui --caps=vision)
  • browser_mouse_click_xy
    • Judul: Klik
    • Deskripsi: Klik tombol mouse pada posisi tertentu
    • Parameter:
      • x (number): Koordinat X
      • y (number): Koordinat Y
      • button (string, opsional): Tombol untuk diklik, defaultnya kiri
      • clickCount (number, opsional): Jumlah klik, defaultnya 1
      • delay (number, opsional): Waktu tunggu antara mouse down dan mouse up dalam milidetik, defaultnya 0
    • Hanya-baca: false
  • browser_mouse_down
    • Judul: Tekan mouse down
    • Deskripsi: Tekan mouse down
    • Parameter:
      • button (string, opsional): Tombol untuk ditekan, defaultnya kiri
    • Hanya-baca: false
  • browser_mouse_drag_xy
    • Judul: Seret mouse
    • Deskripsi: Seret tombol mouse kiri ke posisi tertentu
    • Parameter:
      • startX (number): Koordinat X awal
      • startY (number): Koordinat Y awal
      • endX (number): Koordinat X akhir
      • endY (number): Koordinat Y akhir
    • Hanya-baca: false
  • browser_mouse_move_xy
    • Judul: Gerakkan mouse
    • Deskripsi: Gerakkan mouse ke posisi tertentu
    • Parameter:
      • x (number): Koordinat X
      • y (number): Koordinat Y
    • Hanya-baca: false
  • browser_mouse_up
    • Judul: Tekan mouse up
    • Deskripsi: Tekan mouse up
    • Parameter:
      • button (string, opsional): Tombol untuk ditekan, defaultnya kiri
    • Hanya-baca: false
  • browser_mouse_wheel
    • Judul: Gulir roda mouse
    • Deskripsi: Gulir roda mouse
    • Parameter:
      • deltaX (number): Delta X
      • deltaY (number): Delta Y
    • Hanya-baca: false
Pembuatan PDF (opsional melalui --caps=pdf)
  • browser_pdf_save
    • Judul: Simpan sebagai PDF
    • Deskripsi: Simpan halaman sebagai PDF
    • Parameter:
      • filename (string, opsional): Nama file untuk menyimpan pdf. Nama file relatif diselesaikan terhadap akar ruang kerja. Jika tidak ditentukan, pdf disimpan ke direktori keluaran sebagai page-{timestamp}.pdf.
    • Hanya-baca: true
Asersi pengujian (opsional melalui --caps=testing)
  • browser_generate_locator
    • Judul: Buat locator untuk elemen
    • Deskripsi: Hasilkan locator untuk elemen yang diberikan untuk digunakan dalam pengujian
    • Parameter:
      • element (string, opsional): Deskripsi elemen yang dapat dibaca manusia yang digunakan untuk mendapatkan izin berinteraksi dengan elemen
      • target (string): Referensi elemen target yang tepat dari snapshot halaman, atau pemilih elemen unik
    • Hanya-baca: true
  • browser_verify_element_visible
    • Judul: Verifikasi elemen terlihat
    • Deskripsi: Verifikasi elemen terlihat di halaman
    • Parameter:
      • role (string): PERAN elemen. Dapat ditemukan di snapshot seperti ini: - {ROLE} "Accessible Name":
      • accessibleName (string): NAMA_AKSESIBEL elemen. Dapat ditemukan di snapshot seperti ini: - role "{ACCESSIBLE_NAME}"
    • Hanya-baca: false
  • browser_verify_list_visible
    • Judul: Verifikasi daftar terlihat
    • Deskripsi: Verifikasi daftar terlihat di halaman
    • Parameter:
      • element (string): Deskripsi daftar yang dapat dibaca manusia
      • target (string): Referensi elemen target yang tepat yang menunjuk ke daftar
      • items (array): Item untuk diverifikasi
    • Hanya-baca: false
  • browser_verify_text_visible
    • Judul: Verifikasi teks terlihat
    • Deskripsi: Verifikasi teks terlihat di halaman. Utamakan browser_verify_element_visible jika memungkinkan.
    • Parameter:
      • text (string): TEKS untuk diverifikasi. Dapat ditemukan di snapshot seperti ini: - role "Accessible Name": {TEXT} atau seperti ini: - text: {TEXT}
    • Hanya-baca: false
  • browser_verify_value
    • Judul: Verifikasi nilai
    • Deskripsi: Verifikasi nilai elemen
    • Parameter:
      • type (string): Jenis elemen
      • element (string): Deskripsi elemen yang dapat dibaca manusia
      • target (string): Referensi elemen target yang tepat dari snapshot halaman
      • value (string): Nilai untuk diverifikasi. Untuk checkbox, gunakan "true" atau "false".
    • Hanya-baca: false