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

For a self-hosted website screenshot MCP server on an Indian VPS, use the official Playwright MCP package: install Node.js 20 or newer, run the server headlessly, and connect your MCP client to its documented endpoint. You can also let the client launch the package directly, avoiding a separately exposed HTTP service. The steps below use Playwright’s official setup guidance; they have not been tested as a deployment.

Choose how the MCP client will connect

Playwright MCP supports screenshots of a current page or a page element. It also commonly guides browser interaction with structured accessibility snapshots, so screenshots are a supported capability, not a requirement for every interaction. The official getting-started workflow requires an MCP client and Node.js 20 or newer when launching the package directly. The browser is downloaded automatically on first use. See Playwright MCP: Getting started and Playwright MCP installation.

Client-launched package: simplest when the client runs on the VPS

In this arrangement, the MCP client launches the server process. The example below follows the documented mcpServers configuration pattern; exact configuration-file location and JSON wrapper depend on the MCP client. Replace the illustrative server key if your client uses a different naming convention.

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

Use this model when the client and browser server are on the same machine and your client supports launching local MCP processes. It avoids opening an MCP port to the public network. The client needs to be able to run Node.js and the package on the VPS.

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

Standalone HTTP server: useful when the client is remote

For a separately running process, Playwright’s example starts the server on port 8931 and connects to its /mcp path:

npx @playwright/mcp@latest --headless --port 8931

Configure the remote MCP client to use http://<VPS-address>:8931/mcp only if you have deliberately made that endpoint reachable and protected it appropriately. The official local example uses http://localhost:8931/mcp. See the standalone server example.

Provision an Indian VPS

Choose an actual Indian region offered by your VPS provider—Mumbai is one documented example—not a special Playwright setting. Before creating the instance, compare the region’s network proximity to your users and target sites, vCPU, memory, disk, transfer allowance, public IP requirements, firewall controls, and current price. The reviewed documentation does not establish a minimum RAM or CPU size for screenshot workloads, so do not assume a particular small bundle will handle your sites or concurrency.

AWS Lightsail documents Linux/Unix VPS bundles and a Mumbai region. Its pricing documentation says Mumbai-region plans include half the listed bundle data-transfer allowance. Rates, regions, and allowances can change, so verify the live plan details before provisioning: Lightsail pricing and Lightsail instance bundles.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
HP MicroServer Gen10 Plus Mini Tower Server, Intel Xeon E-2224 3.4GHz, 32GB RAM, 16TB Storage, RAID, Windows Server 2019
  • HP MicroServer Gen10 Plus Tower Server for Business with Microsoft Windows Server 2019 OS!
  • Intel Xeon E-2224 Quad-Core 3.4GHz 8MB CPU, Up To 4.6GHz Turbo
  • 32GB (2 x 16GB) DDR4 PC4-21300 2666MHz Unbuffered Memory
  • 16TB (4 x 4TB) 7.2K 6Gb/s SATA 3.5" HDDs in RAID
  • Hard drives and memory upgrades included separately NOT installed, installation required.
  1. Create a Linux VPS in the Indian region you selected.
  2. Allow SSH only from the addresses or network that will administer the server, where your provider supports source restrictions.
  3. Install Node.js 20 or newer if you will launch Playwright MCP through its package workflow.
  4. Ensure the instance has enough disk for the operating system, Node.js, and the browser that is downloaded on first use.

There is no official workload benchmark here for sizing. Start with a provider option appropriate to your expected workload, then measure resource use with the real target pages, screenshot dimensions, and concurrency before increasing volume.

Install and run Playwright MCP headlessly

On an unattended VPS, pass --headless; the documentation describes headed mode as the default. You can use the client-launched configuration above or start the standalone HTTP process. The official configuration options, including headless mode and host controls, are documented at Playwright MCP configuration options.

  1. Connect to the VPS through SSH.
  2. Install Node.js 20 or newer using a maintained installation method appropriate to your Linux distribution.
  3. For a client-launched setup, add the package configuration to the intended MCP client and restart or reload that client.
  4. For a standalone setup, start npx @playwright/mcp@latest --headless --port 8931 and configure the client’s MCP server URL to the reachable /mcp endpoint.
  5. Allow the browser download on first use, then ask the MCP client to open a page and take a screenshot of the page or a selected element.

