SK

Skyvern MCP Server for LLM Browser Control

Enable Claude, Windsurf, Cursor and other LLMs to control the browser with the Skyvern MCP server for seamless AI-driven web automation.

Quick Install
npx -y @integrations/mcp

Overview

Skyvern MCP Server is a lightweight implementation of a Model Context Protocol (MCP) adapter that lets large language models (LLMs) such as Claude, Windsurf, Cursor and others control a real browser for automation and web scraping tasks. It exposes browser actions as MCP-compatible tools so an LLM can navigate pages, inspect DOM, click elements, type input, take screenshots, run JavaScript, and manage cookies or local storage — all via the MCP tooling interface.

This server is useful when you want to give an LLM safe, auditable, and structured access to the web. Instead of having the model generate raw scraping scripts or clipboard-based automation, the MCP server provides a stable set of tools and a predictable request/response surface that integrates cleanly into LLM workflows. That enables use cases such as autonomous web research, form completion, content extraction for downstream pipelines, and multi-step browsing tasks driven by reasoning-capable models.

Features

  • Exposes a catalog of browser-control tools (open URL, click, type, evaluate JS, screenshot, query DOM)
  • Implements MCP-compatible API surface for both HTTP and WebSocket tool invocations
  • Browser automation backed by Playwright (Chromium) for reliable headless/headful control
  • Session management for isolated browser contexts per request or conversation
  • Configurable headless/headful mode, proxy, user agent and viewport settings
  • Cookie and storage inspection / manipulation for authenticated scraping
  • Dockerfile and example .env for quick deployment

Installation / Configuration

Prerequisites:

  • Node.js 18+ (or the Node version specified in repo)
  • Docker (optional, recommended for deployment)

Quick start (development):

git clone https://github.com/Skyvern-AI/skyvern.git
cd skyvern/integrations/mcp

# Install dependencies
npm ci

# Copy example env and edit as needed
cp .env.example .env

# Run server
npm start

Common .env configuration options (example):

PORT=8080
HEADLESS=true            # set to false to run visible browser
BROWSER_PATH=            # optional: path to Chromium binary
MAX_CONTEXTS=10
AUTH_TOKEN=changeme      # simple token-based access to the MCP server
LOG_LEVEL=info

Run with Docker:

# build image from repo root or integrations/mcp folder
docker build -t skyvern-mcp ./integrations/mcp
docker run -p 8080:8080 \
  -e PORT=8080 \
  -e AUTH_TOKEN=changeme \
  skyvern-mcp

Notes:

  • Tune MAX_CONTEXTS to limit concurrency and memory usage.
  • Provide a system Chromium or let Playwright download the required browser during installation.

Available Tools

The server exposes a set of browser-action tools that an LLM can invoke. Tool signatures below are illustrative; consult the repo’s examples for exact JSON formats.

Tool namePurposeInput (typical fields)Output
browser.openNavigate to a URLurl, waitUntilnavigation result/status
browser.screenshotCapture page or elementurl or selector, fullPagebase64 PNG
browser.queryRun DOM queriesselector, contextHTML/text or list of nodes
browser.clickSimulate clickselector, modifiersclick result/status
browser.typeType text into fieldselector, text, delaytyped status
browser.evalRun arbitrary JS in pagescript (string)JSON-serializable result
browser.cookies.getRead cookiesoptional domaincookie array
browser.cookies.setSet cookiescookie object(s)status
browser.waitForWait for selector or networkselector, timeoutstatus

Example MCP invocation (generic JSON):

{
  "tool": "browser.open",
  "args": { "url": "https://example.com", "waitUntil": "load" },
  "meta": { "session_id": "conversation-123" }
}

The server returns structured JSON with status, result, and optional diagnostics (screenshots, HTML snippets).

Available Resources

  • GitHub repository: https://github.com/Skyvern-AI/skyvern/tree/main/integrations/mcp
  • Example integrations and usage examples are included in the repo’s examples/ directory
  • .env.example and Dockerfile for deployment templates
  • Logs and tracing (configurable) to inspect exact actions performed by the model

Use Cases

  • Web scraping with context: Drive the browser to perform multi-step extractions (search → open listing → extract details) while preserving session state and handling JS-rendered pages.
  • Form automation: Have an LLM fill out multi-field forms, handle validation messages, and submit data, useful for automated testing or data entry tasks.
  • Autonomous browsing assistants: Combine LLM reasoning with controlled browser actions to perform tasks like price comparison, travel planning, or research gathering.
  • QA and regression testing: Use model-guided scripts to explore UI flows and generate synthetic user interactions for frontend testing.
  • Data augmentation for retrieval: Fetch live page content to augment knowledge retrieval or do up-to-date fact-checking for downstream LLM prompts.

Getting Help

If you need details on tool payloads, error codes, or examples for a particular LLM integration (Claude/Windsurf/Cursor), check the examples directory in the repository or open an issue on GitHub. The MCP server includes verbose logging and example client snippets to accelerate integration