Playwright MCP

resmi

Claude, Cursor ve diğer yapay zeka ajanlarından tarayıcı otomasyonu, sayfa incelemesi, ekran görüntüleri ve web etkileşimi için resmi Playwright MCP sunucusu.

Playwright MCP ile neler yapabilirsiniz?

  • Web sayfalarında gezinme ve etkileşim — asistanın bir URL açmasını, öğelere tıklamasını, formları doldurmasını veya Playwright’ın tarayıcı otomasyonunu kullanarak yapılandırılmış erişilebilirlik anlık görüntüleri çıkarmasını isteyin.
  • Tarayıcı davranışını yapılandırma--browser, --device, --viewport-size ve --user-agent argümanları aracılığıyla tarayıcı türünü, görüntü alanı boyutunu, cihaz öykünmesini veya kullanıcı aracısını ayarlayın.
  • Oturumları ve kimlik doğrulamayı yönetme — oturum açma durumunu çalıştırmalar arasında kontrol etmek için kalıcı profiller (--user-data-dir), izole oturumlar (--isolated) veya depolama durumu dosyaları (--storage-state) kullanın.
  • Mevcut bir tarayıcıya bağlanma — yeniden kimlik doğrulaması yapmadan oturum açmış oturumları yeniden kullanmak için --extension bayrağıyla çalışan bir Chrome veya Edge örneğine bağlanın.
  • Çıktıyı ve anlık görüntüleri kontrol etme--output-dir, --output-mode ve --snapshot-mode kullanarak konsol mesajlarını, ağ günlüklerini ve erişilebilirlik anlık görüntülerini dosyalara veya stdout’a yakalayın.

Dokümantasyon

Playwright MCP

Playwright kullanarak tarayıcı otomasyon yetenekleri sağlayan bir Model Bağlam Protokolü (MCP) sunucusu. Bu sunucu, LLM'lerin yapılandırılmış erişilebilirlik anlık görüntüleri aracılığıyla web sayfalarıyla etkileşime girmesini sağlar, böylece ekran görüntülerine veya görsel olarak ayarlanmış modellere olan ihtiyacı ortadan kaldırır.

Playwright MCP ve Playwright CLI Karşılaştırması

Bu paket, Playwright'a MCP arayüzü sağlar. Eğer bir kodlama ajanı kullanıyorsanız, bunun yerine CLI+SKILLS kullanmaktan fayda görebilirsiniz.

  • CLI: Modern kodlama ajanları, MCP yerine SKILL'ler olarak sunulan CLI tabanlı iş akışlarını giderek daha fazla tercih etmektedir, çünkü CLI çağrıları daha token verimlidir: büyük araç şemalarını ve ayrıntılı erişilebilirlik ağaçlarını model bağlamına yüklemekten kaçınır, ajanların özlü, amaca yönelik oluşturulmuş komutlar aracılığıyla hareket etmesine olanak tanır. Bu, CLI + SKILLS'i, sınırlı bağlam pencereleri içinde tarayıcı otomasyonunu büyük kod tabanları, testler ve akıl yürütme ile dengelemek zorunda olan yüksek verimli kodlama ajanları için daha uygun hale getirir.
    Playwright CLI with SKILLS hakkında daha fazla bilgi edinin.

  • MCP: MCP, keşif amaçlı otomasyon, kendi kendini iyileştiren testler veya sürekli tarayıcı bağlamını korumanın token maliyeti endişelerinden daha ağır bastığı uzun süreli otonom iş akışları gibi, kalıcı durum, zengin iç gözlem ve sayfa yapısı üzerinde yinelemeli akıl yürütmeden faydalanan özel ajan döngüleri için geçerliliğini korur.

Temel Özellikler

  • Hızlı ve hafif. Piksel tabanlı girdi değil, Playwright'ın erişilebilirlik ağacını kullanır.
  • LLM dostu. Görüş modellerine ihtiyaç duymaz, tamamen yapılandırılmış veriler üzerinde çalışır.
  • Deterministik araç uygulaması. Ekran görüntüsü tabanlı yaklaşımlarda yaygın olan belirsizliği önler.

Gereksinimler

  • Node.js 18 veya daha yenisi
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie veya herhangi bir diğer MCP istemcisi

Başlarken

İlk olarak, Playwright MCP sunucusunu istemcinizle birlikte kurun.

Standart yapılandırma çoğu araçta çalışır:

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

Install in VS Code Install in VS Code Insiders

Amp

Amp VS Code eklentisi ayarlar ekranından veya settings.json dosyanızı güncelleyerek ekleyin:

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

Amp CLI Kurulumu:

Aşağıdaki amp mcp add komutu ile ekleyin

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

Antigravity ayarlarından veya yapılandırma dosyanızı güncelleyerek ekleyin:

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

Playwright MCP sunucusunu eklemek için Claude Code CLI'yi kullanın:

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

MCP kurulum rehberini takip edin, yukarıdaki standart yapılandırmayı kullanın.

Cline

MCP Sunucularını Yapılandırma bölümündeki talimatları izleyin

Örnek: Yerel Kurulum

cline_mcp_settings.json dosyanıza aşağıdakini ekleyin:

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

Playwright MCP sunucusunu eklemek için Codex CLI'yi kullanın:

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

Alternatif olarak, ~/.codex/config.toml yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:

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

Daha fazla bilgi için Codex MCP belgelerine bakın.

Copilot

Playwright MCP sunucusunu etkileşimli olarak eklemek için Copilot CLI'yi kullanın:

/mcp add

Alternatif olarak, ~/.copilot/mcp-config.json yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:

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

Daha fazla bilgi için Copilot CLI belgelerine bakın.

Cursor

Yüklemek için düğmeye tıklayın:

Install in Cursor

Veya manuel olarak yükleyin:

Cursor Settings -> MCP -> Add new MCP Server adresine gidin. İstediğiniz gibi adlandırın, command türünü npx @playwright/mcp@latest komutuyla kullanın. Ayrıca Edit seçeneğine tıklayarak yapılandırmayı doğrulayabilir veya komut argümanları ekleyebilirsiniz.

Factory

Playwright MCP sunucusunu eklemek için Factory CLI'yi kullanın:

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

Alternatif olarak, MCP sunucularını yönetmek için etkileşimli bir kullanıcı arayüzü açmak üzere Factory droid içinde /mcp yazın.

Daha fazla bilgi için Factory MCP belgelerine bakın.

Gemini CLI