The documentation examples use @latest, which selects the package version resolved at launch time. For a deployment where repeatability matters, choose and manage a package version deliberately rather than assuming that a moving latest tag will always behave identically.

Restrict network access and protect the browser

An HTTP MCP endpoint is an access point to a browser that can visit websites; treat it as sensitive. Playwright’s project warns that the MCP server is not a security boundary. Its configuration documentation describes the secrets feature as a convenience and states, “This is a convenience, not a security boundary.” Do not rely on secret redaction as access control.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Prefer client-launched stdio when the client can run on the VPS and no remote endpoint is needed.
  • For HTTP transport, bind and expose only what the deployment requires. The configuration offers --host and --allowed-hosts; choose their values deliberately rather than binding broadly without a reason.
  • Use the VPS firewall to restrict the MCP port to trusted client networks where possible. Avoid opening port 8931 to everyone simply to make the client connect.
  • Keep SSH access restricted as well. Firewall defaults differ by provider and image; AWS gives TCP 22 for SSH and TCP 80 for HTTP as examples for base images, not universal defaults. See Lightsail firewall guidance.
  • Do not expose credentials in configuration or logs unnecessarily. Secrets features do not replace host, firewall, and client access controls.

Playwright’s repository includes a Docker example, but containerization does not by itself make an exposed browser service safe. Review the project’s security warning before choosing a deployment model: Playwright MCP repository.

Verify the MCP connection and screenshot flow

  1. From the intended MCP client, confirm that the Playwright server starts or that the configured HTTP endpoint connects.
  2. Ask it to navigate to a page you are authorized to access and request a screenshot of the page. For an element capture, identify the target element through the available page interaction tools and request that element’s screenshot.
  3. Check that the returned screenshot corresponds to the loaded page and that the browser is operating headlessly on the VPS.
  4. If the client cannot connect, distinguish a process-start issue from a network or firewall issue before changing settings.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshooting common setup failures

Symptom Likely cause What to check
Package fails to start or reports an unsupported runtime Node.js is older than the documented 20+ prerequisite. Check the installed Node.js version on the same account and environment that launches the MCP process; upgrade to Node.js 20 or newer.
First screenshot attempt stalls or browser cannot launch The browser download on first use has not completed, or the process cannot complete its setup. Allow the first-use browser download to finish and inspect the process output. The official setup says the browser downloads automatically on first use.
Client-launched server is unavailable The client configuration is malformed, the executable is unavailable to the client process, or the client has not reloaded its configuration. Check the client’s expected mcpServers format, ensure npx is available in its environment, and restart or reload the client.
Remote client cannot reach standalone service The server is listening only on a local interface, the URL omits /mcp, or host/firewall rules block the request. Verify the listening host and configured allowed hosts, use the documented /mcp path, and permit only the required client traffic through the VPS firewall.
Works locally but not from outside the VPS The endpoint is bound to localhost or the cloud firewall does not allow the intended source. Review --host and provider firewall rules. Do not solve this by opening access globally unless that exposure is intended and controlled.
Slow or unreliable captures under load Site behavior, browser workload, memory/CPU pressure, network conditions, or concurrency may be involved. Measure the actual workload and reduce concurrent captures while diagnosing. The cited setup documentation provides no minimum-resource benchmark.

Or skip the browser setup

If you need screenshots through an API rather than a browser MCP server you administer, ScreenshotNeo is a website screenshot API and MCP server for developers. Its MCP tools include take_screenshot, get_page_info, and capture_pdf for Claude, Cursor, and other MCP clients. Cookie banners are accepted before capture and 60+ known consent platforms, newsletter popups, and chat widgets are removed; each step can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers identify the page verdict and billing status.

One GET request returns an image or PDF. The example saves a WebP response; see the ScreenshotNeo API documentation for options and setup.

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

ScreenshotNeo includes 1,000 screenshots per month on its free plan with no card; paid plans start at $5 for 3,000 shots. Sign up for ScreenshotNeo free.

Free tools Windows power users keep installed

One-click scans. No signup required.

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

Frequently Asked Questions

Can the MCP client run on my laptop while the browser runs on the VPS?

Yes, use the separately hosted HTTP transport and configure the client to reach the VPS server’s /mcp endpoint, while restricting network access to that client.

Does Playwright MCP require screenshots for every browser task?

No. Screenshots are supported, while the documented interaction model also uses structured accessibility snapshots.

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.