ScreenshotNeo

BlogAI agents

How to Set Up a Website Screenshot MCP Server on an Indian Linux Hosting Plan

Set up Playwright MCP on an Indian Linux host, check whether your plan supports it, connect an MCP client, and secure the endpoint.

By the ScreenshotNeo team4 October 20268 min read

To run a website screenshot MCP server on an Indian Linux hosting plan, first confirm that the plan supports Node.js 20 or newer, the browser runtime and its system dependencies, a persistent process, and a safe network route from your MCP client. Then run the official Playwright MCP server in headless mode over HTTP and connect your client to its /mcp endpoint. A plan described as “Linux” or “Node.js” does not by itself guarantee these capabilities.

This guide uses Playwright MCP as the self-hosted option. Its documented standalone HTTP example listens on port 8931. The exact service-manager and firewall steps depend on your provider and plan, so check the applicable plan documentation before deploying. Playwright MCP getting started lists Node.js 20 or newer as a prerequisite.

1. Check whether your hosting plan can run it

A screenshot MCP server controls a browser process. The host needs to allow more than serving a static website: it must permit a compatible Node.js runtime, browser installation and execution, a process that stays available, and a route from the client to the MCP endpoint.

Check What to confirm
Node.js Can you use Node.js 20 or newer for the service account?
Browser and libraries Can Playwright download or access its browser, and can the host provide the required operating-system libraries?
Persistent process Does the plan permit a server process to run continuously? Which process manager or hosting control is supported?
Network access Can the MCP client reach the service over a private network, tunnel, or protected reverse proxy? Can access be restricted to intended clients?
Resource limits What memory, CPU, disk, process, and concurrency limits apply? Allow room for the browser workload and downloaded browser files.
Operations Can you view logs, restart a failed process, update packages, and manage configuration?

The official setup material does not give a universal minimum RAM or CPU figure. Browser workload varies with the pages and number of simultaneous sessions, so use your provider’s limits and observe the service under your actual workload instead of relying on a made-up minimum.

2. Choose managed hosting or a VPS

Managed Node.js hosting can be easier to operate, but the provider controls which runtimes, processes, dependencies, and network ports are available. A VPS can provide root access and server-level control, with more responsibility for updates, firewall rules, and service maintenance.

Capability Managed Node.js plan Linux VPS
Root access Often limited or unavailable; verify the plan. May provide root access; verify the product and configuration.
Browser dependencies May be constrained to supported runtimes and packages. Usually offers more installation control, subject to the VPS environment.
Persistent process Use only the provider’s supported application or background-process mechanism. You generally choose and maintain the process mechanism.
Inbound endpoint and firewall Port access may be restricted or fixed. Typically offers more firewall and port control, which you must configure safely.
Maintenance The provider manages some platform layers. You take on more operating-system and service maintenance.

Provider rules are plan-specific and can change. For example, Hostinger’s documentation distinguishes its managed Node.js hosting from VPS options; its support page says Web and Cloud ports are fixed and points users needing full port control to VPS hosting. These are examples for that provider, not rules for Indian hosting generally. Check your own provider’s current documentation and account limits: Hostinger India Node.js hosting, Hostinger port documentation, and Hostinger India Linux VPS.

3. Install and start Playwright MCP

On the Linux host, use a service account and a supported Node.js runtime. The documented standalone HTTP command is:

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

The --headless flag is important on a server without a graphical display; Playwright MCP’s documented default is headed mode. Browser files download automatically on first use, so make sure the service account can access the required installation location and has enough disk space. See the official installation instructions and configuration options.

The command above is useful for an initial run. For a persistent deployment, configure the command using the process mechanism your host supports. The research sources do not establish one systemd, Docker, or hosting-panel procedure that works across unspecified Indian plans. Follow your provider’s documented process setup, then verify that the service restarts after a process failure or host restart.

4. Bind and route the MCP endpoint deliberately

The MCP endpoint uses the /mcp path. When the client and service share a host or network namespace, the documented local endpoint is:

http://localhost:8931/mcp

If the client is on another machine, localhost points to that client, not the server. Use a hostname or address reachable from the client, through a private route, tunnel, or protected reverse proxy. The Playwright MCP configuration documents a host option, including binding to 0.0.0.0 in container scenarios. Binding to all interfaces makes the service listen beyond loopback; do so only when the network controls are in place and necessary.

Do not expose an unauthenticated browser-control endpoint to the public internet. Restrict inbound traffic to intended clients and use an access-control and network-security plan appropriate to your deployment. The project warns: “Playwright MCP is not a security boundary.” Treat connected clients and browser sessions accordingly. See the Playwright MCP README.

5. Connect an MCP client and request a screenshot

Configure your MCP client with the reachable server URL. The exact configuration file and field names vary by client; use that client’s current MCP documentation. For a client on the same host or network namespace, the service URL is http://localhost:8931/mcp. For a remote client, substitute the protected hostname or address configured for your service.