MCP kurulum rehberini takip edin, yukarıdaki standart yapılandırmayı kullanın.

Goose

Yüklemek için düğmeye tıklayın:

Install in Goose

Veya manuel olarak yükleyin:

Advanced settings -> Extensions -> Add custom extension adresine gidin. İstediğiniz gibi adlandırın, STDIO türünü kullanın ve command değerini npx @playwright/mcp olarak ayarlayın. "Eklenti Ekle"ye tıklayın.

Grok

Playwright MCP sunucusunu eklemek için Grok CLI'yi kullanın:

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

Alternatif olarak, ~/.grok/config.toml yapılandırma dosyasını oluşturun veya düzenleyin ve şunu ekleyin:

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

Daha fazla bilgi için Grok MCP belgelerine bakın.

Junie

Playwright MCP sunucusunu Junie CLI'ye eklemek için:

  1. /mcp yazın
  2. Yeni bir MCP sunucusu eklemek için Ctrl+A tuşuna basın
  3. Listeden Playwright'ı seçin

Alternatif olarak, .junie/mcp/mcp.json dosyasına ekleyin:

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

Daha fazla bilgi için Junie MCP yapılandırma belgelerine bakın.

Kiro

Add to Kiro

MCP Sunucuları belgelerini takip edin. Örneğin .kiro/settings/mcp.json içinde:

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

Yüklemek için düğmeye tıklayın:

Add MCP Server playwright to LM Studio

Veya manuel olarak yükleyin:

Sağ kenar çubuğundaki Program -> Install -> Edit mcp.json adresine gidin. Yukarıdaki standart yapılandırmayı kullanın.

opencode

MCP Sunucuları belgelerini takip edin. Örneğin ~/.config/opencode/opencode.json içinde:

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

Qodo Gen

VSCode veya IntelliJ'de Qodo Gen sohbet panelini açın → Daha fazla araç bağlayın → + Yeni MCP Ekle → Yukarıdaki standart yapılandırmayı yapıştırın.

Kaydet düğmesine tıklayın.

VS Code

Yüklemek için düğmeye tıklayın:

Install in VS Code Install in VS Code Insiders

Veya manuel olarak yükleyin:

MCP kurulum rehberini takip edin, yukarıdaki standart yapılandırmayı kullanın. Playwright MCP sunucusunu VS Code CLI kullanarak da yükleyebilirsiniz:

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

Kurulumdan sonra, Playwright MCP sunucusu VS Code'daki GitHub Copilot ajanınız ile kullanıma hazır olacaktır.

Warp

Bir MCP Sunucusu eklemek için Settings -> AI -> Manage MCP Servers -> + Add adresine gidin. Yukarıdaki standart yapılandırmayı kullanın.

Alternatif olarak, Warp isteminde /add-mcp eğik çizgi komutunu kullanın ve yukarıdaki standart yapılandırmayı yapıştırın:

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

Windsurf MCP belgelerini takip edin. Yukarıdaki standart yapılandırmayı kullanın.

Yapılandırma

Playwright MCP sunucusu aşağıdaki argümanları destekler. Bunlar, yukarıdaki JSON yapılandırmasında "args" listesinin bir parçası olarak sağlanabilir:

