שרת MCP מאומת: Playwright

שרת ה-MCP של Playwright, אומת בריצה חיה על Mac אמיתי.

  • אומת2026-08-03macOS 14.4.1
  • חבילה@playwright/mcp 0.0.78
  • מדווח על עצמוPlaywright 1.62.0-alpha-1783623505000
  • פרוטוקול MCP2025-06-18
  • סביבת ריצהv25.8.1

התשובה הקצרה

אומת לאחרונה 2026-08-03

שרת ה-MCP של Playwright מאפשר לעוזר AI לנהוג בדפדפן אמיתי: לפתוח עמוד, לקרוא את המבנה שלו, ללחוץ, להקליד, למלא טפסים ולדווח מה מצא. זהו שרת ה-MCP הרשמי של Microsoft מעל ספריית Playwright, הוא רץ על ה-Mac שלכם על גבי stdio, ואינו דורש חשבון, מפתח API או הרשמה כלשהי. לא הסתפקנו במה שכתוב ב-README: הרצנו את השרת, דיברנו איתו בפרוטוקול, ספרנו את כל 24 הכלים שהוא חושף, ביצענו קריאת כלי אמיתית אחת ושמרנו את הפלט הגולמי, כולל השגיאות המדויקות שהוא מחזיר כשמשהו משתבש. הכל נמצא בעמוד הזה. [1][3][6]

  • כלים

    24, נספרו בריצה חיה

  • אישורי גישה

    לא נדרשים

  • ערוץ תקשורת

    stdio, רץ על ה-Mac שלכם [6]

  • מתחזק

    Microsoft [1][3]

  • הורדות

    6.1 מיליון בשבוע האחרון [2]

  • רישיון

    Apache-2.0 [5]

אימות

איך שרת ה-MCP הזה אומת.

השיטה

הרצנו את השרת עם npx על גבי stdio עם הדגלים ‎--headless ו-‎--isolated, כתבנו לקלט התקני שלו מסגרת initialize גולמית בפרוטוקול JSON-RPC וקראנו את התשובה ישירות מהחיבור, ואז קראנו ל-tools/list והרצנו קריאת כלי אמיתית אחת. השרת הזה לא מדפיס דבר בהפעלה, ולכן מה שמופיע למטה תחת באנר ההפעלה הוא תשובת ה-initialize הגולמית ולא שורת יומן. טבלת הכלים היא לכידת ה-tools/list, מילה במילה.

הודעת הפתיחה של השרת

