stealth browser mcp

Local 2025-09-01 00:08:29 0

Provides stealth browser capabilities using Playwright with anti-detection techniques, allowing MCP clients to navigate websites and take screenshots while evading common bot detection systems.


An MCP (Model Context Protocol) server that provides stealth browser capabilities using Playwright with anti-detection techniques. This server allows MCP clients to navigate to websites and take screenshots while evading common bot detection systems.

Features

  • Stealth Mode: Uses puppeteer-extra-plugin-stealth with playwright-extra to bypass bot detections
  • Modifies browser fingerprints to appear as regular user traffic
  • Handles WebGL, canvas, font, plugin and other browser fingerprinting techniques
  • Screenshot Tool: Take full-page or element-specific screenshots of any website
  • Supports both headless (default) and visible browser modes
  • MCP Integration: Exposes browser capabilities via Model Context Protocol

Installation

# Install dependencies
bun install

Usage

# Run the MCP server
bun start

# Development mode
bun dev

# Inspect available tools
bun inspect

Available Tools

screenshot

Takes screenshots of webpages using a stealth browser.

Parameters: - url (string, required): The URL to navigate to - fullPage (boolean, optional, default: true): Whether to capture the entire page - selector (string, optional): CSS selector to capture only a specific element - headless (boolean, optional, default: true): Whether to run in headless mode or visible browser mode

Technical Details

This project uses: - FastMCP for the MCP server implementation - Playwright for browser automation - playwright-extra for plugin support - puppeteer-extra-plugin-stealth for avoiding bot detection


This project was built with Bun, a fast all-in-one JavaScript runtime.

[
  {
    "description": "Navigate to a URL and take a screenshot of the webpage",
    "inputSchema": {
      "$schema": "http://json-schema.org/draft-07/schema#",
      "additionalProperties": false,
      "properties": {
        "fullPage": {
          "default": true,
          "description": "Whether to take a screenshot of the full page",
          "type": "boolean"
        },
        "headless": {
          "default": true,
          "description": "Whether to run browser in headless mode (default) or visible mode",
          "type": "boolean"
        },
        "selector": {
          "description": "CSS selector to screenshot a specific element",
          "type": "string"
        },
        "url": {
          "description": "URL to navigate to",
          "type": "string"
        }
      },
      "required": [
        "url"
      ],
      "type": "object"
    },
    "name": "screenshot"
  }
]