Navigation
MCP Web Browser Server: Secure Headless Automation via Flexible APIs - MCP Implementation

MCP Web Browser Server: Secure Headless Automation via Flexible APIs

MCP Web Browser Server: The Playwright-powered solution for seamless, secure headless browser interactions via flexible API. Transform your MCP workflows today!

Browser Automation
4.1(155 reviews)
232 saves
108 comments

Ranked in the top 7% of all AI tools in its category

About MCP Web Browser Server

What is MCP Web Browser Server: Secure Headless Automation via Flexible APIs?

MCP Web Browser Server is a specialized automation tool built on the Model Context Protocol (MCP) framework, leveraging Playwright to enable secure, headless browser automation through standardized API interfaces. Designed for developers and enterprises, it provides a sandboxed environment for executing complex web interactions without graphical interfaces, ensuring robust security and scalability.

Key Features of MCP Web Browser Server: Secure Headless Automation via Flexible APIs?

  • Context-Aware Automation: Maintains execution context across multiple browser instances and tabs
  • Granular Security Controls: Role-based access management for API endpoints and session isolation
  • Multi-Platform Support: Cross-browser automation (Chromium, Firefox, WebKit) in headless mode
  • Dynamic Resource Handling: Real-time DOM manipulation and JavaScript execution capabilities
  • Extensible API Framework: Modular endpoint design for custom automation workflows

MCP Web Browser Server Features

How to Use MCP Web Browser Server: Secure Headless Automation via Flexible APIs?

  1. Install via package manager: pip install mcp-web-browser
  2. Configure security policies in server_config.yaml
  3. Initialize MCP context using:
  4. 
    from mcp_web_browser import AutomationServer
    
    server = AutomationServer()
    server.start(context_policy="strict")
            
  5. Execute actions through RESTful API endpoints:
  6. /api/v1/navigate?url=https://example.com
    /api/v1/click?selector=#login-button
            

Use Cases of MCP Web Browser Server: Secure Headless Automation via Flexible APIs?

Compliance Monitoring

Automate regulatory checks on web applications while maintaining audit trails through MCP context tracking

CI/CD Integration

Execute headless e2e tests in isolated environments as part of continuous delivery pipelines

Content Aggregation

Securely scrape dynamic content from multiple sources while adhering to robots.txt policies

MCP Web Browser Server FAQ

FAQ

Is browser installation required?

No. Pre-packaged browser binaries are included in the distribution package

How is session isolation achieved?

Uses containerized execution environments with ephemeral storage for each context

What security protocols are enforced?

Enforces TLS 1.3 for API communication and mandatory JWT authentication for all endpoints

Content

MCP Web Browser Server

An advanced web browsing server for the Model Context Protocol (MCP) powered by Playwright, enabling headless browser interactions through a flexible, secure API.

Web Browser Server MCP server

🌐 Features

  • Headless Web Browsing : Navigate to any website with SSL certificate validation bypass
  • Full Page Content Extraction : Retrieve complete HTML content, including dynamically loaded JavaScript
  • Multi-Tab Support : Create, manage, and switch between multiple browser tabs
  • Advanced Web Interaction Tools :
    • Extract text content
    • Click page elements
    • Input text into form fields
    • Capture screenshots
    • Extract page links with filtering capabilities
    • Scroll pages in any direction
    • Execute JavaScript on pages
    • Refresh pages
    • Wait for navigation to complete
  • Resource Management : Automatic cleanup of unused resources after inactivity
  • Enhanced Page Information : Get detailed metadata about the current page

🚀 Quick Start

Prerequisites

  • Python 3.10+
  • MCP SDK
  • Playwright

Installation

# Install MCP and Playwright
pip install mcp playwright

# Install browser dependencies
playwright install

Configuration for Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "web-browser": {
      "command": "python",
      "args": [
        "/path/to/your/server.py"
      ]
    }
  }
}

💡 Usage Examples

Basic Web Navigation

# Browse to a website
page_content = browse_to("https://example.com")

# Extract page text
text_content = extract_text_content()

# Extract text from a specific element
title_text = extract_text_content("h1.title")

Web Interaction

# Navigate to a page
browse_to("https://example.com/login")

# Input text into a form
input_text("#username", "your_username")
input_text("#password", "your_password")

# Click a login button
click_element("#login-button")