After connecting, ask the client to navigate to a page and take a screenshot, for example: “Go to https://example.com and take a screenshot.” The browser performs the navigation, and the MCP client receives the screenshot result through the server. Test first with a public, non-sensitive page. Do not put sensitive authenticated sessions into a shared browser context unless you have assessed who can use that context and what it can access.

6. Keep the service reliable and secure

  • Limit reachability: prefer a private route or tunnel. If a reverse proxy is required, protect it and allow only intended clients.
  • Separate access: use a dedicated service account and avoid sharing browser state or credentials with unrelated users.
  • Plan for browser downloads: make sure the runtime account has writable storage where needed and enough disk space.
  • Monitor and restart: use the provider-supported service mechanism, inspect logs, and confirm recovery after process or host restarts.
  • Control concurrency: browser sessions consume host resources. Start with the workload your plan can support and watch its process and resource limits.
  • Maintain the runtime: keep Node.js, Playwright MCP, and the host packages updated in line with your deployment process.
  • Check HTTP transport behavior: if a proxy sits in front of the service, verify that it supports the connection and heartbeat behavior expected by the HTTP transport.

7. Troubleshooting

Symptom Likely cause What to do
Unsupported Node.js version or startup error The service is running under an older Node.js runtime than the documented prerequisite. Configure Node.js 20 or newer for the actual service process, then restart it.
Browser executable missing The browser has not downloaded, or the service account cannot access its installation path. Allow the documented first-use browser download, check account permissions and available disk, and review startup logs.
Missing shared library or browser launch failure The host lacks a required operating-system dependency, or the plan prevents installing it. Check the Playwright installation guidance and your provider’s supported packages. If the plan cannot provide browser dependencies, use a plan with the required control.
Connection refused The process is stopped, listening on a different interface or port, or the network blocks the connection. Check service logs and listening configuration; confirm the client’s URL, port, and network route.
Client connects locally but not remotely localhost is being used from a different machine, or the endpoint is not reachable through the chosen route. Use the server’s client-reachable hostname or address and configure a private route, tunnel, or protected proxy.
Port cannot be opened The hosting plan restricts inbound ports. Check the provider’s plan-specific port policy and supported proxy options. Consider a VPS if the deployment requires server-level port control.
Process disappears after logout or deployment The plan does not keep ad hoc shell processes running, or the command was not registered with its supported service mechanism. Use the provider’s documented persistent-process or application service feature. Confirm policy before relying on a background process.
Requests fail through a reverse proxy The proxy may not pass through the HTTP transport behavior or heartbeat as expected. Check the Playwright MCP transport guidance and proxy configuration; test directly on a private route to isolate the proxy.
Slow or failed captures under load Pages, concurrent browser sessions, or host resource limits may be exceeding available capacity. Inspect logs and resource usage, reduce concurrent sessions, and reassess the plan against the workload. The official docs do not define a universal sizing threshold.

8. Performance, reliability, and cost considerations

A self-hosted browser service’s performance depends on the pages it visits, browser startup and download state, concurrent sessions, and the hosting plan’s resource limits. There is no documented universal RAM or CPU minimum in the sources reviewed. Measure the workload you intend to run, account for browser storage on disk, and avoid promising a fixed capture time based on an unspecified plan.

For reliability, confirm that the provider allows a persistent service and that the supported process mechanism can restart it. A shell command that works interactively does not prove that it will remain running after logout, deployment, or a host restart. Keep logs available so you can distinguish service startup failures from network or browser failures.

Costs are provider- and plan-specific and can change. Compare the plan’s resource limits and operational control, not just its “Linux” or “Node.js” label. A VPS can add maintenance work; managed hosting can impose limits on dependencies, persistence, and ports. Verify current terms with your provider before choosing.

Or skip the browser setup

ScreenshotNeo is a website screenshot API and MCP server from Yorker Media. For a screenshot, make one GET request. See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
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)
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 and consent banners, newsletter popups, and chat widgets are removed before the shot; each cleanup step can be turned off.
  • Bot checks and CAPTCHAs, blank pages, timeouts, failed loads, and cache hits cost nothing. Responses include X-Page-Verdict and X-Billed headers.
  • An MCP server lets AI agents, including Claude, Cursor, and other MCP clients, take screenshots.
  • The free plan includes 1,000 screenshots a month with no card. Paid plans start at $5 for 3,000 screenshots; every feature is on every plan.

Sign up for 1,000 free screenshots a month, with no card.

FAQ

Can I run the server on any Indian Linux hosting plan?

No. Confirm Node.js version, browser dependencies, persistent-process policy, resource limits, and client network access for the specific plan.

Does the MCP server have to use port 8931?

The documented standalone example uses port 8931. The configuration supports choosing the host and port; make sure the client URL and network rules match your chosen configuration.

Can a remote MCP client use the localhost URL?

Only when it shares the service’s host or network namespace. Otherwise, configure a reachable private hostname or address and a protected route.

What is the minimum RAM for Playwright MCP?

The official sources reviewed do not give a universal RAM or CPU minimum. Capacity depends on the browser workload and hosting limits.