DriversRecommendedOutdated drivers can make a good PC feel brokenScan driver issues before chasing fixes manually.Scan NowOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan Now×
Skip to content
World desk7 min

How to Run a Website Screenshot MCP Server with Docker

Run Playwright MCP or a dedicated screenshot MCP server in Docker, connect your client over stdio or HTTP, save files to the host, and avoid the desktop-capture trap.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The quickest documented route is Microsoft’s Playwright MCP image. Run it as a persistent container on port 8931, then point your MCP client at http://localhost:8931/mcp. If you would rather have a small, screenshot-focused server, there is a separate Python project you can build and run with Docker. The two are different projects with different commands, ports and capabilities, so they are not interchangeable. The commands below come from each project’s README. Check the upstream README and image tag before you run anything, because both can change.

Pick a transport first: stdio or HTTP

Which command you run depends on how your MCP client talks to the server.

As an Amazon Associate I earn from qualifying purchases.

  • stdio: the MCP client launches the container itself with docker run -i and talks over standard input and output. Nothing stays running when the client closes, and you publish no port.
  • HTTP: you start a container that stays up on its own, publish a port, and the client connects to a URL. Use this when the server should outlive the client or be shared by several clients. Your client must support URL-based (streamable HTTP) servers.

Before you start, install Docker and confirm that docker run hello-world works.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Option 1: Microsoft Playwright MCP in a persistent container

The microsoft/playwright-mcp README documents both modes. It also states: “The Docker implementation only supports headless chromium at the moment.” Expect headless Chromium only. Firefox, WebKit and headed mode are not available in the container.

#1 Best Overall
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
  • Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM)
  • Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
  • CanaKit Turbine Black Case for the Raspberry Pi 5
  • CanaKit Low Noise Bearing System Fan
  • Mega Heat Sink - Black Anodized

Start the HTTP server

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

What the flags do:

  • -d runs it in the background; --name playwright lets you manage it with docker logs playwright and docker stop playwright.
  • --rm deletes the container when it stops.
  • --pull=always fetches the image each time, so you get whatever the tag currently points to. The README does not give a validated version to pin. If you need reproducibility, test a specific image tag or digest yourself and pin that.
  • -p 8931:8931 publishes the port, and --host 0.0.0.0 makes the server listen on all interfaces inside the container so the published port works.
  • --no-sandbox is part of the documented command for running Chromium in the container.

Connect your MCP client

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

Or let the client launch the container (stdio)

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

Taking and saving screenshots

The screenshot tool is browser_take_screenshot. Its optional filename saves the image under that name. Without one, the server writes a timestamped file to its output directory. According to the README, a filename resolves against the workspace root or the output directory depending on whether you supplied one explicitly. Inside Docker, those paths are inside the container. If you want files on your host, mount a host directory and set the output directory to it. The README excerpt I worked from does not give a ready-made mount recipe, so check the current options list for the output-directory flag before relying on it.

Option 2: A dedicated screenshot server (mcp-screenshot-server)

The aamar-shahzad/mcp-screenshot-server project is a separate Python MCP server. You build the image yourself from the repository:

Rank #2
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
  • Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM)
  • Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
  • CanaKit Premium High-Gloss Raspberry Pi 4 Case with Integrated Fan Mount, CanaKit Low Noise Bearing System Fan
  • CanaKit 3.5A USB-C Raspberry Pi 4 Power Supply (US Plug) with Noise Filter, Set of Heat Sinks, Display Cable - 6 foot (Supports up to 4K60p)
  • CanaKit USB-C PiSwitch (On/Off Power Switch for Raspberry Pi 4)
docker build -t mcp-screenshot-server .

stdio

docker run -i --rm mcp-screenshot-server

Streamable HTTP

docker run -p 8000:8000 mcp-screenshot-server 
  --transport streamable-http --port 8000