{"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{}},"serverInfo":{"name":"Playwright","version":"1.62.0-alpha-1783623505000"}},"jsonrpc":"2.0","id":1}

קריאת כלי אמיתית אחת

tools/call browser_navigate {"url": "about:blank"}
### Ran Playwright code
```js
await page.goto('about:blank');

שורות אמיתיות מהתוצאה שנלכדה: מספיק כדי להוכיח שהקריאה נענתה.

כלים

הכלים, כפי שנספרו מהשרת הרץ.

השרת ענה ל-tools/list עם 24 כלים בתאריך 2026-08-03. השמות, התיאורים והפרמטרים למטה הם המילים שלו עצמו, מועתקים מהתשובה הזו וללא עריכה.

כלימה הוא עושה
browser_navigateurl*

Navigate to a URL

browser_navigate_back

Go back to the previous page in the history

browser_snapshottargetfilenamedepthboxes

Capture accessibility snapshot of the current page, this is better than screenshot

browser_findtextregex

Search the accessibility snapshot of the current page for text or a regular expression. Returns matching snapshot nodes with a few lines of surrounding context (like search snippets), each shown under its path from the root of the tree, which is cheaper than capturing the whole snapshot when you only need to locate an element and its ref.

browser_clickelementtarget*doubleClickbuttonmodifiers

Perform click on a web page

browser_typeelementtarget*text*submitslowly

Type text into editable element

browser_fill_formfields*

Fill multiple form fields

browser_select_optionelementtarget*values*

Select an option in a dropdown

browser_hoverelementtarget*

Hover over element on page

browser_press_keykey*

Press a key on the keyboard

browser_dragstartElementstartTarget*endElementendTarget*

Perform drag and drop between two elements

browser_dropelementtarget*pathsdata

Drop files or MIME-typed data onto an element, as if dragged from outside the page. At least one of "paths" or "data" must be provided.

browser_file_uploadpaths

Upload one or multiple files

browser_handle_dialogaccept*promptText

Handle a dialog

browser_wait_fortimetexttextGone

Wait for text to appear or disappear or a specified time to pass

browser_take_screenshotelementtargettype*filenamefullPagescale*

Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.

browser_console_messageslevel*allfilename

Returns all console messages

browser_network_requestsstatic*filterfilename

Returns a numbered list of network requests since loading the page. Use browser_network_request with the number to get full details.

browser_network_requestindex*partfilename

Returns full details (headers and body) of a single network request, or a single part if `part` is set. Use the number from browser_network_requests.

browser_tabsaction*indexurl

List, create, close, or select a browser tab.

browser_resizewidth*height*

Resize the browser window

browser_evaluateelementtargetfunction*filename

Evaluate JavaScript expression on page or element

browser_run_code_unsafecodefilename

Run a Playwright code snippet. Unsafe: executes arbitrary JavaScript in the Playwright server process and is RCE-equivalent.

browser_close

Close the page

פרמטרים המסומנים ב-* הם חובה.

התקנה

הגדרות שעובדות, אחת לכל אפליקציה.

העתיקו את הבלוק של האפליקציה שלכם. כל אחד מהם הוא ההגדרה המדויקת שאיתה אימתנו את השרת.

Claude Desktop

פתחו את הקובץ ‎~/Library/Application Support/Claude/claude_desktop_config.json (בתוך Claude Desktop: Settings, אחר כך Developer, אחר כך Edit Config) והוסיפו:

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

אלה שני הדגלים שאיתם אימתנו. הורידו את ‎--headless וייפתח חלון דפדפן על המסך שאפשר לצפות בו. הורידו את ‎--isolated והדפדפן ישמור פרופיל על הדיסק בין הפעלות, כלומר ההתחברויות לאתרים נשמרות ושני לקוחות לא יכולים לחלוק אותו. סגרו ופתחו מחדש את Claude Desktop אחרי השמירה. [7]

Claude Code

פקודה אחת בטרמינל:

claude mcp add playwright -- npx -y @playwright/mcp@latest --headless --isolated

כל מה שאחרי המקף הכפול הוא הפקודה המדויקת ש-Claude Code יריץ, וזה מה שמונע משני הדגלים להיקרא כדגלים של פקודת claude עצמה. [8]

Cursor

הוסיפו ל-‎~/.cursor/mcp.json עבור כל הפרויקטים, או ל-‎.cursor/mcp.json בתוך פרויקט אחד:

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

Cursor קורא את הקובץ מחדש אחרי הפעלה מחדש. אם אתם מריצים את Cursor ולקוח MCP נוסף במקביל, השאירו את ‎--isolated בשניהם, אחרת השני שיעלה ייתקל בשגיאת הפרופיל התפוס שלמטה. [9]

Routines

בלי קובץ JSON ובלי טרמינל. ב-Routines: Settings, אחר כך Assistant, אחר כך Connections, אחר כך Add MCP Server. העבירו את הטופס ל-Command (stdio) והזינו:

Name        Playwright
Command     npx
Arguments   -y @playwright/mcp@latest --headless --isolated

הערך בשדה ה-Arguments מתפצל לפי רווחים, לכן הדביקו את השורה בדיוק כפי שהיא: כל חלק בה הוא מילה אחת בלי רווחים. לחצו קודם על Test Connection: שרת תקין עונה עם מספר הכלים שלו, עשרים וארבעה עבור השרת הזה. [10]

בלי טרמינל

איך מגדירים את שרת ה-MCP‏ Playwright בלי טרמינל.

אם מעולם לא פתחתם את הטרמינל ואין לכם כוונה להתחיל, זה המסלול שלכם. Routines היא אפליקציית Mac שמריצה שרתי MCP בשבילכם: ממלאים שלושה שדות פעם אחת, והכלים של השרת זמינים ל-AI שלכם בצ׳אט ובשגרות מתוזמנות.

  1. 01

    התקינו את Routines

    הורידו את האפליקציה מ-getroutines.ai/download, גררו אותה ל-Applications והתחברו.

  2. 02

    פתחו את הגדרות ה-MCP

    לחצו על החשבון שלכם בתחתית סרגל הצד ובחרו Settings. פתחו את הקטע Assistant, אחר כך את הלשונית Connections, גללו אל MCP Servers ולחצו על Add MCP Server.

  3. 03

    בחרו Command (stdio)‎

    הטופס נפתח במצב URL (SSE/HTTP)‎. העבירו אותו ל-Command (stdio): השרת הזה הוא פקודה שה-Mac שלכם מריץ, לא כתובת אינטרנט שהוא פונה אליה.

  4. 04

    מלאו שלושה שדות

    Name: Playwright. Command: npx. Arguments: ‎-y @playwright/mcp@latest --headless --isolated. השאירו את Environment Variables ריק, השרת הזה לא צריך משתנים.

  5. 05

    בדקו, ואז הוסיפו

    לחצו Test Connection: Routines מפעילה את השרת בלי לשמור אותו ומדווחת כמה כלים היא מצאה, עשרים וארבעה עבור השרת הזה. אחר כך לחצו Add Server. ההפעלה הראשונה מורידה את החבילה, אז תנו לה רגע.

  6. 06

    השתמשו בו

    הכלים עובדים בצ׳אט מיד. כדי לתת לשגרה מתוזמנת להשתמש בהם, פתחו את השגרה, מצאו את הכרטיס Tools & connections וסמנו את השרת תחת Apps.

רעיונות לשגרות

שגרות ששווה לתזמן.

אחרי שהשרת מחובר, שגרה מתוזמנת יכולה להשתמש בכלים שלו גם כשאתם לא מול המסך. העתיקו פרומפט, הדביקו אותו ב-Routines ובחרו שעה. הפרומפטים כתובים באנגלית בכוונה, מדביקים אותם בדיוק כפי שהם.

בדיקת מחירי מתחרים של יום שני

פרומפט

Every Monday at 8:00, open each pricing page listed in competitors.md, read the plan names and prices off the page, and write a table of anything that changed since last week to pricing-watch.md.

סריקת סטטוס של הבוקר

פרומפט

Every weekday at 9:15, open the public status page of each service listed in services.md, note anything that is not fully operational, and save a short summary to status-check.md with the time you checked.

תקציר שבועי של שינויים בתיעוד

פרומפט

Every Friday at 17:00, open the changelog page of each tool listed in tools-i-use.md, collect the entries dated this week, and write them up as a one-paragraph digest in changelog-digest.md.

פתרון תקלות

השגיאות שנתקלנו בהן, ומה פתר אותן.

שגיאות אמיתיות שנלכדו בריצת האימות, מודפסות בדיוק כפי שהשרת החזיר אותן.

הדפדפן שהוא מבקש לא נמצא על המחשב

מה רואים

### Error
Error: Browser "firefox" is not installed. Run `npx @playwright/mcp install-browser firefox` to install

הפתרון

זה מה שרואה Mac בלי מטמון דפדפנים של Playwright בקריאת הכלי הראשונה: השרת עולה כרגיל ומציג את כל 24 הכלים, ואז נכשל ברגע שהוא צריך דפדפן. גרמנו לזה בכוונה כשביקשנו firefox, שאין לו בנייה על ה-Mac הזה; ההודעה נוקבת בשם הדפדפן החסר בכל מקרה. הריצו את פקודת ההתקנה שהיא מדפיסה ונסו את הקריאה שוב. כשלא מתערבים, השרת משתמש ב-Google Chrome שכבר מותקן בתיקיית Applications, ולכן בריצה שלנו לא היה צריך להוריד דבר.

הוא מסרב לפתוח קובץ מהדיסק

מה רואים

### Error
Error: Access to "file:" protocol is blocked. Attempted URL: "file:///etc/hosts"

הפתרון

עובד כמתוכנן: ניווט ל-file:// חסום, והגישה לקבצים תחומה לשורש סביבת העבודה אלא אם מפעילים את השרת עם ‎--allow-unrestricted-file-access. גרמנו לשגיאה כשביקשנו את /etc/hosts. אם אתם רוצים שה-AI יקרא קבצים מקומיים, השתמשו לשם כך בשרת קבצים, ולא בפתיחת הגדר של דפדפן שמבקר גם באינטרנט הפתוח.

שתי אפליקציות מנסות להשתמש באותו פרופיל דפדפן

מה רואים

### Error
Error: Browser is already in use for /private/tmp/mcp-shared-profile, use --isolated to run multiple instances of the same browser

הפתרון

פרופיל ששמור על הדיסק יכול לשמש דפדפן אחד בלבד בכל רגע, ולכן לקוח ה-MCP השני שעולה מפסיד. שחזרנו את זה כשכיוונו שני לקוחות לאותה תיקיית פרופיל. הוסיפו ‎--isolated לכל לקוח מעבר לראשון, כפי שההודעה אומרת, או תנו לכל אחד ‎--user-data-dir משלו. זו ההפתעה הנפוצה ביותר כש-Cursor, Claude Desktop ו-Routines פתוחים בו זמנית.

העוזר לוחץ על משהו שכבר לא נמצא שם

מה רואים

### Error
Error: Ref e999 not found in the current page snapshot. Try capturing new snapshot.

הפתרון

כל דבר שאפשר ללחוץ עליו מקבל מזהה קצר כמו e12 כשנלכד צילום הנגישות של העמוד, והמזהים האלה מתיישנים ברגע שהעמוד משתנה. השרת אומר לעוזר בדיוק מה לעשות: ללכוד צילום חדש וללחוץ על המזהה החדש. אם זה חוזר באתר מסוים, כנראה שהעמוד נבנה מחדש תוך כדי, אז בקשו מהעוזר להמתין לטקסט שהוא מצפה לו לפני הלחיצה.

לקוח ה-MCP לא מצליח להפעיל את השרת בכלל

הפתרון

הפקודה npx שייכת ל-Node.js, והחבילה הזו דורשת Node 18 ומעלה. אם Node לא מותקן על ה-Mac, כל לקוח בעמוד הזה ייכשל בשלב ההפעלה עוד לפני שהשרת מספיק לומר משהו. התקינו Node מ-nodejs.org, הפעילו מחדש את לקוח ה-MCP ונסו שוב.

שאלות נפוצות

שאלות שאנשים שואלים.

מה זה שרת ה-MCP של Playwright?

זהו שרת ה-MCP הרשמי של Microsoft לאוטומציה של דפדפן, בנוי מעל ספריית הבדיקות Playwright. אחרי החיבור, עוזר AI כמו Claude יכול לפתוח עמודי אינטרנט, לקרוא אותם כעץ נגישות מובנה ולא כפיקסלים, ואז ללחוץ, להקליד, למלא טפסים ולדווח בחזרה. הוא רץ כתהליך מקומי על ה-Mac שלכם ומדבר עם אפליקציית ה-AI על גבי stdio. הגרסה שאימתנו, 0.0.78, היתה העדכנית ביותר גם ב-npm וגם ב-GitHub ביום הריצה, והמספר הארוך ברצועת הנתונים למעלה הוא בניית Playwright שהשרת הרץ מדווח על עצמו. [6][3][1][4]

אילו כלים כלולים בשרת ה-MCP של Playwright?

השרת הרץ חושף 24 כלים: תנועה בין עמודים (browser_navigate, browser_navigate_back, browser_tabs), קריאת עמוד (browser_snapshot, browser_find, browser_take_screenshot, browser_console_messages, browser_network_requests, browser_network_request), פעולה עליו (browser_click, browser_type, browser_fill_form, browser_select_option, browser_hover, browser_press_key, browser_drag, browser_drop, browser_file_upload, browser_handle_dialog, browser_wait_for) ושליטה בדפדפן עצמו (browser_resize, browser_evaluate, browser_run_code_unsafe, browser_close). הטבלה למעלה היא פלט ה-tools/list החי, מילה במילה.

הוא דורש מפתח API או חשבון?

לא. אין למה להירשם ואין אישור גישה להדביק. הפקודה npx מורידה את החבילה ממאגר החבילות הציבורי של npm בריצה הראשונה, כך שההפעלה הראשונה צריכה חיבור לאינטרנט; אחריה החבילה שמורה על ה-Mac. הוא גם צריך דפדפן להנהיג, ועל ה-Mac שלנו הוא השתמש ב-Google Chrome שכבר היה מותקן בתיקיית Applications. [1]

האם נפתח חלון דפדפן שאפשר לראות?

כברירת מחדל כן: רשימת הדגלים המתועדת אומרת שהדפדפן רץ עם חלון גלוי אלא אם מעבירים ‎--headless. אנחנו הרצנו ללא חלון, ולכן שום דבר לא הופיע על המסך והלכידה למעלה היא כל מה שהיה לראות. השמיטו את ‎--headless מההגדרות למעלה אם אתם מעדיפים לצפות בעוזר עובד, וזו הדרך המהירה ביותר להבין מה הוא באמת עושה בעמוד. [6]

האם שרת ה-MCP של Playwright בטוח?

שני דברים דורשים תשומת לב. כלי אחד, browser_run_code_unsafe, מתאר את עצמו ברשימת הכלים שלו כמריץ JavaScript שרירותי ושקול להרצת קוד מרחוק, אז התייחסו אליו ככלי הטעון. ומעבר לזה, פעילות בדפדפן פרטית בדיוק כמו הפרופיל שמאחוריה: עם ‎--isolated הפרופיל נשמר בזיכרון ונזרק בסוף, ובלעדיו הדפדפן שומר את ההתחברויות שלכם על הדיסק בין הפעלות. גדר אחת כן אימתנו: הוא חוסם ניווט ל-file:// כברירת מחדל, והסירוב שהוא מחזיר מודפס בקטע פתרון התקלות למעלה. [6]

צריך טרמינל כדי להגדיר אותו?

לא. ב-Routines ממלאים שלושה שדות בהגדרות ולוחצים Test Connection; המדריך למעלה מראה כל לחיצה. Claude Desktop ו-Cursor דורשים כל אחד עריכה חד-פעמית של קובץ JSON קטן. רק Claude Code הוא כלי טרמינל מטבעו. [10][7]

אילו אפליקציות יכולות להשתמש בשרת ה-MCP של Playwright?

כל לקוח MCP שמסוגל להפעיל שרת stdio מקומי: Claude Desktop, Claude Code, Cursor ו-Routines כולם יכולים, וההגדרה המדויקת לכל אחד נמצאת למעלה. השרת עצמו זהה בכל לקוח; רק המקום שבו מדביקים את ההגדרה משתנה. [7][8][9][10]

מקורות

כל טענה חיצונית, עם קבלה.

כל מה שבעמוד הזה שלא ראינו בעצמנו בריצה מקושר כאן, עם התאריך שבו קראנו אותו. לגבי השאר, הריצה עצמה היא הקבלה.

  1. [1]

    npm registry: @playwright/mcpנקרא בתאריך 2026-08-03

    Latest version 0.0.78, published 2026-07-09; license field Apache-2.0; repository microsoft/playwright-mcp; engines node >=18.

  2. [2]

    npm downloads API: last weekנקרא בתאריך 2026-08-03

    6,116,075 downloads for the week ending 2026-08-01.

  3. [3]

    GitHub: microsoft/playwright-mcpנקרא בתאריך 2026-08-03

    35,762 stars and a push dated 2026-07-25 at access time, owned by the microsoft organization, per the GitHub API.

  4. [4]

    GitHub: latest playwright-mcp releaseנקרא בתאריך 2026-08-03

    Tag v0.0.78, published 2026-07-09, matching the npm latest tag.

  5. [5]

    microsoft/playwright-mcp LICENSE fileנקרא בתאריך 2026-08-03

    The full Apache License 2.0 text, 201 lines, with the notice Copyright (c) Microsoft Corporation.

  6. [6]

    Playwright MCP READMEנקרא בתאריך 2026-08-03

    Standard config is an npx command over stdio; Node.js 18 or newer required; --headless documented as headed by default; persistent profile is the default and only one browser may use it at a time.

  7. [7]

    modelcontextprotocol.io: Connect to local MCP serversנקרא בתאריך 2026-08-03

    The official Claude Desktop quickstart and the claude_desktop_config.json shape.

  8. [8]

    Claude Code docs: MCPנקרא בתאריך 2026-08-03

    The claude mcp add syntax for local stdio servers, including the double dash before the command.

  9. [9]

    Cursor docs: Model Context Protocolנקרא בתאריך 2026-08-03

    The mcp.json shape and file locations.

  10. [10]

    Routines: Connectorsנקרא בתאריך 2026-08-03

    How Routines runs one-click OAuth connectors and any MCP server.

העמוד הזה מתאר את Playwright כפי שהתנהג בריצה מתוארכת אחת על Mac אחד. גרסאות משתנות: אם משהו כאן כבר לא תואם למה שאתם רואים, תאריך הלכידה בראש העמוד אומר בן כמה הצילום.

מאחורי המדריך הזה

Routines, האפליקציה שמאחורי המדריך הזה, מריצה שרתי MCP כמו זה בלי טרמינל: כך עובדים המחברים. הפתקים שלכם נשארים קובצי markdown על ה-Mac שלכם, אין חשבון ענן לשלם, והיא עובדת גם בלי אינטרנט. להורדת Routines