SeçenekAçıklama
--allowed-hosts <hosts...>Bu sunucunun hizmet verebileceği ana bilgisayarların virgülle ayrılmış listesi. Varsayılan olarak sunucunun bağlı olduğu ana bilgisayardır. Ana bilgisayar denetimini devre dışı bırakmak için '*' iletin.
ortam PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins Tarayıcının istekte bulunmasına izin verilen GÜVENİLİR kaynakların noktalı virgülle ayrılmış listesi. Varsayılan olarak tümüne izin verilir. Önemli: bir güvenlik sınırı görevi görmez ve yönlendirmeleri etkilemez.
ortam PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessÇalışma alanı köklerinin dışındaki dosyalara erişime izin verir. Ayrıca file:// URL'lerine sınırsız erişime izin verir. Varsayılan olarak dosya sistemine erişim yalnızca çalışma alanı kök dizinleriyle (veya hiçbir kök yapılandırılmamışsa cwd) sınırlıdır ve file:// URL'lerine gezinme engellenir.
ortam PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins Tarayıcının istekte bulunmasının engelleneceği kaynakların noktalı virgülle ayrılmış listesi. Engelleme listesi, izin verme listesinden önce değerlendirilir. İzin verme listesi olmadan kullanılırsa, engelleme listesiyle eşleşmeyen isteklere yine de izin verilir. Önemli: bir güvenlik sınırı görevi görmez ve yönlendirmeleri etkilemez.
ortam PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersServis çalışanlarını engeller
ortam PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser Kullanılacak tarayıcı veya chrome kanalı, olası değerler: chrome, firefox, webkit, msedge.
ortam PLAYWRIGHT_MCP_BROWSER
--caps Etkinleştirilecek ek yeteneklerin virgülle ayrılmış listesi, olası değerler: vision, pdf, devtools.
ortam PLAYWRIGHT_MCP_CAPS
--cdp-endpoint Bağlanılacak CDP uç noktası.
ortam PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>Bağlantı isteğiyle gönderilecek CDP başlıkları, birden fazla belirtilebilir.
ortam PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout CDP uç noktasına bağlanmak için milisaniye cinsinden zaman aşımı, varsayılan 30000ms
ortam PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen Kod üretimi için kullanılacak dili belirtin, olası değerler: "typescript", "none". Varsayılan "typescript"tir.
ortam PLAYWRIGHT_MCP_CODEGEN
--config Yapılandırma dosyasının yolu.
ortam PLAYWRIGHT_MCP_CONFIG
--console-level Döndürülecek konsol mesajlarının seviyesi: "error", "warning", "info", "debug". Her seviye, daha kritik seviyelerin mesajlarını da içerir.
ortam PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device Öykünülecek cihaz, örneğin: "iPhone 15"
ortam PLAYWRIGHT_MCP_DEVICE
--mobileGenel bir mobil cihazı öykünür (Chromium için Pixel 10, WebKit için iPhone 17). Mobil sayfalar genellikle daha hafiftir, bu da token tasarrufu sağlar. --device ile birleştirilemez.
ortam PLAYWRIGHT_MCP_MOBILE
--executable-path Tarayıcı yürütülebilir dosyasının yolu.
ortam PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionÇalışan bir tarayıcı örneğine bağlanır (yalnızca Edge/Chrome). "Playwright Uzantısı"nın yüklü olmasını gerektirir.
ortam PLAYWRIGHT_MCP_EXTENSION
--endpoint Bağlanılacak bağlı tarayıcı uç noktası.
ortam PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>Tarayıcı bağlamına verilecek izinlerin listesi, örneğin "geolocation", "clipboard-read", "clipboard-write".
ortam PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessTarayıcıyı başsız modda çalıştırır, varsayılan olarak başlıdır
ortam PLAYWRIGHT_MCP_HEADLESS
--host Sunucunun bağlanacağı ana bilgisayar. Varsayılan localhost'tur. Tüm arayüzlere bağlanmak için 0.0.0.0 kullanın.
ortam PLAYWRIGHT_MCP_HOST
--ignore-https-errorshttps hatalarını yok sayar
ortam PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>Playwright sayfa nesnesi üzerinde değerlendirilecek TypeScript dosyasının yolu
ortam PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>Başlatma betiği olarak eklenecek JavaScript dosyasının yolu. Betik, sayfanın kendi betiklerinden önce her sayfada değerlendirilir. Birden çok kez belirtilebilir.
ortam PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedTarayıcı profilini bellekte tutar, diske kaydetmez.
ortam PLAYWRIGHT_MCP_ISOLATED
--image-responses İstemciye görüntü yanıtlarının gönderilip gönderilmeyeceği. "allow" veya "omit" olabilir, Varsayılan "allow"dur.
ortam PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxNormalde korumalı alanda çalışan tüm işlem türleri için korumalı alanı devre dışı bırakır.
ortam PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir Çıktı dosyaları için dizinin yolu.
ortam PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size Eski çıktı dosyalarını çıkarmak için bayt cinsinden eşik.
ortam PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--output-mode Anlık görüntülerin, konsol mesajlarının, ağ günlüklerinin bir dosyaya mı yoksa standart çıktıya mı kaydedileceği. "file" veya "stdout" olabilir. Varsayılan "stdout"tur.
ortam PLAYWRIGHT_MCP_OUTPUT_MODE
--port SSE taşıması için dinlenecek bağlantı noktası.
ortam PLAYWRIGHT_MCP_PORT
--proxy-bypass Proxy'yi atlayacak virgülle ayrılmış alan adları, örneğin ".com,chromium.org,.domain.com"
ortam PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server Proxy sunucusunu belirtin, örneğin "http://myproxy:3128" veya "socks5://myproxy:8080"
ortam PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxNormalde korumalı alanda çalışmayan tüm işlem türleri için korumalı alanı etkinleştirir.
ortam PLAYWRIGHT_MCP_SANDBOX
--save-sessionPlaywright MCP oturumunun çıktı dizinine kaydedilip kaydedilmeyeceği.
ortam PLAYWRIGHT_MCP_SAVE_SESSION
--secrets Dotenv formatında sırları içeren bir dosyanın yolu
ortam PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextBağlı tüm HTTP istemcileri arasında aynı tarayıcı bağlamını yeniden kullanır.
ortam PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-mode Yanıtlar için anlık görüntü alırken kullanılacak modu belirtir. "full" veya "none" olabilir. Varsayılan "full"dür.
ortam PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state Yalıtılmış oturumlar için depolama durumu dosyasının yolu.
ortam PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute Test kimlikleri için kullanılacak özniteliği belirtin, varsayılan "data-testid"
ortam PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action Eylem zaman aşımını milisaniye cinsinden belirtin, varsayılan 5000ms
ortam PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation Gezinme zaman aşımını milisaniye cinsinden belirtin, varsayılan 60000ms
ortam PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--user-agent Kullanıcı aracısı dizesini belirtin
ortam PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir Kullanıcı veri dizininin yolu. Belirtilmezse geçici bir dizin oluşturulur.
ortam PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size Tarayıcı görünüm alanı boyutunu piksel cinsinden belirtin, örneğin "1280x720"
ortam PLAYWRIGHT_MCP_VIEWPORT_SIZE

Kullanıcı profili

Playwright MCP'yi normal bir tarayıcı gibi kalıcı profille (varsayılan), test oturumları için yalıtılmış bağlamlarda çalıştırabilir veya tarayıcı uzantısını kullanarak mevcut tarayıcınıza bağlanabilirsiniz.

Kalıcı profil

Oturum açmış tüm bilgiler kalıcı profilde saklanır, çevrimdışı durumu temizlemek isterseniz oturumlar arasında silebilirsiniz. Kalıcı profil aşağıdaki konumlarda bulunur ve --user-data-dir argümanıyla geçersiz kılabilirsiniz.

# 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}, MCP istemcisinin çalışma alanı kökünden türetilir, böylece farklı projeler otomatik olarak ayrı profiller alır.

[!ÖNEMLİ] Kalıcı bir profil aynı anda yalnızca bir tarayıcı örneği tarafından kullanılabilir, bu nedenle aynı çalışma alanını paylaşan eşzamanlı MCP istemcileri çakışır. Birkaç istemciyi paralel olarak çalıştırmak için, her ek istemciyi --isolated ile başlatın veya farklı bir --user-data-dir'ye yönlendirin.

Yalıtılmış

Yalıtılmış modda, her oturum yalıtılmış profilde başlatılır. MCP'den tarayıcıyı kapatmasını her istediğinizde, oturum kapatılır ve bu oturum için tüm depolama durumu kaybolur. Tarayıcıya, yapılandırmanın contextOptions aracılığıyla veya --storage-state argümanıyla başlangıç depolama durumu sağlayabilirsiniz. Depolama durumu hakkında daha fazla bilgiyi burada bulabilirsiniz.

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

Tarayıcı Uzantısı

Playwright MCP Chrome Uzantısı, mevcut tarayıcı sekmelerine bağlanmanıza ve oturum açmış oturumlarınızdan ve tarayıcı durumunuzdan yararlanmanıza olanak tanır. Kurulum ve yapılandırma talimatları için microsoft/playwright › packages/extension adresine bakın.

Başlangıç durumu

Tarayıcı bağlamına veya bir sayfaya başlangıç durumu sağlamanın birden çok yolu vardır.

Depolama durumu için şunları yapabilirsiniz:

  • --user-data-dir argümanını kullanarak bir kullanıcı veri dizini ile başlayın. Bu, oturumlar arasında tüm tarayıcı verilerini kalıcı hale getirir.
  • --storage-state argümanını kullanarak bir depolama durumu dosyası ile başlayın. Bu, çerezleri ve yerel depolamayı dosyadan yalıtılmış bir tarayıcı bağlamına yükler.