Screenshot Capture

# Capture full page screenshot
full_page_screenshot = get_page_screenshots(full_page=True)

# Capture specific element screenshot
element_screenshot = get_page_screenshots(selector="#main-content")

Link Extraction

# Get all links on the page
page_links = get_page_links()

# Get links matching a pattern
filtered_links = get_page_links(filter_pattern="contact")

Multi-Tab Browsing

# Create a new tab
tab_id = create_new_tab("https://example.com")

# Create another tab
another_tab_id = create_new_tab("https://example.org")

# List all open tabs
tabs = list_tabs()

# Switch between tabs
switch_tab(tab_id)

# Close a tab
close_tab(another_tab_id)

Advanced Interactions

# Scroll the page
scroll_page(direction="down", amount="page")

# Execute JavaScript on the page
result = execute_javascript("return document.title")

# Get detailed page information
page_info = get_page_info()

# Refresh the current page
refresh_page()

# Wait for navigation to complete
wait_for_navigation(timeout_ms=5000)

🛡️ Security Features

  • SSL certificate validation bypass
  • Secure browser context management
  • Custom user-agent configuration
  • Error handling and comprehensive logging
  • Configurable timeout settings
  • CSP bypass control
  • Protection against cookie stealing

🔧 Troubleshooting

Common Issues

  • SSL Certificate Errors : Automatically bypassed
  • Slow Page Load : Adjust timeout in browse_to() method
  • Element Not Found : Verify selectors carefully
  • Browser Resource Usage : Auto-cleanup after inactivity period

Logging

All significant events are logged with detailed information for easy debugging.

📋 Tool Parameters

browse_to(url: str, context: Optional[Any] = None)

  • url: Website to navigate to
  • context: Optional context object (currently unused)

extract_text_content(selector: Optional[str] = None, context: Optional[Any] = None)

  • selector: Optional CSS selector to extract specific content
  • context: Optional context object (currently unused)

click_element(selector: str, context: Optional[Any] = None)

  • selector: CSS selector of the element to click
  • context: Optional context object (currently unused)

get_page_screenshots(full_page: bool = False, selector: Optional[str] = None, context: Optional[Any] = None)

  • full_page: Capture entire page screenshot
  • selector: Optional element to screenshot
  • context: Optional context object (currently unused)

get_page_links(filter_pattern: Optional[str] = None, context: Optional[Any] = None)

  • filter_pattern: Optional text pattern to filter links
  • context: Optional context object (currently unused)

input_text(selector: str, text: str, context: Optional[Any] = None)

  • selector: CSS selector of input element
  • text: Text to input
  • context: Optional context object (currently unused)

create_new_tab(url: Optional[str] = None, context: Optional[Any] = None)

  • url: Optional URL to navigate to in the new tab
  • context: Optional context object (currently unused)

switch_tab(tab_id: str, context: Optional[Any] = None)

  • tab_id: ID of the tab to switch to
  • context: Optional context object (currently unused)

list_tabs(context: Optional[Any] = None)

  • context: Optional context object (currently unused)

close_tab(tab_id: Optional[str] = None, context: Optional[Any] = None)

  • tab_id: Optional ID of the tab to close (defaults to current tab)
  • context: Optional context object (currently unused)

refresh_page(context: Optional[Any] = None)

  • context: Optional context object (currently unused)

get_page_info(context: Optional[Any] = None)

  • context: Optional context object (currently unused)

scroll_page(direction: str = "down", amount: str = "page", context: Optional[Any] = None)

  • direction: Direction to scroll ('up', 'down', 'left', 'right')
  • amount: Amount to scroll ('page', 'half', or a number)
  • context: Optional context object (currently unused)

wait_for_navigation(timeout_ms: int = 10000, context: Optional[Any] = None)

  • timeout_ms: Maximum time to wait in milliseconds
  • context: Optional context object (currently unused)

execute_javascript(script: str, context: Optional[Any] = None)

  • script: JavaScript code to execute
  • context: Optional context object (currently unused)

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Development Setup

# Clone the repository
git clone https://github.com/random-robbie/mcp-web-browser.git

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`

# Install dependencies
pip install -e .[dev]

📄 License

MIT License

🔗 Related Projects

💬 Support

For issues and questions, please open an issue on GitHub.

Related MCP Servers & Clients