vscode-playwright-mcp

vscode-playwright-mcp

Gives LLMs full control over VS Code — click UI elements, type code, run commands, take screenshots, read editor state, and record GIFs.

Category
Visit Server

README

vscode-playwright-mcp

A VS Code-aware layer on top of @playwright/mcp. Gives LLMs full control over VS Code — click UI elements, type code, run commands, take screenshots, read editor state, and record GIFs.

Use cases:

  • E2E testing of VS Code extensions
  • Automated VS Code workflows and tasks
  • AI-driven code editing and refactoring
  • Interactive demos and tutorials
  • Testing themes, keybindings, and settings

How It Works

Built on top of @playwright/mcp, which provides generic Electron automation (click, type, screenshot, etc.). We add a VS Code-specific layer: isolated launch with temp user-data-dir, command palette automation, editor state scraping, and Monaco-aware tools.

Generic tools from @playwright/mcp are aliased to vscode_* names for a unified LLM experience. Before vscode_launch, only 1 tool is visible (lazy discovery saves ~10k context tokens). After launch, all 26 tools appear.

Requirements

  • Node.js >= 22
  • VS Code installed locally (auto-detected on macOS and Linux)

Quick Start

{
  "mcpServers": {
    "vscode": {
      "command": "npx",
      "args": ["-y", "vscode-playwright-mcp"]
    }
  }
}

Custom VS Code binary:

{
  "mcpServers": {
    "vscode": {
      "command": "npx",
      "args": ["-y", "vscode-playwright-mcp", "--vscode-path", "/path/to/code"]
    }
  }
}

Tools

Lifecycle

Tool Description
vscode_launch Launch an isolated VS Code instance. Options: workspace, extensions, viewport size, settings.
vscode_close Close VS Code and clean up temp files/processes.

Vision (aliased from @playwright/mcp)

Tool Description
vscode_screenshot Full-window screenshot.
vscode_snapshot Accessibility tree with [ref=eN] annotations on interactive elements.
vscode_zoom Cropped screenshot of a specific region (native — Monaco-aware).
vscode_find_element Search a11y tree by role/name, returns refs (native).

Mouse & Keyboard (aliased from @playwright/mcp)

Tool Description
vscode_click Click by ref, element description, or coordinates.
vscode_type Type text into focused element.
vscode_press_key Press key combinations (e.g., Control+Shift+P).
vscode_hover Hover to reveal tooltips.
vscode_drag Drag from one point to another.
vscode_click_xy Click at exact pixel coordinates.
vscode_hover_xy Hover at exact pixel coordinates.
vscode_drag_xy Drag between exact pixel coordinates.
vscode_select_option Select from dropdown/combobox.
vscode_fill_form Fill form inputs.

VS Code Commands (native)

Tool Description
vscode_run_command Execute a VS Code command via Command Palette automation.
vscode_ensure_file Open and activate a file by path with verification.

State (native)

Tool Description
vscode_get_state Read editor state: active file, cursor, diagnostics, completions, peek widget.
vscode_get_hover Read hover tooltip content as text.

Advanced (mixed)

Tool Description
vscode_evaluate Run JavaScript in the VS Code renderer process (aliased).
vscode_wait_for Wait for selector state, text, or delay (aliased).
vscode_console Retrieve console messages from renderer (aliased).
vscode_resize Resize the VS Code window and viewport (native).
vscode_scroll Scroll up/down by amount (native).
vscode_gif Record actions as animated GIF (native).

Interaction Strategies

  1. Ref-based (preferred for UI): vscode_snapshot → see [ref=eN] annotations → vscode_click(ref="e5"). Deterministic, no coordinate guessing.

  2. Keyboard-first (preferred for navigation): vscode_snapshot → see shortcuts → vscode_press_key. Fastest for commands.

  3. Visual (required for editor content): Monaco editor is opaque to accessibility APIs. vscode_screenshot or vscode_zoom → read the image → vscode_click_xy(x, y).

How is this different from Playwright MCP?

This project is built on top of @playwright/mcp, not a replacement. Playwright MCP provides generic Electron automation. We add:

  • Isolated VS Code launch with temp user-data-dir, suppressed Welcome tab, settings injection
  • Command palette automation (vscode_run_command) — execute commands by name
  • Editor state scraping (vscode_get_state) — cursor, diagnostics, completions, peek widget
  • Monaco-aware tools (vscode_zoom, vscode_find_element) — the editor is invisible to generic a11y tools
  • Lazy tool discovery — 1 tool visible before launch, all ~26 after (saves context tokens)
  • GIF recording of VS Code sessions

Development

npm run build          # Build with tsup
npm run dev            # Build in watch mode
npm test               # Run unit tests (vitest)
npm run test:integration  # Run integration tests (requires VS Code)
npm run test:e2e       # Run E2E tests (full MCP protocol loop)
npm run typecheck      # Type-check with tsc
npm run lint           # Lint with ESLint

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured