Skip to main content
Glama
Jenish3601

SmartBrowserMCP

by Jenish3601
README.md
# SmartBrowserMCP

A Model Context Protocol (MCP) server that provides web automation capabilities through browser control tools.

## Overview

SmartBrowserMCP is a TypeScript/Node.js server that implements the Model Context Protocol to expose browser automation functionality. It uses Playwright for browser management and provides tools for web testing, monitoring, and automation tasks.

## Features

- **Browser Automation**: Control web browsers programmatically
- **Element Interaction**: Click elements by CSS selector, text content, or link text
- **Content Extraction**: Extract text and HTML content from pages or specific elements
- **Page Navigation**: Scroll pages and navigate web content
- **Console Monitoring**: Check browser console logs and errors
- **Network Monitoring**: Monitor network requests and responses
- **Screenshot Capture**: Take screenshots of web pages
- **Task Execution**: Execute custom automation tasks
- **Report Generation**: Generate detailed reports of browser sessions
- **Session Management**: Clear and manage browser sessions

## Installation

```bash
npm install
```

## Development

### Prerequisites

- Node.js (v18 or higher)
- npm or yarn

### Setup

1. Clone the repository
2. Install dependencies:
   ```bash
   npm install
   ```
3. Create a `.env` file (optional):
   ```env
   MCP_SERVER_PORT=3000
   MCP_SERVER_HOST=0.0.0.0
   MCP_TRANSPORT=stdio
   BROWSER_HEADLESS=true
   BROWSER_SLOW_MO=0
   BROWSER_TIMEOUT=30000
   LOG_LEVEL=info
   ```

### Building

```bash
npm run build
```

### Running

**Development mode:**
```bash
npm run dev
```

**Production mode:**
```bash
npm run build
npm start
```

### Transport Modes

The server supports two transport modes controlled by the `MCP_TRANSPORT` environment variable:

#### STDIO Mode (Default)
For MCP clients like Claude Desktop, Cursor, and other MCP-compatible applications.

**Run in STDIO mode:**
```bash
# Default mode (no env var needed)
npm run build
npm start

# Explicit STDIO mode
MCP_TRANSPORT=stdio
```

#### HTTP Mode
For direct API usage and web-based integration.

**Run in HTTP mode:**
```bash
MCP_TRANSPORT=http
```

**Using npm link (global command):**
```bash
npm link
smartbrowser-mcp
```

**MCP Client Configuration:**

For Claude Desktop, add to your MCP config:
```json
{
  "mcpServers": {
    "smartbrowser": {
      "command": "npx",
      "args": [
        "smartbrowsermcp@latest"
      ],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "BROWSER_HEADLESS": "true"
      }
    }
  }
}
```

**Visible Browser Mode:**
To see the browser automation in real-time, set `BROWSER_HEADLESS` to `false`:
```json
{
  "mcpServers": {
    "smartbrowser": {
      "command": "npx",
      "args": [
        "smartbrowsermcp@latest"
      ],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "BROWSER_HEADLESS": "false"
      }
    }
  }
}
```

Or using local path:
```json
{
  "mcpServers": {
    "smartbrowser": {
      "command": "node",
      "args": ["/var/www/html/LMStudio/WebPilotMCP/dist/index.js"],
      "env": {
        "MCP_TRANSPORT": "stdio",
        "BROWSER_HEADLESS": "false"
      }
    }
  }
}
```

**Mode Differences:**
- **HTTP Mode**: For direct API usage and testing. Server runs on configured port (default: 3000)
- **STDIO Mode**: For MCP clients. Communicates via stdin/stdout using JSON-RPC protocol
- **Headless Mode** (default): Browser runs in background, not visible to user
- **Visible Mode** (`BROWSER_HEADLESS=false`): Browser window opens, users can watch automation

## Available Tools

The server provides the following MCP tools:

- `executeTask`: Execute custom automation tasks
- `checkConsole`: Monitor browser console for logs and errors
- `checkNetwork`: Monitor network activity
- `takeScreenshot`: Capture screenshots of web pages
- `generateReport`: Generate detailed session reports
- `clearSession`: Clear browser session data
- `click_element`: Click elements by CSS selector, text content, or link text
- `get_page_content`: Extract text and HTML content from pages or specific elements
- `scrollPage`: Scroll pages up/down or to specific positions

## API Endpoints

- `GET /api/mcp`: MCP server endpoint (SSE transport)
- `POST /api/mcp`: MCP message handling endpoint
- `GET /`: Server information endpoint
- `GET /health`: Health check endpoint

## Configuration

The server can be configured via environment variables:

### Server Configuration
- `MCP_SERVER_PORT`: Server port (default: 3000)
- `MCP_SERVER_HOST`: Server host (default: 0.0.0.0)
- `MCP_TRANSPORT`: Transport mode - `stdio` or `http` (default: stdio)

### Browser Configuration
- `BROWSER_HEADLESS`: Run browser in headless mode (default: true)
- `BROWSER_SLOW_MO`: Slow down operations by specified milliseconds (default: 0)
- `BROWSER_TIMEOUT`: Browser operation timeout in milliseconds (default: 30000)

### Logging Configuration
- `LOG_LEVEL`: Logging level (default: info)

### Advanced Configuration
- `PLAYWRIGHT_BROWSERS_PATH`: Custom path to Playwright browsers

## Project Structure

```
src/
├── config/
│   └── server.ts          # Server configuration
├── services/
│   ├── browserManager.ts  # Browser instance management
│   └── inputSanitizer.ts  # Input sanitization utilities
├── tools/
│   ├── checkConsole.ts    # Console monitoring tool
│   ├── checkNetwork.ts    # Network monitoring tool
│   ├── clearSession.ts    # Session management tool
│   ├── clickElement.ts    # Element interaction tool
│   ├── executeTask.ts     # Custom task execution
│   ├── generateReport.ts  # Report generation tool
│   ├── getPageContent.ts  # Content extraction tool
│   ├── scrollPage.ts      # Page scrolling tool
│   └── takeScreenshot.ts # Screenshot capture tool
├── types/
│   ├── index.ts           # Type definitions
│   └── schemas.ts         # Zod schemas for validation
└── index.ts               # Main server entry point
```

## Dependencies

- **@modelcontextprotocol/sdk**: MCP SDK for server implementation
- **@modelcontextprotocol/server**: MCP server utilities
- **playwright**: Browser automation
- **express**: Web server framework
- **zod**: Schema validation
- **dotenv**: Environment variable management
- **sanitize-html**: HTML sanitization for security

## License

ISC

## Contributing

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request

## Support

For issues and questions, please use the project's issue tracker.

TDQS

B3.4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct browser function: console messages, network requests, session cleanup, task execution, report generation, page content extraction, and screenshots. No overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (check_console, clear_session, execute_task, etc.). No mixing of styles.

Tool Count5/5

7 tools is well-scoped for a browser automation server. Each tool provides a distinct capability without redundancy or excess.

Completeness4/5

Covers core browser automation needs: monitoring, content extraction, screenshots, session management, and reporting. Minor gaps like explicit navigation controls, but execute_task likely handles them via natural language.

Maintenance

ActivityInactive
ResponsivenessNo issues