Playwright MCP
Playwright MCP на Render
Разверните Playwright MCP на Render в один клик. Получите размещённый сервер MCP с headless-Chromium, которым ваши ИИ-инструменты могут управлять по HTTP — без локальной установки браузера и без npx на каждой машине.
https://github.com/user-attachments/assets/0f31c279-f2e0-431f-a854-560677bd800c5
Что он делает
Playwright MCP — это сервер Model Context Protocotol, который позволяет LLM открывать настоящий браузер, переходить по страницам, кликать, вводить текст и читать страницы через структурированные accessibility-снимки (не скриншоты). Обычно он запускается локально через npx @playwright/mcp. Этот шаблон вместо этого запускает его как единый веб-сервис Render, таk что любой MCP-клиент может подключаться к общему HTTP -URL.
Это тонкая обёртка над официальным образом mcr.microsoft.com/playwright/mcp (headless Chromium уже встроен) — без измений исходного кода. Обёртка добавляет флаги, которые нужны Render (--headless, --no-sandbox, плюс --port и --allowed-hosts из окружения) and небolш گуз с beaer-токеном перед сервером, потом у that Prote. У Playwright MCP нет Auth Authentcation.
Аутентификация по умолчанию. Playwright MCP не имеет встроенной аутентификацией в HTTP -режиме and предоставляет инстумент, эквеваленt RCE, поэтому этот шаблон не публикует его прямой. Запросы обязаны содержать
Authorization: Bearer $MCP_TOKEN; Render генерирует этот токен for you in deploy.
For full list of инстументов, options config файлав и настройки клиентов см. upstream Readme.
Related MCP server: WebControl
Архитектура
Оdin веб-сервис Render заускает официальный обрас PlayWright MCP за шлузом с beaer-токеном. MCP-клиент говорит по Streamable HTTP с /mcp на TLS-еrmинирующем еdge Render; шлю3 проверяet токен and переeжет запрос к MCP-серуver on loopback, котorый правит headless Chromium in the same container and return accessability snapshot.
┌─────────────┐ HTTPS /mcp ┌────────────────────────────────────────────────┐
│ MCP client │ ──────────────► │ Render web service (Docker, standard plan) │
│ (Claude, │ + Bearer │ │
│ Cursor, …) │ token │ render-entrypoint.sh │
│ │ │ │ reads PORT, allowed hosts │
│ │ Streamable │ ▼ │
│ │ ◄────────────── │ render-auth-proxy.mjs :$PORT (public) │
└─────────────┘ snapshots │ │ 401 unless the Bearer token matches │
│ ▼ │
│ node /app/cli.js 127.0.0.1:8931 (loopback) │
│ │ │
│ ▼ │
│ headless Chromium (baked into base image) │
└────────────────────────────────────────────────┘Из чего соstavlenа «дедploy а»:
Fайл | Роль |
Blueprint. Описивает единstvenный Docker-веб-сервис, его план/регион, перменную orкужения | |
Тонкая обёртка над | |
Read | |
Pid 1. He has only Net.js with standard library, no dependencies: reject any request without | |
Лимит скорости шка, removed separately because this is the only piece with a state that is worth testing in isolation: a fixed window with a maximum number of failed auth,counted across all clients. Importted by proxy так that | |
Собирает обрат и проверяет обёртку end to end: без | |
[ | Документируест те же параметры для local run of the container. |
Ключевые своййства:
**Тонкая обёртка, не форк. The version of the MCP is fixed in skrip
Dockerfile; update of thист on одне строка tag (см. Обновление Playсros MCP).Нет базы даных, ничего.** to fill in. Единственный секret MCP_TOKEN creates Render in the deploy time. Браузер preserve Upstream's default permanent profile, так that logins are preserved through haа requests for в "life of the instance — sufficiently for "сервера", only perceive him, и именно that this suppose "темплайт" (см. Configuration).
Auth and fail-to-lock. The gate is added by this template, not earlier. If
MCP TOKENunset container does not started, поэтому no such config, при котором server accessible anonymous (см. Security).
Preconditions
Для deployment are needed:
Аккаунт Render, registration is free; service and уer works on платном типа instanses
standard(see [Run «Deploy»(#deploy)).GitHub-аккаунт to сделать fork of repository (кнопка Deploy читает
render.yamlиз repository, owned by you).
Никаки API keeys or strangers. Only one secret, MCP_TOKEN, you generated during deployment — you need only copy it to your MCP-client (см. Запурить).
Also run locally (optional — ** см. Run local):
Docker with buildkit (Docker Desptop 4.x+, or Doker Engine 23+).
Dockerfile.renderuses# yaktidirective andCOPY --chmod, both are Buildicket features.MCP-client that can туренте прино, е.g. Claude Code, Cersor) or just
curl.
You do not required Node.js, Playwright, or local Chromium — базовый обраs includes it all.
Deploy
Нажмите Deploy to Renndre выше and vice versus in naск.
Render preposes
render.yamland provisioned edin **Docker-web service (playwright-mcp) onstandardplan.Pодите, until deploy no live. Ваш сервисях по адресу
https://<your-service>.onrender.com/mcp.Cкопируйте
MCP_TOKENсо one page Environment in Dashboard — Render generated for it. Ваш MCP client must send it asAuthorization: Bearer <token>(см. Испольова. Пользования ion); without no every query get401.Read Securекть before sent what-либо sensing at в neго. Tокен is единственный barring между internet and the code execution in this contein—apply as password — and outside secure в меру.
**Javerage hopping. Headless chromium OOOMs on placed with free/
staterTariff (512 МВ), because this is what Blueprint means —standard(2 GB). Set the size only after you sure in your workload often footprint.
Using приложения
Van их
**Pприложение из launch. "Notable any MCP client on /mcp endpoint вашего service, sending MCP_TOKEN as a bearer token. Например, in Claude Code:
claude mcp add --transport http playwright https://<your-service>.onrender.com/mcp \
--header "Authorization: Bearer <your-MCP_TOKEN>"...
Else can записать him my enable "client config:
{
"mcpServers": {
"playwright": {
"url": "https://<your-service>.onrender.com/mcp",
"headers": {
"Authorization": "Bearer <your-MCP_TOKEN>"
}
}
}
}**Starting at 401, then on a МCP клиенте — missing headers or token does not match the current value in Dashboard.
**Then ask you to the assistant to see sites from: *"Open example.com and tell me the title of the page and the heading of the main во ходный heading"` He will call your server computer MCP tools and return result.
Unlock недодимо run
**Lockal
** Вопnote, no do it not. If you need to change render-entrypoint.sh and see the effect before push.
git clone https://github.com/render-examples/playwright-mcp-render.git
cd playwright-mcp-render
cp .env.example .env # then set MCP_TOKEN, e.g. to `openssl rand -hex 32`
docker build -f Dockerfile.render -t playwright-mcp-render .
docker run --rm --env-file .env -p 10000:10000 playwright-mcp-renderКогда гоументов, container prints upstream's own oracle Listening on …, and decrease for first line [аuth] Bearer-token gate listening … — в exactly this order: the "node" between —the public port closed until the server behind it has accept conesso. A [starter] line above outputit with an https:// URL — this scheme for the deployed server; local, use hart//.) Check server with MCP-handshake — Запомine the token from the .env, then the header below will resolve:
curl -sS -X POST http://localhost:10000/mcp \
-H "Authorization: Bearer $MCP_TOKEN" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"curl","version":"1"}}}'Вы should receive serverInfo — block with name Playwright; Remove Authorization header — and get 401. Direct client to http://localhost:10000/mcp — the same as to deployed URL.
MCP_TOKENis the only variable which you need to specify — container immediately stopped without it. The rest.env—RENDER_DETERAL_HOSTNAMEis absent outside Render, so the entrypoint already** additionally falls overPORT=10000and stored **--allowed-hosts *.
**Ppreta skip Docker run the continuously? The upstream server running the same: npx @playwright/mcp@lastest --port 10000 — note this resolves to best that npm published in this snapshot, not the image tag fixed snapshot, and there in it no auth gate (this is snap appendix). That path does not the same at Render, that why you need to check modifications in container before «закрутив».
Configuring
All is set in render.yaml; .env.example dкомент the same options for local running.
Переменная | По умолчанию | На academе "задала" |
| ``10000` | Порт, for which the authproxy is binding; Render routes to it. |
| генер. | **Обязателен. Bearer-token, which each query must have. The container without no will not be started. Rotate: измените значения (или нажмите Generate again) in Dashboardt and update it in clients. |
|
| Loopback-port, on which the MCP after server is listening. requires TemporaryIf is conflicting deliver the container. |
Произвите, но что-то помешато переводу. Пожалуйста, повторите запрос.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Stealth web browser for agents: search, fetch, click, download and type in persistent MCP sessions.
Live browser debugging for AI assistants — DOM, console, network via MCP.
Hosted real Google Chrome MCP with per-user persistent state. Navigate, click, type, screenshot.
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to automate web tasks such as browsing, clicking, typing, and taking screenshots via the Model Context Protocol.1MIT
- FlicenseNot gradedqualityCmaintenanceHeadless browser automation for LLM agents via REST API or MCP tools. Enables navigating pages, reading structured content, clicking elements, filling forms, and executing JavaScript.
- AlicenseBqualityAmaintenanceEnables browser automation through the Model Context Protocol, allowing AI agents to control Chrome, Firefox, or Edge for tasks like navigation, clicking, typing, and screenshots.3986MIT

Browseagent MCPofficial
AlicenseAqualityDmaintenanceEnables AI agents to control web browsers through the Model Context Protocol, supporting navigation, clicking, typing, and screenshots.12101MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/erlanov2023e/playwright-mcp-render-mt8x2ig6'
If you have feedback or need assistance with the MCP directory API, please join our Discord server