---
slug: "browser-browser-use-mcp-server-2"
source_type: "readme"
source_url: "https://cdn.jsdelivr.net/gh/samihalawa/browser-automation-server@main/README.md"
repo: "https://github.com/samihalawa/browser-automation-server"
source_file: "README.md"
branch: "main"
---
# Browser Automation MCP Server

A Model Context Protocol (MCP) server that provides browser automation capabilities for Claude and other MCP-compatible AI assistants.

## Features

- **Web Automation**: Control web browsers programmatically
- **Screenshot Capture**: Take screenshots of web pages
- **Element Interaction**: Click, type, and interact with web elements
- **Navigation**: Navigate between pages and manage browser state
- **Form Filling**: Automate form filling and submission
- **Data Extraction**: Extract data from web pages

## Installation

```bash
# Clone the repository
git clone https://github.com/samihalawa/browser-automation-server.git
cd browser-automation-server

# Install dependencies
npm install

# Build the server
npm run build
```

## Usage

### Starting the Server

```bash
npm start
```

### Configuration

Add the server to your MCP configuration:

```json
{
  "servers": {
    "browser-automation": {
      "command": "/path/to/node",
      "args": ["/path/to/browser-automation-server/build/index.js"],
      "enabled": true,
      "port": 3008,
      "environment": {
        "NODE_PATH": "/path/to/node_modules",
        "PATH": "/usr/local/bin:/usr/bin:/bin"
      }
    }
  }
}
```

### Available Tools

#### navigate

Navigate to a URL.

Parameters:
- `url` (string, required): URL to navigate to
- `waitUntil` (string, optional): Navigation wait condition. Options: 'load', 'domcontentloaded', 'networkidle'. Default: 'load'

#### screenshot

Take a screenshot of the current page.

Parameters:
- `fullPage` (boolean, optional): Whether to capture full page or just viewport. Default: false
- `path` (string, optional): Path to save the screenshot to. If not provided, returns base64 encoded image

#### click

Click on an element.

Parameters:
- `selector` (string, required): CSS selector of the element to click
- `waitForSelector` (boolean, optional): Whether to wait for the selector to appear. Default: true

#### type

Type text into an input field.

Parameters:
- `selector` (string, required): CSS selector of the input element
- `text` (string, required): Text to type
- `delay` (number, optional): Delay between keystrokes in milliseconds. Default: 0

#### extract

Extract data from the page.

Parameters:
- `selector` (string, required): CSS selector of the elements to extract
- `attribute` (string, optional): Attribute to extract. If not provided, extracts text content

#### evaluate

Evaluate JavaScript in the browser context.

Parameters:
- `script` (string, required): JavaScript code to evaluate
- `args` (array, optional): Arguments to pass to the script

## Example Usage

1. Navigate to a website:
   ```
   navigate(url: "https://example.com")
   ```

2. Take a screenshot:
   ```
   screenshot(fullPage: true)
   ```

3. Click a button:
   ```
   click(selector: "#submit-button")
   ```

4. Fill a form:
   ```
   type(selector: "#username", text: "user123")
   type(selector: "#password", text: "password123")
   click(selector: "#login-button")
   ```

5. Extract data:
   ```
   extract(selector: ".product-title", attribute: "innerText")
   ```

## Requirements

- Node.js 14+
- Playwright for browser automation

## License

MIT
