Playwright MCP Docker Environment
by iuill
This project provides a Docker Compose environment to run the `@playwright/mcp` server. It allows you to easily set up and manage the Playwright MCP server for use with clients like Cline or Cursor.
View on GitHub
Last updated: N/A
Playwright MCP Docker Environment
日本語版はこちら (Japanese version here)
This project provides a Docker Compose environment to run the @playwright/mcp server. It allows you to easily set up and manage the Playwright MCP server for use with clients like Cline or Cursor.
Prerequisites
- Docker
- Docker Compose
Setup
- Clone the repository:
git clone <repository-url> cd playwright-mcp-docker - Create
.envfile: Copy the sample environment file:cp .env.sample .env - Configure
.env: Edit the.envfile to adjust settings according to your environment and preferences:MCP_HOST_PORT: The port on the host machine that the MCP server will be accessible through (default:8931).HEADLESS: Set totruefor headless mode (no browser GUI) orfalsefor headed mode (requires GUI setup). Default istrue.- (Headed Mode Only)
DISPLAY,WAYLAND_DISPLAY,XDG_RUNTIME_DIR: Environment variables needed for GUI applications in Linux environments (especially WSLg). Defaults are provided. - (Headed Mode Only)
X11_HOST_PATH,WSLG_HOST_PATH: Host paths for X11 and WSLg sockets/directories. Defaults are provided. Adjust if your system configuration differs. For Windows Docker accessing WSL paths, use the\\wsl.localhost\DistroName\...format (see.env.sample).
Running the Server
-
Build and start the container:
docker-compose up --build -dThe
--buildflag is only needed the first time or whenDockerfilechanges. The-dflag runs the container in detached mode (in the background). -
Configure MCP Client (e.g., VSCode/Cline):
- Add or enable an MCP server named
playwright_sse(or any name you prefer). - Set the connection type to SSE.
- Set the URL to
http://localhost:<MCP_HOST_PORT>/sse(replace<MCP_HOST_PORT>with the value from your.envfile, e.g.,http://localhost:8931/sse). - Example client configuration (filename depends on the client):
{ "mcpServers": { "playwright_sse": { // Server name is arbitrary "url": "http://localhost:8931/sse" // Match the port number in .env } } } - Add or enable an MCP server named
Configuration Details
.envfile: Manages environment-specific settings like ports, headless mode, and paths for headed mode.docker-compose.yml: Defines the Docker service, reads variables from.env, sets up port mapping and volumes.Dockerfile: Defines the Docker image, installs@playwright/mcpand its dependencies (including Chrome).entrypoint.sh: Script that runs when the container starts, passing the correct arguments (--headlessor--port) to thenpx @playwright/mcpcommand based on theHEADLESSenvironment variable.
Switching Modes
- Headless Mode: Set
HEADLESS=truein.env. Restart the container:docker-compose up -d. - Headed Mode: Set
HEADLESS=falsein.env. Ensure your host environment (e.g., WSLg or X Server) is correctly set up. Restart the container:docker-compose up -d.
Headed Mode Notes (WSLg)
- If you are using WSLg on Windows, the default settings in
docker-compose.ymland the WSL2-specific paths in.env.sampleshould generally work. Ensure the paths in your.envmatch your WSL distribution name if it's notUbuntu. - If you are not using WSLg (e.g., standard Linux desktop or macOS/Windows with a separate X Server), you will need to adjust the
DISPLAYvariable and potentially the volume mounts (X11_HOST_PATH) in your.envfile according to your X Server setup.
Stopping the Server
docker-compose down