The README’s Cursor example uses the endpoint http://localhost:8000/mcp. Host and port can also be set with MCP_HOST (default 0.0.0.0) and MCP_PORT (default 8000). The project also documents an SSE transport. Not every client supports every transport, so match the transport to your client’s documentation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Get screenshot files onto your host

mkdir -p screenshots
docker run -p 8000:8000 
  -v "$(pwd)/screenshots:/app/screenshots" 
  mcp-screenshot-server --transport streamable-http

Files the server writes to /app/screenshots then appear in ./screenshots on your machine. That path is specific to this project.

Web page or desktop: do not mix them up

A headless browser in a container renders web pages. It cannot see your desktop. The mcp-screenshot-server README warns that in Docker the container runs headless and screen capture may come out blank, and says capturing the real screen requires running the server natively on the host. If you want pictures of websites, Docker is fine. If you want your actual screen, run the server outside Docker.

Option 3: A local screenshot API with an MCP interface

The mcp-server-screenshot PyPI page describes a REST API and MCP server built on Playwright with a pooled Chromium browser. Its quick start is docker-compose up -d, which serves at http://localhost:8500. The screenshot endpoint supports viewport size, full-page mode, PNG, JPEG or PDF output, waiting for a CSS selector and an optional delay. The page content I reviewed does not include a complete recipe for connecting it to an MCP client, so treat it as an option for people who want a local screenshot API, not a copy-paste MCP setup.

Rank #4
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
  • Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1. 5GHz
  • 2. 4 GHz and 5. 0 GHz IEEE 802. 11b/g/n/ac wireless LAN, Bluetooth 5. 0, BLE
  • 2 × USB 3. 0 ports, 2 x USB 2. 0 Ports
  • 2 × micro HDMI ports supproting up to 4Kp60 video resolution
  • Micro SD card slot for loading operating system and data storage

A hosted container alternative

Docker’s MCP Catalog lists a Browserbase MCP server described as a containerized server for remote browser automation and screenshot capture. It needs secrets, including Browserbase credentials, and lists six tools. The browser sessions run remotely rather than on your machine. The catalog page does not state pricing or terms.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Comparison

Aspect Playwright MCP mcp-screenshot-server mcp-server-screenshot
How you get it Published image mcr.microsoft.com/playwright/mcp Build from the repository Docker Compose quick start
HTTP port 8931 (/mcp) 8000 (/mcp) 8500 (REST API)
stdio Yes, client-launched Yes Not stated on the page reviewed
Browser Headless Chromium only in Docker Headless in Docker; no real desktop capture Pooled Chromium via Playwright
Host file output Output directory in the container; mount recipe not shown in the excerpt reviewed Mount /app/screenshots Not stated

Security: keep it local

The Playwright MCP README says the server is not a security boundary. None of the pages reviewed document authentication, TLS or a safe way to expose these HTTP servers publicly. As a cautious inference, not something the projects state: keep these containers on your own machine or a trusted network. For example, publish to loopback only with -p 127.0.0.1:8931:8931. Read the project’s current security guidance before making it reachable from elsewhere. A browser that fetches arbitrary URLs can also reach services on your internal network, so be careful what it can access.

Best Value
CanaKit Raspberry Pi 5 16GB Starter Kit PRO - Turbine Black (128GB Edition) (16GB RAM)
  • Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM)
  • Includes 128GB Micro SD Card pre-loaded with 64-bit Raspberry Pi OS, USB MicroSD Card Reader
  • CanaKit Turbine Black Case for the Raspberry Pi 5
  • CanaKit Low Noise Bearing System Fan
  • Mega Heat Sink - Black Anodized
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting

Symptom Likely cause Fix
Client cannot connect to localhost:8931 Port not published, container exited, or server bound to the container’s loopback Check docker ps and docker logs playwright; keep -p 8931:8931 and --host 0.0.0.0
Client says the URL or transport is unsupported Client only supports stdio or a different HTTP transport Switch to the stdio config, or use the transport your client documents
Port already allocated Something else is using it, or an old container docker rm -f playwright, or map another host port such as -p 9000:8931 and update the URL
Screenshot saved but not found on the host File was written inside the container Mount a volume (/app/screenshots for mcp-screenshot-server) or copy it out with docker cp
Blank image of a desktop Headless container has no real screen Run the screenshot server natively for desktop capture
Firefox or headed mode fails Docker image supports headless Chromium only Run Playwright MCP natively on the host
Image changed behavior after a restart --pull=always follows the tag Pin a tag or digest you have tested

Pre-flight checklist

  • Transport matches your client (stdio or URL).
  • Port is published and the URL ends in /mcp.
  • Output directory is mounted if you need files on the host.
  • The target is a web page, not the physical desktop.
  • The service is not exposed beyond a trusted network.

Or skip the browser setup

If all you need is a clean screenshot of a URL, running and securing a browser container is extra work. ScreenshotNeo is a screenshot API and MCP server: one GET request returns a PNG, JPEG, WebP or PDF. Full parameters are in the docs.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
  • Cookie banners, newsletter popups and chat widgets are removed before the shot (60+ known consent platforms); each step can be turned off.
  • Bot checks, blank pages, timeouts, failed loads and cache hits are never billed, and the X-Page-Verdict and X-Billed response headers tell you which it was.
  • The MCP server works with Claude, Cursor and other MCP clients, with the tools take_screenshot, get_page_info and capture_pdf. There is no container to run.
  • Full-page capture, element capture by CSS selector, dark mode, device presets, waiting for a selector or network idle, and caching are all available on every plan.
  • 1,000 screenshots a month are free with no card; paid plans start at $5 for 3,000.

Sign up free and take your first screenshot in a minute.

Frequently Asked Questions

Can I use the same Docker container for several MCP clients?

With an HTTP server such as the Playwright MCP container on port 8931, several clients can point at the same URL if they support URL-based servers. Whether sessions are isolated between clients is not documented in the README excerpt reviewed, so test before sharing one instance.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Do I need a GPU or a display for these containers?

The documented setups run a headless browser and need neither. A display is only relevant to desktop capture, which Docker does not do reliably.

How do I stop and remove the Playwright container?

Run docker stop playwright. Because the command includes –rm, the container is deleted when it stops.

Quick Recap

Bestseller No. 1
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
CanaKit Raspberry Pi 5 Starter Kit PRO - Turbine Black (128GB Edition) (8GB RAM)
Includes Raspberry Pi 5 with 2.4Ghz 64-bit quad-core CPU (8GB RAM); CanaKit Turbine Black Case for the Raspberry Pi 5
$259.95
Bestseller No. 2
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
CanaKit Raspberry Pi 4 4GB Starter PRO Kit - 4GB RAM
Includes Raspberry Pi 4 4GB Model B with 1.5GHz 64-bit quad-core CPU (4GB RAM); Includes Pre-Loaded 32GB EVO+ Micro SD Card (Class 10), USB MicroSD Card Reader
$159.99
Bestseller No. 4
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
Raspberry SC15184 Pi 4 Model B 2019 Quad Core 64 Bit WiFi Bluetooth (2GB)
Broadcom BCM2711, quad-core Cortex-A72 (ARM v8) 64-bit SoC @ 1. 5GHz; 2. 4 GHz and 5. 0 GHz IEEE 802. 11b/g/n/ac wireless LAN, Bluetooth 5. 0, BLE
$92.97
Bestseller No. 5
CanaKit Raspberry Pi 5 16GB Starter Kit PRO - Turbine Black (128GB Edition) (16GB RAM)
CanaKit Raspberry Pi 5 16GB Starter Kit PRO - Turbine Black (128GB Edition) (16GB RAM)
Includes Raspberry Pi 5 16GB with 2.4Ghz 64-bit quad-core CPU (16GB RAM); CanaKit Turbine Black Case for the Raspberry Pi 5
$419.99

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.