Sayfa durumu için şunları kullanabilirsiniz:

  • --init-page Playwright sayfa nesnesi üzerinde değerlendirilecek bir TypeScript dosyasına işaret eder. Bu, sayfayı kurmak için rastgele kod çalıştırmanıza olanak tanır.
// 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 başlatma betiği olarak eklenecek bir JavaScript dosyasına işaret eder. Betik, sayfanın kendi betiklerinden önce her sayfada değerlendirilir. Bu, tarayıcı API'lerini geçersiz kılmak veya ortamı kurmak için kullanışlıdır.
// init-script.js
window.isPlaywrightMCP = true;

Yapılandırma dosyası

Playwright MCP sunucusu, bir JSON yapılandırma dosyası kullanılarak yapılandırılabilir. Yapılandırma dosyasını --config komut satırı seçeneğini kullanarak belirtebilirsiniz:

npx @playwright/mcp@latest --config path/to/config.json
Yapılandırma dosyası şeması
{
  /**
   * 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';
}

Bağımsız MCP sunucusu

Ekranı olmayan bir sistemde veya IDE'lerin çalışan işlemlerinden başlı tarayıcı çalıştırırken, MCP sunucusunu DISPLAY'in olduğu ortamdan çalıştırın ve HTTP taşımasını etkinleştirmek için --port bayrağını iletin.

npx @playwright/mcp@latest --port 8931

Ve ardından MCP istemci yapılandırmasında, url'i HTTP uç noktasına ayarlayın:

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

Güvenlik

Playwright MCP bir güvenlik sınırı değildir. Dağıtımınızı güvence altına alma konusunda rehberlik için MCP Güvenlik En İyi Uygulamaları belgesine bakın.

Docker

NOT: Docker uygulaması şu anda yalnızca başsız chromium'u desteklemektedir.

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

Veya MCP istemcisinin konteyneri oluşturmasına izin vermek yerine, konteyneri uzun ömürlü bir hizmet olarak çalıştırmayı tercih ederseniz, şunu kullanın:

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

Sunucu, ana makine bağlantı noktası 8931'de dinleyecek ve herhangi bir MCP istemcisi tarafından erişilebilir olacaktır.

Docker imajını kendiniz oluşturabilirsiniz.

docker build -t mcr.microsoft.com/playwright/mcp .
Programatik kullanım
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);

  // ...
});

Araçlar

Temel otomasyon
  • browser_click
    • Başlık: Tıklama
    • Açıklama: Bir web sayfasında tıklama gerçekleştirir
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • doubleClick (boolean, isteğe bağlı): Tek tıklama yerine çift tıklama yapılıp yapılmayacağı
      • button (string, isteğe bağlı): Tıklanacak düğme, varsayılan sol
      • modifiers (array, isteğe bağlı): Basılacak değiştirici tuşlar
    • Salt okunur: false
  • browser_close
    • Başlık: Tarayıcıyı kapat
    • Açıklama: Sayfayı kapatır
    • Parametreler: Yok
    • Salt okunur: false
  • browser_console_messages
    • Başlık: Konsol mesajlarını al
    • Açıklama: Tüm konsol mesajlarını döndürür
    • Parametreler:
      • level (string): Döndürülecek konsol mesajlarının seviyesi. Her seviye, daha kritik seviyelerdeki mesajları da içerir. Varsayılan "info".
      • all (boolean, isteğe bağlı): Yalnızca son gezinmeden bu yana değil, oturumun başlangıcından itibaren tüm konsol mesajlarını döndür. Varsayılan false.
      • filename (string, isteğe bağlı): Konsol mesajlarının kaydedileceği dosya adı. Belirtilmezse, mesajlar metin olarak döndürülür.
    • Salt okunur: true
  • browser_drag
    • Başlık: Fareyi sürükle
    • Açıklama: İki öğe arasında sürükle ve bırak gerçekleştirir
    • Parametreler:
      • startElement (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir kaynak öğe açıklaması
      • startTarget (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • endElement (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir hedef öğe açıklaması
      • endTarget (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
    • Salt okunur: false
  • browser_drop
    • Başlık: Bir öğeye dosya veya veri bırak
    • Açıklama: Sayfanın dışından sürüklenmiş gibi, bir öğeye dosyalar veya MIME türünde veri bırakır. "paths" veya "data"dan en az biri sağlanmalıdır.
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • paths (array, isteğe bağlı): Öğeye bırakılacak dosyaların mutlak yolları.
      • data (object, isteğe bağlı): MIME türünden string değere eşleme olarak bırakılacak veri (örn. {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • Salt okunur: false
  • browser_evaluate
    • Başlık: JavaScript değerlendir
    • Açıklama: Sayfa veya öğe üzerinde JavaScript ifadesini değerlendirir
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • function (string): () => { /* kod / } veya öğe sağlandığında (element) => { / kod */ }
      • filename (string, isteğe bağlı): Sonucun kaydedileceği dosya adı. Belirtilmezse, sonuç metin olarak döndürülür.
    • Salt okunur: false
  • browser_file_upload
    • Başlık: Dosya yükle
    • Açıklama: Bir veya birden fazla dosya yükler
    • Parametreler:
      • paths (array, isteğe bağlı): Yüklenecek dosyaların mutlak yolları. Tek dosya veya birden fazla dosya olabilir. Atlanırsa, dosya seçici iptal edilir.
    • Salt okunur: false
  • browser_fill_form
    • Başlık: Formu doldur
    • Açıklama: Birden fazla form alanını doldurur
    • Parametreler:
      • fields (array): Doldurulacak alanlar
    • Salt okunur: false
  • browser_find
    • Başlık: Sayfa anlık görüntüsünde bul
    • Açıklama: Geçerli sayfanın erişilebilirlik anlık görüntüsünde metin veya düzenli ifade arar. Eşleşen anlık görüntü düğümlerini, birkaç satır çevreleyen bağlamla (arama parçacıkları gibi) birlikte, her biri ağacın kökünden itibaren yolu altında göstererek döndürür; bu, yalnızca bir öğeyi ve referansını bulmanız gerektiğinde tüm anlık görüntüyü yakalamaktan daha ucuzdur.
    • Parametreler:
      • text (string, isteğe bağlı): Sayfa anlık görüntüsünde aranacak düz metin (büyük/küçük harf duyarsız alt dize eşleşmesi). Metin veya regex'ten yalnızca birini sağlayın, ikisini birden değil.
      • regex (string, isteğe bağlı): Sayfa anlık görüntüsünde aranacak düzenli ifade. Eşleştirme varsayılan olarak büyük/küçük harf duyarlıdır; büyük/küçük harf duyarsız için deseni eğik çizgi içine alarak bayraklar ekleyin, örn. "/error/i". Metin veya regex'ten yalnızca birini sağlayın, ikisini birden değil.
    • Salt okunur: true
  • browser_handle_dialog
    • Başlık: Bir diyaloğu yönet
    • Açıklama: Bir diyaloğu yönetir
    • Parametreler:
      • accept (boolean): Diyaloğun kabul edilip edilmeyeceği.
      • promptText (string, isteğe bağlı): Bir bilgi istemi diyaloğu durumunda istemin metni.
    • Salt okunur: false
  • browser_hover
    • Başlık: Fareyle üzerine gel
    • Açıklama: Sayfadaki öğenin üzerine gelir
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
    • Salt okunur: false
  • browser_navigate
    • Başlık: Bir URL'ye git
    • Açıklama: Bir URL'ye gider
    • Parametreler:
      • url (string): Gidilecek URL
    • Salt okunur: false
  • browser_navigate_back
    • Başlık: Geri git
    • Açıklama: Geçmişteki önceki sayfaya geri döner
    • Parametreler: Yok
    • Salt okunur: false
  • browser_network_request
    • Başlık: Ağ isteği ayrıntılarını göster
    • Açıklama: Tek bir ağ isteğinin tam ayrıntılarını (başlıklar ve gövde) veya part ayarlanmışsa tek bir parçasını döndürür. browser_network_requests'teki numarayı kullanın.
    • Parametreler:
      • index (integer): browser_network_requests tarafından yazdırılan, 1 tabanlı istek indeksi.
      • part (string, isteğe bağlı): İsteğin yalnızca bu kısmını döndür. Tam ayrıntıları döndürmek için atlayın.
      • filename (string, isteğe bağlı): Sonucun kaydedileceği dosya adı. Belirtilmezse, çıktı metin olarak döndürülür.
    • Salt okunur: true
  • browser_network_requests
    • Başlık: Ağ isteklerini listele
    • Açıklama: Sayfa yüklendikten sonraki ağ isteklerinin numaralandırılmış bir listesini döndürür. Tam ayrıntıları almak için numarayla birlikte browser_network_request'i kullanın.
    • Parametreler:
      • static (boolean): Resimler, yazı tipleri, betikler gibi başarılı statik kaynakların dahil edilip edilmeyeceği. Varsayılan false.
      • filter (string, isteğe bağlı): Yalnızca URL'si bu regex ile eşleşen istekleri döndür (örn. "/api/.*user").
      • filename (string, isteğe bağlı): Ağ isteklerinin kaydedileceği dosya adı. Belirtilmezse, istekler metin olarak döndürülür.
    • Salt okunur: true
  • browser_press_key
    • Başlık: Bir tuşa bas
    • Açıklama: Klavyede bir tuşa basar
    • Parametreler:
      • key (string): Basılacak tuşun adı veya oluşturulacak bir karakter, örneğin ArrowLeft veya a
    • Salt okunur: false
  • browser_resize
    • Başlık: Tarayıcı penceresini yeniden boyutlandır
    • Açıklama: Tarayıcı penceresini yeniden boyutlandırır
    • Parametreler:
      • width (number): Tarayıcı penceresinin genişliği
      • height (number): Tarayıcı penceresinin yüksekliği
    • Salt okunur: false
  • browser_run_code_unsafe
    • Başlık: Playwright kodu çalıştır (güvensiz)
    • Açıklama: Bir Playwright kod parçacığı çalıştırır. Güvensiz: Playwright sunucu sürecinde rastgele JavaScript yürütür ve RCE eşdeğeridir.
    • Parametreler:
      • code (string, isteğe bağlı): Yürütülecek Playwright kodunu içeren bir JavaScript fonksiyonu. Herhangi bir sayfa etkileşimi için kullanabileceğiniz tek bir argüman olan page ile çağrılacaktır. Örneğin: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, isteğe bağlı): Belirtilen dosyadan kod yükle. Hem kod hem de dosya adı sağlanırsa, kod yok sayılır.
    • Salt okunur: false
  • browser_select_option
    • Başlık: Seçenek seç
    • Açıklama: Bir açılır listede seçenek seçer
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • values (array): Açılır listede seçilecek değerler dizisi. Bu, tek bir değer veya birden fazla değer olabilir.
    • Salt okunur: false
  • browser_snapshot
    • Başlık: Sayfa anlık görüntüsü
    • Açıklama: Geçerli sayfanın erişilebilirlik anlık görüntüsünü yakalar, bu ekran görüntüsünden daha iyidir
    • Parametreler:
      • target (string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • filename (string, isteğe bağlı): Anlık görüntüyü yanıtta döndürmek yerine markdown dosyasına kaydet.
      • depth (number, isteğe bağlı): Anlık görüntü ağacının derinliğini sınırla
      • boxes (boolean, isteğe bağlı): Anlık görüntüde her öğenin sınırlayıcı kutusunu [box=x,y,width,height] olarak dahil et. Koordinatlar, CSS piksellerinde (Element.getBoundingClientRect) görünüm alanına görelidir
    • Salt okunur: true
  • browser_take_screenshot
    • Başlık: Ekran görüntüsü al
    • Açıklama: Geçerli sayfanın ekran görüntüsünü alır. Ekran görüntüsüne dayalı eylemler gerçekleştiremezsiniz, eylemler için browser_snapshot kullanın.
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • type (string): Ekran görüntüsü için resim formatı. Varsayılan png.
      • filename (string, isteğe bağlı): Ekran görüntüsünün kaydedileceği dosya adı. Belirtilmezse varsayılan page-{timestamp}.{png|jpeg} olur. Çıktı dizini içinde kalmak için göreli dosya adlarını tercih edin.
      • fullPage (boolean, isteğe bağlı): true olduğunda, şu anda görünen görünüm alanı yerine tam kaydırılabilir sayfanın ekran görüntüsünü alır. Öğe ekran görüntüleriyle kullanılamaz.
      • scale (string): Resim çözünürlük ölçeği. "css", CSS piksellerinde boyutlandırılmış bir ekran görüntüsü üretir (daha küçük, cihazlar arası tutarlı). "device", cihaz piksellerini kullanarak yüksek çözünürlüklü bir ekran görüntüsü üretir (daha büyük, cihaz piksel oranını hesaba katar). Varsayılan css.
    • Salt okunur: true
  • browser_type
    • Başlık: Metin yaz
    • Açıklama: Düzenlenebilir öğeye metin yazar
    • Parametreler:
      • element (string, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan, insan tarafından okunabilir öğe açıklaması
      • target (string): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • text (string): Öğeye yazılacak metin
      • submit (boolean, isteğe bağlı): Girilen metnin gönderilip gönderilmeyeceği (ardından Enter'a bas)
      • slowly (boolean, isteğe bağlı): Her seferinde bir karakter yazılıp yazılmayacağı. Sayfadaki tuş işleyicilerini tetiklemek için kullanışlıdır. Varsayılan olarak metnin tamamı bir kerede doldurulur.
    • Salt okunur: false
  • browser_wait_for
    • Başlık: Bekle
    • Açıklama: Metnin görünmesini veya kaybolmasını ya da belirli bir sürenin geçmesini bekle
    • Parametreler:
      • time (sayı, isteğe bağlı): Saniye cinsinden beklenecek süre
      • text (metin, isteğe bağlı): Beklenecek metin
      • textGone (metin, isteğe bağlı): Kaybolması beklenecek metin
    • Salt okunur: false
Sekme yönetimi
  • browser_tabs
    • Başlık: Sekmeleri yönet
    • Açıklama: Tarayıcı sekmesini listele, oluştur, kapat veya seç.
    • Parametreler:
      • action (metin): Gerçekleştirilecek işlem
      • index (sayı, isteğe bağlı): Kapatma/seçme için kullanılan sekme indeksi. Kapatma için belirtilmezse, mevcut sekme kapatılır.
      • url (metin, isteğe bağlı): Yeni sekmede gidilecek URL, yeni için kullanılır.
    • Salt okunur: false
Tarayıcı kurulumu
Yapılandırma (--caps=config ile dahil et)
  • browser_get_config
    • Başlık: Yapılandırmayı al
    • Açıklama: CLI seçenekleri, ortam değişkenleri ve yapılandırma dosyası birleştirildikten sonraki nihai çözümlenmiş yapılandırmayı al.
    • Parametreler: Yok
    • Salt okunur: true
Ağ (--caps=network ile dahil et)
  • browser_network_state_set
    • Başlık: Ağ durumunu ayarla
    • Açıklama: Tarayıcı ağ durumunu çevrimiçi veya çevrimdışı olarak ayarlar. Çevrimdışıyken, tüm ağ istekleri başarısız olur.
    • Parametreler:
      • state (metin): Çevrimdışı modu simüle etmek için "offline", ağ bağlantısını geri yüklemek için "online" olarak ayarlayın
    • Salt okunur: false
  • browser_route
    • Başlık: Ağ isteklerini taklit et
    • Açıklama: Bir URL deseniyle eşleşen ağ isteklerini taklit etmek için bir rota ayarla
    • Parametreler:
      • pattern (metin): Eşleşecek URL deseni (örn., "/api/users", "/*.{png,jpg}")
      • status (sayı, isteğe bağlı): Döndürülecek HTTP durum kodu (varsayılan: 200)
      • body (metin, isteğe bağlı): Yanıt gövdesi (metin veya JSON dizesi)
      • contentType (metin, isteğe bağlı): Content-Type başlığı (örn., "application/json", "text/html")
      • headers (dizi, isteğe bağlı): "Ad: Değer" biçiminde eklenecek başlıklar
      • removeHeaders (metin, isteğe bağlı): İstekten kaldırılacak başlık adlarının virgülle ayrılmış listesi
    • Salt okunur: false
  • browser_route_list
    • Başlık: Ağ rotalarını listele
    • Açıklama: Tüm aktif ağ rotalarını listele
    • Parametreler: Yok
    • Salt okunur: true
  • browser_unroute
    • Başlık: Ağ rotalarını kaldır
    • Açıklama: Bir desenle eşleşen ağ rotalarını kaldır (veya desen belirtilmezse tüm rotaları)
    • Parametreler:
      • pattern (metin, isteğe bağlı): Kaldırılacak URL deseni (tüm rotaları kaldırmak için belirtmeyin)
    • Salt okunur: false
Depolama (--caps=storage ile dahil et)
  • browser_cookie_clear
    • Başlık: Çerezleri temizle
    • Açıklama: Tüm çerezleri temizle
    • Parametreler: Yok
    • Salt okunur: false
  • browser_cookie_delete
    • Başlık: Çerez sil
    • Açıklama: Belirli bir çerezi sil
    • Parametreler:
      • name (metin): Silinecek çerez adı
    • Salt okunur: false
  • browser_cookie_get
    • Başlık: Çerez al
    • Açıklama: Ada göre belirli bir çerezi al
    • Parametreler:
      • name (metin): Alınacak çerez adı
    • Salt okunur: true
  • browser_cookie_list
    • Başlık: Çerezleri listele
    • Açıklama: Tüm çerezleri listele (isteğe bağlı olarak alan adı/yol ile filtrele)
    • Parametreler:
      • domain (metin, isteğe bağlı): Çerezleri alan adına göre filtrele
      • path (metin, isteğe bağlı): Çerezleri yola göre filtrele
    • Salt okunur: true
  • browser_cookie_set
    • Başlık: Çerez ayarla
    • Açıklama: İsteğe bağlı bayraklarla (domain, path, expires, httpOnly, secure, sameSite) bir çerez ayarla
    • Parametreler:
      • name (metin): Çerez adı
      • value (metin): Çerez değeri
      • domain (metin, isteğe bağlı): Çerez alan adı
      • path (metin, isteğe bağlı): Çerez yolu
      • expires (sayı, isteğe bağlı): Unix zaman damgası olarak çerez sona erme süresi
      • httpOnly (boolean, isteğe bağlı): Çerezin yalnızca HTTP olup olmadığı
      • secure (boolean, isteğe bağlı): Çerezin güvenli olup olmadığı
      • sameSite (metin, isteğe bağlı): Çerez SameSite özelliği
    • Salt okunur: false
  • browser_localstorage_clear
    • Başlık: localStorage'ı temizle
    • Açıklama: Tüm localStorage'ı temizle
    • Parametreler: Yok
    • Salt okunur: false
  • browser_localstorage_delete
    • Başlık: localStorage öğesini sil
    • Açıklama: Bir localStorage öğesini sil
    • Parametreler:
      • key (metin): Silinecek anahtar
    • Salt okunur: false
  • browser_localstorage_get
    • Başlık: localStorage öğesini al
    • Açıklama: Anahtara göre bir localStorage öğesini al
    • Parametreler:
      • key (metin): Alınacak anahtar
    • Salt okunur: true
  • browser_localstorage_list
    • Başlık: localStorage'ı listele
    • Açıklama: Tüm localStorage anahtar-değer çiftlerini listele
    • Parametreler: Yok
    • Salt okunur: true
  • browser_localstorage_set
    • Başlık: localStorage öğesini ayarla
    • Açıklama: Bir localStorage öğesini ayarla
    • Parametreler:
      • key (metin): Ayarlanacak anahtar
      • value (metin): Ayarlanacak değer
    • Salt okunur: false
  • browser_sessionstorage_clear
    • Başlık: sessionStorage'ı temizle
    • Açıklama: Tüm sessionStorage'ı temizle
    • Parametreler: Yok
    • Salt okunur: false
  • browser_sessionstorage_delete
    • Başlık: sessionStorage öğesini sil
    • Açıklama: Bir sessionStorage öğesini sil
    • Parametreler:
      • key (metin): Silinecek anahtar
    • Salt okunur: false
  • browser_sessionstorage_get
    • Başlık: sessionStorage öğesini al
    • Açıklama: Anahtara göre bir sessionStorage öğesini al
    • Parametreler:
      • key (metin): Alınacak anahtar
    • Salt okunur: true
  • browser_sessionstorage_list
    • Başlık: sessionStorage'ı listele
    • Açıklama: Tüm sessionStorage anahtar-değer çiftlerini listele
    • Parametreler: Yok
    • Salt okunur: true
  • browser_sessionstorage_set
    • Başlık: sessionStorage öğesini ayarla
    • Açıklama: Bir sessionStorage öğesini ayarla
    • Parametreler:
      • key (metin): Ayarlanacak anahtar
      • value (metin): Ayarlanacak değer
    • Salt okunur: false
  • browser_set_storage_state
    • Başlık: Depolama durumunu geri yükle
    • Açıklama: Bir dosyadan depolama durumunu (çerezler, local storage) geri yükle. Bu, geri yüklemeden önce mevcut çerezleri ve local storage'ı temizler.
    • Parametreler:
      • filename (metin): Geri yüklenecek depolama durumu dosyasının yolu
    • Salt okunur: false
  • browser_storage_state
    • Başlık: Depolama durumunu kaydet
    • Açıklama: Daha sonra yeniden kullanmak üzere depolama durumunu (çerezler, local storage) bir dosyaya kaydet
    • Parametreler:
      • filename (metin, isteğe bağlı): Depolama durumunun kaydedileceği dosya adı. Belirtilmezse varsayılan olarak storage-state-{timestamp}.json kullanılır.
    • Salt okunur: true
DevTools (--caps=devtools ile dahil et)
  • browser_annotate
    • Başlık: Mevcut sayfayı açıkla
    • Açıklama: Mevcut sayfa için Playwright Dashboard'u açıklama modunda açar ve kullanıcının açıklamalar çizmesini bekler. Açıklamalı ekran görüntüsünü, ARIA anlık görüntüsünü ve açıklamaların listesini döndürür.
    • Parametreler: Yok
    • Salt okunur: true
  • browser_hide_highlight
    • Başlık: Öğe vurgusunu gizle
    • Açıklama: Öğe için daha önce eklenmiş bir vurgu kaplamasını kaldır.
    • Parametreler:
      • element (metin, isteğe bağlı): Vurgu eklenirken kullanılan insan tarafından okunabilir öğe açıklaması; browser_highlight'a iletilen değerle eşleşmelidir.
      • target (metin, isteğe bağlı): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
    • Salt okunur: true
  • browser_highlight
    • Başlık: Öğeyi vurgula
    • Açıklama: Sayfadaki öğenin etrafında kalıcı bir vurgu kaplaması göster.
    • Parametreler:
      • element (metin, isteğe bağlı): Öğeyle etkileşim kurma izni almak için kullanılan insan tarafından okunabilir öğe açıklaması
      • target (metin): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
      • style (metin, isteğe bağlı): Vurgu kaplamasına uygulanan ek satır içi CSS, örn. "outline: 2px dashed red".
    • Salt okunur: true
  • browser_resume
    • Başlık: Duraklatılmış betik yürütmeyi sürdür
    • Açıklama: Duraklatıldıktan sonra betik yürütmeyi sürdür. step true olarak ayarlanarak çağrıldığında, yürütme bir sonraki eylemden önce tekrar duraklayacaktır.
    • Parametreler:
      • step (boolean, isteğe bağlı): true olduğunda, yürütme bir sonraki eylemden önce tekrar duraklayarak adım adım hata ayıklamaya izin verir.
      • location (metin, isteğe bağlı): Belirli bir : konumunda yürütmeyi duraklat, örn. "example.spec.ts:42".
    • Salt okunur: false
  • browser_start_tracing
    • Başlık: İzlemeyi başlat
    • Açıklama: İz kaydını başlat
    • Parametreler: Yok
    • Salt okunur: true
  • browser_start_video
    • Başlık: Videoyu başlat
    • Açıklama: Video kaydını başlat
    • Parametreler:
      • filename (metin, isteğe bağlı): Videonun kaydedileceği dosya adı.
      • size (nesne, isteğe bağlı): Video boyutu
    • Salt okunur: true
  • browser_stop_tracing
    • Başlık: İzlemeyi durdur
    • Açıklama: İz kaydını durdur
    • Parametreler: Yok
    • Salt okunur: true
  • browser_stop_video
    • Başlık: Videoyu durdur
    • Açıklama: Video kaydını durdur
    • Parametreler: Yok
    • Salt okunur: true
  • browser_video_chapter
    • Başlık: Video bölümü
    • Açıklama: Video kaydına bir bölüm işaretçisi ekler. Bulanık arka plana sahip tam ekran bir bölüm kartı gösterir.
    • Parametreler:
      • title (metin): Bölüm başlığı
      • description (metin, isteğe bağlı): Bölüm açıklaması
      • duration (sayı, isteğe bağlı): Bölüm kartının gösterileceği milisaniye cinsinden süre
    • Salt okunur: true
  • browser_video_hide_actions
    • Başlık: Eylem kaplamalarını gizle
    • Açıklama: Sayfada gerçekleştirilen eylemlerin açıklanmasını durdur.
    • Parametreler: Yok
    • Salt okunur: true
  • browser_video_show_actions
    • Başlık: Eylem kaplamalarını göster
    • Açıklama: Sayfada gerçekleştirilen sonraki eylemleri, eylemi adlandıran ve hedef öğeyi vurgulayan bir belirtme çizgisi ile açıkla. Video kaydı veya ekran yayını sırasında kullanışlıdır.
    • Parametreler:
      • duration (sayı, isteğe bağlı): Her eylem açıklamasının ekranda milisaniye cinsinden ne kadar kalacağı. Varsayılan 500'dür.
      • position (metin, isteğe bağlı): Eylem başlığının sayfaya göre nereye yerleştirileceği. Varsayılan sağ üsttedir.
      • cursor (metin, isteğe bağlı): İşaretçi eylemleri için imleç dekorasyonu. "pointer" (varsayılan) önceki eylem noktasından bir sonrakine bir fare işaretçisi canlandırır; "none" imleç dekorasyonunu devre dışı bırakır.
    • Salt okunur: true
Koordinat tabanlı (--caps=vision ile etkinleştirilir)
  • browser_mouse_click_xy
    • Başlık: Tıkla
    • Açıklama: Belirtilen konumda fare düğmesine tıkla
    • Parametreler:
      • x (sayı): X koordinatı
      • y (sayı): Y koordinatı
      • button (dize, isteğe bağlı): Tıklanacak düğme, varsayılan sol
      • clickCount (sayı, isteğe bağlı): Tıklama sayısı, varsayılan 1
      • delay (sayı, isteğe bağlı): Fare basma ve bırakma arasında milisaniye cinsinden beklenecek süre, varsayılan 0
    • Salt okunur: false
  • browser_mouse_down
    • Başlık: Fare basılı tut
    • Açıklama: Fare düğmesine basılı tut
    • Parametreler:
      • button (dize, isteğe bağlı): Basılacak düğme, varsayılan sol
    • Salt okunur: false
  • browser_mouse_drag_xy
    • Başlık: Fareyi sürükle
    • Açıklama: Sol fare düğmesini belirtilen konuma sürükle
    • Parametreler:
      • startX (sayı): Başlangıç X koordinatı
      • startY (sayı): Başlangıç Y koordinatı
      • endX (sayı): Bitiş X koordinatı
      • endY (sayı): Bitiş Y koordinatı
    • Salt okunur: false
  • browser_mouse_move_xy
    • Başlık: Fareyi hareket ettir
    • Açıklama: Fareyi belirtilen konuma hareket ettir
    • Parametreler:
      • x (sayı): X koordinatı
      • y (sayı): Y koordinatı
    • Salt okunur: false
  • browser_mouse_up
    • Başlık: Fareyi bırak
    • Açıklama: Fare düğmesini bırak
    • Parametreler:
      • button (dize, isteğe bağlı): Bırakılacak düğme, varsayılan sol
    • Salt okunur: false
  • browser_mouse_wheel
    • Başlık: Fare tekerleğini kaydır
    • Açıklama: Fare tekerleğini kaydır
    • Parametreler:
      • deltaX (sayı): X delta
      • deltaY (sayı): Y delta
    • Salt okunur: false
PDF oluşturma (--caps=pdf ile etkinleştirilir)
  • browser_pdf_save
    • Başlık: PDF olarak kaydet
    • Açıklama: Sayfayı PDF olarak kaydet
    • Parametreler:
      • filename (dize, isteğe bağlı): PDF'in kaydedileceği dosya adı. Belirtilmezse varsayılan page-{timestamp}.pdf olur. Çıktı dizini içinde kalmak için göreli dosya adlarını tercih edin.
    • Salt okunur: true
Test doğrulamaları (--caps=testing ile etkinleştirilir)
  • browser_generate_locator
    • Başlık: Öğe için konumlandırıcı oluştur
    • Açıklama: Testlerde kullanmak üzere verilen öğe için konumlandırıcı oluştur
    • Parametreler:
      • element (dize, isteğe bağlı): Öğeyle etkileşim izni almak için kullanılan insan tarafından okunabilir öğe açıklaması
      • target (dize): Sayfa anlık görüntüsünden tam hedef öğe referansı veya benzersiz bir öğe seçici
    • Salt okunur: true
  • browser_verify_element_visible
    • Başlık: Öğenin görünür olduğunu doğrula
    • Açıklama: Öğenin sayfada görünür olduğunu doğrula
    • Parametreler:
      • role (dize): Öğenin ROLÜ. Anlık görüntüde şu şekilde bulunabilir: - {ROLE} "Accessible Name":
      • accessibleName (dize): Öğenin ERİŞİLEBİLİR_ADI. Anlık görüntüde şu şekilde bulunabilir: - role "{ACCESSIBLE_NAME}"
    • Salt okunur: false
  • browser_verify_list_visible
    • Başlık: Listenin görünür olduğunu doğrula
    • Açıklama: Listenin sayfada görünür olduğunu doğrula
    • Parametreler:
      • element (dize): İnsan tarafından okunabilir liste açıklaması
      • target (dize): Listeyi işaret eden tam hedef öğe referansı
      • items (dizi): Doğrulanacak öğeler
    • Salt okunur: false
  • browser_verify_text_visible
    • Başlık: Metnin görünür olduğunu doğrula
    • Açıklama: Metnin sayfada görünür olduğunu doğrula. Mümkünse browser_verify_element_visible tercih edin.
    • Parametreler:
      • text (dize): Doğrulanacak METİN. Anlık görüntüde şu şekilde bulunabilir: - role "Accessible Name": {TEXT} veya şu şekilde: - text: {TEXT}
    • Salt okunur: false
  • browser_verify_value
    • Başlık: Değeri doğrula
    • Açıklama: Öğe değerini doğrula
    • Parametreler:
      • type (dize): Öğenin türü
      • element (dize): İnsan tarafından okunabilir öğe açıklaması
      • target (dize): Sayfa anlık görüntüsünden tam hedef öğe referansı
      • value (dize): Doğrulanacak değer. Onay kutusu için "true" veya "false" kullanın.
    • Salt okunur: false