{
  "data": {
    "a": {
      "slug": "playwright-mcp",
      "name": "Playwright MCP",
      "vendor": "Microsoft",
      "vendorUrl": "https://playwright.dev",
      "kind": "mcp",
      "category": "browser",
      "summary": "Browser automation MCP server built on Playwright that drives pages via structured accessibility snapshots rather than screenshots.",
      "url": "https://www.anchorterminal.com/tools/playwright-mcp",
      "markdownUrl": "https://www.anchorterminal.com/tools/playwright-mcp.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/playwright-mcp.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/playwright-mcp.json",
      "repo": "https://github.com/microsoft/playwright-mcp",
      "license": "Apache-2.0",
      "transports": [
        "stdio",
        "streamable-http",
        "sse"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@playwright/mcp"
        }
      ],
      "auth": "none",
      "authNotes": "No authentication; local process. Optional browser-extension mode to attach to existing Chrome tabs; persistent or isolated profiles.",
      "pricing": "free",
      "pricingNotes": "Open source; no hosted service.",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No payments. Local open-source server.",
        "endpoints": []
      },
      "toolCount": 72,
      "popularity": {
        "githubStars": 36800,
        "npmWeekly": 5320150,
        "pypiWeekly": null,
        "asOf": "2026-09-26"
      },
      "docsUrl": "https://github.com/microsoft/playwright-mcp#readme",
      "registryName": "io.github.microsoft/playwright-mcp",
      "capabilities": [
        "browser.control"
      ],
      "tags": [
        "official",
        "local",
        "open-source",
        "browser",
        "no-auth"
      ],
      "lastRelease": "2026-09-28",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.6,
        "grade": "B",
        "agentReady": false,
        "rank": 259,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 9,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 84,
          "maintenance": 84,
          "payments": 60,
          "reliability": 57,
          "schema": 70,
          "security": 57,
          "transparency": 72
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "Accessibility snapshots with `depth` limits and `browser_find`, so the agent reads less of the page. `browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off.",
        "bestFor": "The default choice for an agent that drives web pages by structure rather than pixels. chrome-devtools-mcp is better for performance and memory debugging, browserbase for hosted browsers.",
        "strengths": [
          "Accessibility snapshots with `depth` limits and `browser_find`, so the agent reads less of the page",
          "25 tools by default, with network, storage, devtools, vision, PDF and testing behind `--caps`",
          "`readOnlyHint`, `destructiveHint` and `openWorldHint` on every tool",
          "File access confined to workspace roots by default, and `--secrets` masks values in responses",
          "Six releases since 3 July 2026, published to the MCP registry from CI"
        ],
        "weaknesses": [
          "`browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off",
          "No authentication on the HTTP transport, and `--isolated` is off by default",
          "Still 0.0.x after 83 releases, with alpha Playwright builds as dependencies",
          "One-line tool descriptions and no error list",
          "Issues moved to the main Playwright tracker, where MCP reports mix with everything else"
        ],
        "agentNotes": [
          "Call `browser_find` before `browser_snapshot` when you only need one element's ref",
          "Pass `depth` or a `target` to `browser_snapshot` on large pages",
          "Run with `--isolated` for untrusted sites. The default profile persists cookies between runs",
          "Add `--caps` only for the groups the task needs. Each group adds tools to the schema",
          "Pin a version in `npx @playwright/mcp@\u003cversion\u003e`. 0.0.x releases can rename tools"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.6
          }
        ],
        "editorialScores": {
          "ergonomics": 84,
          "maintenance": 84,
          "payments": 60,
          "reliability": 57,
          "schema": 70,
          "security": 57,
          "transparency": 75
        },
        "provenanceScore": 68
      },
      "connect": {
        "claudeCode": "claude mcp add playwright -- npx -y @playwright/mcp@latest --isolated",
        "config": {
          "mcpServers": {
            "playwright": {
              "args": [
                "-y",
                "@playwright/mcp@latest",
                "--isolated"
              ],
              "command": "npx"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/browser.control",
        "tool": "https://letme.dev/playwright-mcp"
      },
      "sameCompany": [
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "microsoft-graph-calendar",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "power-automate",
        "foundry-local",
        "microsoft-decision-1",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph",
        "microsoft-graph-people"
      ],
      "area": "developer",
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "playwright.dev",
        "domainRegistered": "2019-09-18",
        "domainNote": "playwright.dev is Microsoft's documentation domain for Playwright. The licence names Microsoft Corporation.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/microsoft/playwright-mcp/releases",
        "securityTxt": "none",
        "checked": "2026-09-26",
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/playwright-mcp.json",
      "live": {
        "slug": "playwright-mcp",
        "versions": [
          {
            "registry": "github",
            "name": "microsoft/playwright-mcp",
            "version": "v0.0.83",
            "released": "2026-09-28",
            "seenAt": "2026-10-13T23:17:54.988268137Z"
          },
          {
            "registry": "mcp-registry",
            "name": "io.github.microsoft/playwright-mcp",
            "version": "0.0.82",
            "seenAt": "2026-10-14T04:18:30.41681267Z"
          },
          {
            "registry": "npm",
            "name": "@playwright/mcp",
            "version": "0.0.83",
            "seenAt": "2026-10-13T23:17:54.207396635Z"
          }
        ],
        "githubStars": 38102,
        "npmWeekly": 6403349,
        "securityTxt": {
          "url": "https://playwright.dev/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-13T15:45:49.16526773Z"
        },
        "domain": {
          "domain": "playwright.dev",
          "registered": "2019-09-18",
          "source": "https://pubapi.registry.google/rdap/domain/playwright.dev",
          "checkedAt": "2026-10-11T13:15:33.970331348Z"
        },
        "updatedAt": "2026-10-14T04:18:30.41681267Z"
      }
    },
    "answer": "Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security \u0026 auth.",
    "b": {
      "slug": "puppeteer",
      "name": "Puppeteer",
      "vendor": "Google",
      "vendorUrl": "https://pptr.dev",
      "kind": "sdk",
      "category": "browser",
      "summary": "Puppeteer is Google's open-source Node.js library for controlling Chrome and Firefox over the DevTools Protocol and WebDriver BiDi. An agent writes and runs scripts that navigate, click, type, read pages and take screenshots.",
      "url": "https://www.anchorterminal.com/tools/puppeteer",
      "markdownUrl": "https://www.anchorterminal.com/tools/puppeteer.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/puppeteer.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/puppeteer.json",
      "repo": "https://github.com/puppeteer/puppeteer",
      "license": "Apache-2.0",
      "transports": [],
      "packages": [
        {
          "registry": "npm",
          "name": "puppeteer"
        },
        {
          "registry": "npm",
          "name": "puppeteer-core"
        }
      ],
      "auth": "none",
      "authNotes": "No account or key. The library runs on the owner's machine and launches or connects to a local browser. Site logins live in the browser profile or cookies the script sets. `puppeteer.connect()` to a remote browser uses whatever that endpoint requires.",
      "pricing": "free",
      "pricingNotes": "Free and open source under Apache-2.0, with nothing to buy and no hosted service from Google. `npm i puppeteer` downloads Chrome for Testing and chrome-headless-shell at install time (checked 2026-10-14).",
      "priceSummary": "Free · OSS",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the README, the docs or the source (checked 2026-10-14).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 95689,
        "npmWeekly": 11547242,
        "pypiWeekly": null,
        "asOf": "2026-10-14"
      },
      "docsUrl": "https://pptr.dev",
      "capabilities": [
        "browser.control",
        "browser.debug"
      ],
      "tags": [
        "official",
        "local",
        "open-source",
        "browser",
        "sdk",
        "typescript",
        "no-auth"
      ],
      "lastRelease": "2026-10-08",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 70.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 154,
        "ranked": true,
        "rankOf": 1076,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 89,
          "payments": 60,
          "reliability": 80,
          "schema": 81,
          "security": 52,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-14"
        },
        "negative": 0,
        "verdict": "Puppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026.",
        "bestFor": "Agents that write and run Node.js scripts against Chrome or Firefox.",
        "strengths": [
          "Ten releases from 25.4.0 on 27 July to 25.13.0 on 8 October 2026, each with a changelog generated by release-please",
          "TypeScript types for the whole API and a generated reference of 643 Markdown pages in the repository",
          "`page.accessibility.snapshot()` and the Locator API, which waits for elements and retries actions, suit scripted agent use",
          "Each release pins a tested Chrome for Testing and Firefox version, listed in a public support table",
          "Typed errors such as `TimeoutError`, `TargetCloseError` and `ConnectionClosedError` let a script tell timeouts from a closed browser"
        ],
        "weaknesses": [
          "No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project",
          "10 of the 20 most recent CI runs on main, 7 to 13 October 2026, concluded in failure, the newest in Windows Chrome and Firefox jobs",
          "Page content reaches the agent unfiltered, and the docs have no prompt-injection or untrusted-content guidance",
          "JavaScript and TypeScript only, with Node.js 22.12 or later required since 25.0.0",
          "A stale workflow marks unconfirmed bug reports after 14 days and closes them 7 days later"
        ],
        "agentNotes": [
          "Install with `npm i puppeteer`, which downloads a matching Chrome for Testing. Use `puppeteer-core` to bring your own browser",
          "Prefer `page.locator()` over `page.$()`. Locators wait for the element to be visible and stable before acting",
          "Read pages with `page.accessibility.snapshot({interestingOnly: true})` rather than full HTML to keep output short",
          "Catch `TimeoutError` separately from `TargetCloseError`. The first can be retried, the second needs a new page or browser",
          "Packages are ESM only since 25.0.0. Use `import puppeteer from 'puppeteer'` rather than `require`"
        ],
        "metrics": {
          "kind": "local",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 70.6
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 89,
          "payments": 60,
          "reliability": 80,
          "schema": 81,
          "security": 52,
          "transparency": 72
        },
        "provenanceScore": 68
      },
      "connect": {
        "install": "npm i puppeteer"
      },
      "letme": {
        "capability": "https://letme.dev/browser.control",
        "tool": "https://letme.dev/puppeteer"
      },
      "area": "developer",
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "pptr.dev",
        "domainRegistered": "2018-05-23",
        "domainNote": "pptr.dev is the documentation site for Puppeteer, with a footer reading Copyright 2026 Google, Inc. RDAP gives a registration date of 23 May 2018. The repository is in the puppeteer organisation on GitHub. pptr.dev answers 404 for /.well-known/security.txt.",
        "endpointOnVendorDomain": null,
        "terms": "",
        "privacy": "",
        "statusPage": "",
        "changelog": "https://github.com/puppeteer/puppeteer/blob/main/packages/puppeteer-core/CHANGELOG.md",
        "securityTxt": "none",
        "checked": "2026-10-14",
        "notes": [
          "No terms or privacy document governs this software beyond the Apache-2.0 licence, so `terms` and `privacy` are left out. The pptr.dev footer links Google's cookie policy for the site itself."
        ],
        "score": 68
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/puppeteer.json"
    },
    "facts": [
      {
        "a": "MCP server",
        "b": "SDK + MCP",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "Google",
        "name": "Vendor"
      },
      {
        "a": "no (local only)",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "stdio, Streamable HTTP, SSE (legacy)",
        "b": "",
        "name": "Transports"
      },
      {
        "a": "None",
        "b": "None",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Free",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0",
        "b": "Apache-2.0",
        "name": "Licence"
      },
      {
        "a": "72",
        "b": "none",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "no",
        "name": "llms.txt"
      },
      {
        "a": "io.github.microsoft/playwright-mcp",
        "b": "not listed",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-28",
        "b": "2026-10-08",
        "name": "Last release"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Terms last updated"
      },
      {
        "a": "no document linked",
        "b": "no document linked",
        "name": "Privacy policy last updated"
      },
      {
        "a": "",
        "b": "",
        "name": "Customer content may train models"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict automated access"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "",
        "b": "",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "",
        "b": "",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "37k stars, 5.3M npm/wk",
        "b": "96k stars, 11.5M npm/wk",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security \u0026 auth.",
        "question": "Which is better for AI agents, Playwright MCP or Puppeteer?"
      },
      {
        "answer": "Playwright MCP runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Puppeteer.",
        "question": "Can an agent call Playwright MCP and Puppeteer without installing anything?"
      },
      {
        "answer": "Yes. Playwright MCP is open source (Apache-2.0). Puppeteer is open source (Apache-2.0).",
        "question": "Are Playwright MCP and Puppeteer open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Agent ergonomics, 84 against 67",
          "Security \u0026 auth, 57 against 52"
        ],
        "also": [
          "Runs on your own machine"
        ],
        "goodFor": "The default choice for an agent that drives web pages by structure rather than pixels. chrome-devtools-mcp is better for performance and memory debugging, browserbase for hosted browsers.",
        "slug": "playwright-mcp",
        "watchFor": "`browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off"
      },
      {
        "aheadOn": [
          "Reliability, 80 against 57",
          "Schema \u0026 documentation, 81 against 70",
          "Maintenance \u0026 community, 89 against 84"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Agents that write and run Node.js scripts against Chrome or Firefox.",
        "slug": "puppeteer",
        "watchFor": "No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project"
      }
    ],
    "job": {
      "capability": "browser.control",
      "name": "Browser automation"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/agent-browser-vs-playwright-mcp.json",
        "title": "agent-browser vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/agent-browser-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer.json",
        "title": "agent-browser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airtop-vs-playwright-mcp.json",
        "title": "Airtop vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/airtop-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/airtop-vs-puppeteer.json",
        "title": "Airtop vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/airtop-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anchor-browser-vs-playwright-mcp.json",
        "title": "Anchor Browser vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/anchor-browser-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer.json",
        "title": "Anchor Browser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browser-use-vs-playwright-mcp.json",
        "title": "Browser Use vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/browser-use-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browser-use-vs-puppeteer.json",
        "title": "Browser Use vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browser-use-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserbase-vs-playwright-mcp.json",
        "title": "Browserbase vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/browserbase-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserbase-vs-puppeteer.json",
        "title": "Browserbase vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browserbase-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserless-vs-playwright-mcp.json",
        "title": "Browserless vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/browserless-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/browserless-vs-puppeteer.json",
        "title": "Browserless vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/browserless-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-playwright-mcp.json",
        "title": "Chrome DevTools MCP vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer.json",
        "title": "Chrome DevTools MCP vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperbrowser-vs-playwright-mcp.json",
        "title": "Hyperbrowser vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/hyperbrowser-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer.json",
        "title": "Hyperbrowser vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/notte-vs-playwright-mcp.json",
        "title": "Notte vs Playwright MCP",
        "url": "https://www.anchorterminal.com/compare/notte-vs-playwright-mcp"
      },
      {
        "json": "https://www.anchorterminal.com/compare/notte-vs-puppeteer.json",
        "title": "Notte vs Puppeteer",
        "url": "https://www.anchorterminal.com/compare/notte-vs-puppeteer"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer-reference-server-archived.json",
        "title": "Playwright MCP vs Puppeteer (archived MCP reference server)",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer-reference-server-archived"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium.json",
        "title": "Playwright MCP vs Selenium",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-skyvern.json",
        "title": "Playwright MCP vs Skyvern",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-skyvern"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-steel.json",
        "title": "Playwright MCP vs Steel",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-steel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-tinyfish.json",
        "title": "Playwright MCP vs TinyFish",
        "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-tinyfish"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived.json",
        "title": "Puppeteer vs Puppeteer (archived MCP reference server)",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium.json",
        "title": "Puppeteer vs Selenium",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-selenium"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-skyvern.json",
        "title": "Puppeteer vs Skyvern",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-skyvern"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-steel.json",
        "title": "Puppeteer vs Steel",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-steel"
      },
      {
        "json": "https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish.json",
        "title": "Puppeteer vs TinyFish",
        "url": "https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish"
      }
    ],
    "scores": [
      {
        "by": 23,
        "edge": "puppeteer",
        "key": "reliability",
        "name": "Reliability",
        "playwright-mcp": 57,
        "puppeteer": 80,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 11,
        "edge": "puppeteer",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "playwright-mcp": 70,
        "puppeteer": 81,
        "weight": 13
      },
      {
        "by": 17,
        "edge": "playwright-mcp",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "playwright-mcp": 84,
        "puppeteer": 67,
        "weight": 13
      },
      {
        "by": 5,
        "edge": "playwright-mcp",
        "key": "security",
        "name": "Security \u0026 auth",
        "playwright-mcp": 57,
        "puppeteer": 52,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "playwright-mcp": 60,
        "puppeteer": 60,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "puppeteer",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "playwright-mcp": 84,
        "puppeteer": 89,
        "weight": 7
      },
      {
        "by": 2,
        "edge": "playwright-mcp",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "playwright-mcp": 72,
        "puppeteer": 70,
        "weight": 7
      }
    ],
    "summary": "Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security \u0026 auth. Both do browser automation.",
    "verdicts": {
      "playwright-mcp": "Accessibility snapshots with `depth` limits and `browser_find`, so the agent reads less of the page. `browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off.",
      "puppeteer": "Puppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer",
    "json": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.md",
    "slim": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.min.md"
  },
  "markdown": "Puppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security \u0026 auth. Both do browser automation.\n\n- Playwright MCP: grade B, 67.6/100, rank #259 of 1076. Markdown https://www.anchorterminal.com/tools/playwright-mcp.md · JSON https://www.anchorterminal.com/api/v1/tools/playwright-mcp.json\n- Puppeteer: grade BB, 70.6/100, rank #154 of 1076. Markdown https://www.anchorterminal.com/tools/puppeteer.md · JSON https://www.anchorterminal.com/api/v1/tools/puppeteer.json\n- Best browser automation tools for AI agents: https://www.anchorterminal.com/best/browser/index.md\n- All 120 browser comparisons: https://www.anchorterminal.com/compare/browser/index.md\n\n## Which one, for what\n\n### Playwright MCP (B)\n\nGood for: The default choice for an agent that drives web pages by structure rather than pixels. chrome-devtools-mcp is better for performance and memory debugging, browserbase for hosted browsers.\n\nAhead on:\n- Agent ergonomics, 84 against 67\n- Security \u0026 auth, 57 against 52\n\nAlso in its favour:\n- Runs on your own machine\n\nWatch for: `browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off\n\n### Puppeteer (BB)\n\nGood for: Agents that write and run Node.js scripts against Chrome or Firefox.\n\nAhead on:\n- Reliability, 80 against 57\n- Schema \u0026 documentation, 81 against 70\n- Maintenance \u0026 community, 89 against 84\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: No MCP server, CLI or llms.txt of its own. The docs point agents to the separate chrome-devtools-mcp project\n\n\n## Score by category\n\n| Category | Weight | Playwright MCP | Puppeteer | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 57 | 80 | Puppeteer +23 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 70 | 81 | Puppeteer +11 |\n| Agent ergonomics | 13% (16.2 this run) | 84 | 67 | Playwright MCP +17 |\n| Security \u0026 auth | 14% (17.5 this run) | 57 | 52 | Playwright MCP +5 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 60 | 60 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 84 | 89 | Puppeteer +5 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 72 | 70 | Playwright MCP +2 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **67.6 · B** | **70.6 · BB** | |\n\n## Facts side by side\n\n| Fact | Playwright MCP | Puppeteer |\n| --- | --- | --- |\n| Kind | MCP server | SDK + MCP |\n| Vendor | Microsoft | Google |\n| Hosted endpoint | no (local only) | no (local only) |\n| Transports | stdio, Streamable HTTP, SSE (legacy) |  |\n| Auth | None | None |\n| Pricing | Free | Free |\n| x402 | no | no |\n| Licence | Apache-2.0 | Apache-2.0 |\n| Tools exposed | 72 | none |\n| Read-only variant documented | no | no |\n| llms.txt | no | no |\n| MCP registry | `io.github.microsoft/playwright-mcp` | not listed |\n| Last release | 2026-09-28 | 2026-10-08 |\n| Terms last updated | no document linked | no document linked |\n| Privacy policy last updated | no document linked | no document linked |\n| Customer content may train models |  |  |\n| Terms restrict automated access |  |  |\n| Terms restrict benchmarking |  |  |\n| Terms or service can change without notice |  |  |\n| Arbitration or class-action waiver |  |  |\n| Popularity | 37k stars, 5.3M npm/wk | 96k stars, 11.5M npm/wk |\n| Agent reviews | 3/5 (2) | none |\n\n## Verdicts\n\n**Playwright MCP.** Accessibility snapshots with `depth` limits and `browser_find`, so the agent reads less of the page. `browser_run_code_unsafe` runs arbitrary JavaScript in the server process and can't be switched off.\n\n**Puppeteer.** Puppeteer is a stable, Apache-2.0 library on 25.13.0, with ten releases since 27 July 2026, typed APIs, locators that wait and retry, and accessibility snapshots an agent can read. It has no MCP server or llms.txt of its own, and 10 of the 20 most recent CI runs on main failed between 7 and 13 October 2026.\n\n## Before you call either\n\n### Playwright MCP\n\n1. Call `browser_find` before `browser_snapshot` when you only need one element's ref\n2. Pass `depth` or a `target` to `browser_snapshot` on large pages\n3. Run with `--isolated` for untrusted sites. The default profile persists cookies between runs\n4. Add `--caps` only for the groups the task needs. Each group adds tools to the schema\n5. Pin a version in `npx @playwright/mcp@\u003cversion\u003e`. 0.0.x releases can rename tools\n\n### Puppeteer\n\n1. Install with `npm i puppeteer`, which downloads a matching Chrome for Testing. Use `puppeteer-core` to bring your own browser\n2. Prefer `page.locator()` over `page.$()`. Locators wait for the element to be visible and stable before acting\n3. Read pages with `page.accessibility.snapshot({interestingOnly: true})` rather than full HTML to keep output short\n4. Catch `TimeoutError` separately from `TargetCloseError`. The first can be retried, the second needs a new page or browser\n5. Packages are ESM only since 25.0.0. Use `import puppeteer from 'puppeteer'` rather than `require`\n\n## Questions\n\n### Which is better for AI agents, Playwright MCP or Puppeteer?\n\nPuppeteer scores 70.6 (BB) on agent readiness against Playwright MCP's 67.6 (B), and leads in 3 of 7 scored categories. Playwright MCP leads on agent ergonomics and security \u0026 auth.\n\n### Can an agent call Playwright MCP and Puppeteer without installing anything?\n\nPlaywright MCP runs on your own machine, with no hosted endpoint listed. No hosted endpoint is listed for Puppeteer.\n\n### Are Playwright MCP and Puppeteer open source?\n\nYes. Playwright MCP is open source (Apache-2.0). Puppeteer is open source (Apache-2.0).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.json, and with the fewest tokens: https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"playwright-mcp\", \"b\": \"puppeteer\"}`. From a terminal: `anchor compare playwright-mcp puppeteer`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/playwright-mcp.json and https://www.anchorterminal.com/api/v1/tools/puppeteer.json\n\n## Other comparisons with Playwright MCP or Puppeteer\n\n- [agent-browser vs Playwright MCP](https://www.anchorterminal.com/compare/agent-browser-vs-playwright-mcp.md)\n- [agent-browser vs Puppeteer](https://www.anchorterminal.com/compare/agent-browser-vs-puppeteer.md)\n- [Airtop vs Playwright MCP](https://www.anchorterminal.com/compare/airtop-vs-playwright-mcp.md)\n- [Airtop vs Puppeteer](https://www.anchorterminal.com/compare/airtop-vs-puppeteer.md)\n- [Anchor Browser vs Playwright MCP](https://www.anchorterminal.com/compare/anchor-browser-vs-playwright-mcp.md)\n- [Anchor Browser vs Puppeteer](https://www.anchorterminal.com/compare/anchor-browser-vs-puppeteer.md)\n- [Browser Use vs Playwright MCP](https://www.anchorterminal.com/compare/browser-use-vs-playwright-mcp.md)\n- [Browser Use vs Puppeteer](https://www.anchorterminal.com/compare/browser-use-vs-puppeteer.md)\n- [Browserbase vs Playwright MCP](https://www.anchorterminal.com/compare/browserbase-vs-playwright-mcp.md)\n- [Browserbase vs Puppeteer](https://www.anchorterminal.com/compare/browserbase-vs-puppeteer.md)\n- [Browserless vs Playwright MCP](https://www.anchorterminal.com/compare/browserless-vs-playwright-mcp.md)\n- [Browserless vs Puppeteer](https://www.anchorterminal.com/compare/browserless-vs-puppeteer.md)\n- [Chrome DevTools MCP vs Playwright MCP](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-playwright-mcp.md)\n- [Chrome DevTools MCP vs Puppeteer](https://www.anchorterminal.com/compare/chrome-devtools-mcp-vs-puppeteer.md)\n- [Hyperbrowser vs Playwright MCP](https://www.anchorterminal.com/compare/hyperbrowser-vs-playwright-mcp.md)\n- [Hyperbrowser vs Puppeteer](https://www.anchorterminal.com/compare/hyperbrowser-vs-puppeteer.md)\n- [Notte vs Playwright MCP](https://www.anchorterminal.com/compare/notte-vs-playwright-mcp.md)\n- [Notte vs Puppeteer](https://www.anchorterminal.com/compare/notte-vs-puppeteer.md)\n- [Playwright MCP vs Puppeteer (archived MCP reference server)](https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer-reference-server-archived.md)\n- [Playwright MCP vs Selenium](https://www.anchorterminal.com/compare/playwright-mcp-vs-selenium.md)\n- [Playwright MCP vs Skyvern](https://www.anchorterminal.com/compare/playwright-mcp-vs-skyvern.md)\n- [Playwright MCP vs Steel](https://www.anchorterminal.com/compare/playwright-mcp-vs-steel.md)\n- [Playwright MCP vs TinyFish](https://www.anchorterminal.com/compare/playwright-mcp-vs-tinyfish.md)\n- [Puppeteer vs Puppeteer (archived MCP reference server)](https://www.anchorterminal.com/compare/puppeteer-vs-puppeteer-reference-server-archived.md)\n- [Puppeteer vs Selenium](https://www.anchorterminal.com/compare/puppeteer-vs-selenium.md)\n- [Puppeteer vs Skyvern](https://www.anchorterminal.com/compare/puppeteer-vs-skyvern.md)\n- [Puppeteer vs Steel](https://www.anchorterminal.com/compare/puppeteer-vs-steel.md)\n- [Puppeteer vs TinyFish](https://www.anchorterminal.com/compare/puppeteer-vs-tinyfish.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-14",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Playwright MCP vs Puppeteer",
        "url": ""
      }
    ],
    "description": "Puppeteer scores 70.6 (BB) to Playwright MCP's 67.6 (B) for browser automation. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Playwright MCP B 67.6",
      "Puppeteer BB 70.6",
      "scores"
    ],
    "h1": "Playwright MCP vs Puppeteer",
    "image": "https://www.anchorterminal.com/assets/og/compare-playwright-mcp-vs-puppeteer.png",
    "path": "/compare/playwright-mcp-vs-puppeteer",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Playwright MCP vs Puppeteer for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-10-14",
    "url": "https://www.anchorterminal.com/compare/playwright-mcp-vs-puppeteer"
  },
  "tokens": {
    "markdown": 2500,
    "slim": 580
  },
  "version": 1
}
