Skip to main content
Glama
ahelme

Browser Tools for Claude Code

by ahelme
README.md
# Browser Tools for Claude Code

## 🚀 **AgileAI Browser Tools - Revolutionary AI Collaborative Development**

The world's first browser tools project built using **AgileAI** - a revolutionary Agile methodology for human-AI collaborative development!

### **🎯 What is AgileAI?**
AgileAI combines XML-driven architecture, specialized AI agents, break-point methodology, and complete user control to create transparent, quality-assured collaborative development.

### **🛠️ Project Overview**
A powerful set of 9 browser automation tools built collaboratively with specialized AI agents:
- Complete re-write using AgileAI methodology
- 100% June 2025 MCP specification compliant
- Chrome extension with modern Manifest V3 architecture

### **🚀 Quick Start with AgileAI**
Ready to experience revolutionary AI collaboration? See **[AgileAI_KickStart.md](product-management/product-management_docs/AgileAI_KickStart.md)** for 5-minute setup!

## PROJECT STATUS: AgileAI Ready!
- **REVOLUTIONARY**: World's first Agile methodology for human-AI collaborative development
- **8 Claude Identity Agents**: Ready for interactive collaboration (GitHub Issues #40-47)
- **Next Priority**: Agent B - Framework Specialist for Chrome extension architecture
- **Implementation**: 100% June 2025 MCP-compliant with AgileAI break-point methodology
- **MCP Method**: `mcp-server/server.mjs` + `mcp-server/http-bridge.mjs` (port 3024)

### 🦁 AGILEAI FOUNDATION INFRASTRUCTURE COMPLETE ✅
**World's first complete AI collaborative development platform!**
- 🦁 **AgileAI Methodology**: Revolutionary Agile methodology for human-AI collaborative development
- ✅ **Foundation Merged**: Complete infrastructure with contracts, base classes, registry system
- 🏗️ **Core Architecture**: TypeScript interfaces, quality gates, monitoring system
- 🤖 **Agent Universes**: 9 agents in 4 logical batches for systematic development
- 📋 **Contract-Driven**: OpenAPI specifications and comprehensive quality requirements
- 🎯 **Complete Documentation**: [AgileAI KickStart Guide](product-management/product-management_docs/AgileAI_KickStart.md) | [Agent Specifications](product-management/product-management_docs/)

### 🏗️ **AGILEAI FOUNDATION & BATCH SYSTEM**
**Current Status - Foundation Complete, Ready for Batch 2:**
- **✅ Batch 1**: Agent A (Foundation) - COMPLETED & MERGED
  - Contracts: OpenAPI 3.0 specification, quality gates
  - Core: Base classes, interfaces, registry system
  - Infrastructure: Service worker, monitoring, MCP handler
- **🎯 Batch 2**: Agent B (Framework) - NEXT TO DEPLOY
  - UI Framework & Component System
- **🎯 Batch 3**: Agents C,D,E (Core Tools) - Working in OLD extension, NEW implementation needed
  - browser_navigate, browser_screenshot, browser_click, browser_type, browser_wait
- **🎯 Batch 4**: Agents F,G,H,I (Advanced Tools) - Broken in OLD extension, NEW implementation needed
  - browser_evaluate, browser_audit, browser_get_console, browser_get_content

### ⚡ **AGILEAI BRANCH STRATEGY**
- **`main`**: Default stable branch
- **Agent branches**: Each agent works in dedicated development reality
- **Foundation**: Infrastructure merged and operational

### 🔄 IMPLEMENTATION STATUS (All tools need NEW implementation):

**Working in OLD AgentDesk Chrome Ext. Need to be Implemnted in OUR new Chrome Ext:**
  1. browser_navigate - Successfully navigates to URLs (NEW implementation needed)
  2. browser_screenshot - Captures screenshots perfectly (NEW implementation needed)
  3. browser_click - Clicks elements successfully (NEW implementation needed)
  4. browser_type - Types text into input fields (NEW implementation needed)
  5. browser_wait - Waits for elements to appear (NEW implementation needed)
  
**Broken in OLD AgentDesk Chrome Ext. & Need to be Implemnted in OUR new Chrome Ext:**
  6. browser_evaluate - Timeout error when executing JavaScript (NEW implementation needed)
  7. browser_get_content - Request timeout (NEW implementation needed)
  8. browser_audit - Returns HTML instead of JSON (NEW implementation needed)
  9. browser_get_console - Request timeout (NEW implementation needed)

**🎯 Our Goal**: Build ALL 9 tools from scratch using our foundation infrastructure (.mjs modules)

## 🛡️ Code Quality Standards
**Enterprise-grade standards for all AgileAI agents:**
- See gh issues 30-34

### Features

#### **Runs Headless**:
  - Facilitates multi-tasking: user can operate computer without interfering with autonomous browser-testing by AI agent
  - Uses fewer resources
  - Faster navigation

#### **Console Monitoring**:
  - Accurate pick up of errors by AI agents 
  - Agents better at checking results of changes (user does not find app "broken" as often, while agent declares 100% fixed)
  - AI agents faster at reading console errors than screenshots 
  
#### **Take Screenshots for UI Analysis**: 
  - Autonomous AI agent screenshots as per Puppeteer, but faster
  - One-click screenshots through Chrome extension
  
#### **Lighthouse Audits**:
   - Accessibility
   - SEO
   - Performance 

#### **UI-based Configuration via AgentDesk's 'Browser Tools' Chrome extension**:
  - Leverage AgentDesk's original Chrome Extension "Browser Tools"
    - Set Port Number or let Extension scan ports
    - Update screenshots directory 
    - Configure log/query/string length and wipe logs
    - Include Request/Response headers
    - Toggle Auto-Paste to Cursor

### **Why Did We Re-Write Browser Tools MCP Server?** 

We built our own browser tools MCP server to address critical protocol violations in the original npm package maintained by agentdeskai, which used the older > June 2025 MCP specification and no longer functioned.


### **Our Solution**
- 100% 2025-06-18 MCP protocol compliant
- Clean stdio implementation
- Proper error handling

## QuickStart Guide

1. **Exit Claude Code**
(or do not start it yet)

```bash
/exit
```
2. **Configure Claude Code MCP tools in .mcp.json**: e.g. inside project directory `.mcp.json`

  ( **TOGGLE DEBUG MODE either ON: "1" or OFF: "0"** )
   
```
{
  "mcpServers": {
    "mcp-claude-code-browser-tools": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/Users/lennox/development/browser-tools-setup/mcp-server/server.mjs"
      ],
      "env": {
        "BROWSER_TOOLS_PORT": "3024",
        "MCP_DEBUG": "1"
      }
    }
  }
}
```

3. **Install and Prepare Claude Code Browser Tools (first time only)**

```bash
# Install the MCP server and scripts
==TO-BE-DETERMINED==

# First time only - install dependencies
npm install

# Make script executable (
chmod +x mcp-server/start.sh
```

4. **Start the HTTP Bridge Server (port 3024) in NEW Terminal Tab/Window**
starts on **Port 3024

```bash
# Start MCP HTTP bridge (for Claude Code) - PREFERRED METHOD
./mcp-server/start.sh

# CRITICAL - Working Directory Matters:
# ✅ Use script: ./mcp-server/start.sh (handles working directory correctly)
# ✅ Or direct: node mcp-server/http-bridge.mjs (from project root)
# ❌ Never: cd mcp-server && node http-bridge.mjs (wrong working directory)
```

5. **Download/install Browser Tools Chrome extension**
from https://github.com/ahelme/mcp-claude-code-browser-tools/tree/main/chrome-extension

6. **Activate Chrome Extension**: 
Open Developer Tools (F12) & select Browser Tools tab 

**NOTE: Browser Tools tab MUST BE ACTIVE**


7. **Re/Start Claude Code in FIRST terminal window/tab**: `$ claude`

8. **Configure Browser Tools Chrome Extension Port to 3024** 
Set via UI form field "Server Connection Settings > Server Port to **3024**"

This will connect extension to Claude Code Browser Tools MCP Server (via http bridge).

## 📚 API Documentation

**Complete Protocol Documentation** is available for developers and AI agents:

```bash
# Start comprehensive documentation server
./chrome-extension/start-docs.sh
```

**Available Endpoints:**
- 📚 **Documentation Portal**: http://localhost:3020/docs - Combined REST & WebSocket docs
- 🔗 **REST API docs**: http://localhost:3020/rest-docs - OpenAPI/Swagger UI
- 🔌 **WebSocket docs**: http://localhost:3020/ws-docs - AsyncAPI protocol docs
- 📄 **OpenAPI spec**: http://localhost:3020/openapi.yaml - REST API contract
- 📡 **AsyncAPI spec**: http://localhost:3020/asyncapi.yaml - WebSocket protocol contract
- 🤖 **AI-discoverable**: http://localhost:3020/health - Complete protocol metadata
- 🔍 **JSON formats**: http://localhost:3020/openapi.json | http://localhost:3020/asyncapi.json

**Features:**
- ✅ **Dual Protocol Support** - REST (OpenAPI 3.0.3) + WebSocket (AsyncAPI 3.0.0)
- ✅ **Interactive testing** - test REST API directly from browser
- ✅ **Protocol visualization** - AsyncAPI Studio integration for WebSocket protocol
- ✅ **AI-agent friendly** - auto-discoverable endpoints and standard formats
- ✅ **Contract-driven** - single source of truth prevents documentation drift
- ✅ **Always accurate** - reflects actual implementation

**Port Layout:**
- **3020** - API Documentation Server
- **3024** - MCP HTTP Bridge (main functionality)
- **3025+** - Multi-project instances

## Testing and Debugging 

Check if working:
```bash
# See configured server
cat .claude/mcp.json | grep browser-tools

# Test MCP HTTP bridge (port 3024)
curl http://localhost:3024/health

# Debug MCP server
MCP_DEBUG=1 node mcp-server/server.mjs
```

### **Configure MCP Server to Debug Mode**: 
Set `MCP_DEBUG=1` in .mcp.json (see above).

## Alternative Direct HTTP Method (backup option if MCP server fails)
Option to run direct http connection via **Port 3026**

```bash

# Starts the direct MCP HTTP bridge on port 3026
./mcp-server/mcp-server/start-direct-browser-tools.sh

# Test Direct HTTP bridge (port 3026)
curl http://localhost:3026/health

```

## Architecture

```
Main Method (MCP): Claude Code <--[stdio]--> MCP Server <--[HTTP:3024]--> MCP Bridge <--[WebSocket]--> Chrome Extension
Backup Method (Direct): External Tool <--[HTTP:3026]--> Direct Bridge <--[WebSocket]--> Chrome Extension
```
### Chrome Extension
- Monitors XHR requests/responses and console logs
- Tracks selected DOM elements
- Sends all logs and current element to the BrowserTools Connector
- Connects to Websocket server to capture/send screenshots
- Allows user to configure token/truncation limits + screenshot folder path

### Node Server HTTP Bridge
- Acts as middleware between the Chrome extension and MCP server
- Receives logs and currently selected element from Chrome extension
- Processes requests from MCP server to capture logs, screenshot or current element
- Sends Websocket command to the Chrome extension for capturing a screenshot
- Intelligently truncates strings and # of duplicate objects in logs to avoid token limits
- Removes cookies and sensitive headers to avoid sending to LLMs in MCP clients

### MCP Server
- Implements the Model Context Protocol
- Provides standardized tools for AI clients
- Compatible with various MCP clients (Cursor, Cline, Zed, Claude Desktop, etc.)

**See [mcp-server/mcp-server_docs/CODE-ARCHITECTURE.md](mcp-server/mcp-server_docs/CODE-ARCHITECTURE.md) for more details.**

**IMPORTANT**: Port 3024 is reserved for MCP server method.

## 🚀 Multi-Project Usage

**Run browser tools across multiple projects simultaneously without port conflicts!**

The MCP server uses environment variables to allow custom port configuration, making it easy to run multiple instances.

### Method 1: Per-Project .mcp.json Configuration

Each project can specify its own port in `.mcp.json`:

```json
{
  "mcpServers": {
    "mcp-claude-code-browser-tools": {
      "type": "stdio",
      "command": "node",
      "args": ["path/to/mcp-server/server.mjs"],
      "env": {
        "BROWSER_TOOLS_PORT": "3025",  // Custom port for this project
        "MCP_DEBUG": "1"
      }
    }
  }
}
```

### Method 2: Environment Variable Override

Start with custom ports using environment variables:

```bash
# Project A (default port)
cd /path/to/project-a
./mcp-server/start.sh
# → Runs on port 3024

# Project B (custom port)
cd /path/to/project-b
BROWSER_TOOLS_PORT=3025 ./mcp-server/start.sh
# → Runs on port 3025

# Project C (another custom port)
cd /path/to/project-c
BROWSER_TOOLS_PORT=3026 ./mcp-server/start.sh
# → Runs on port 3026
```

### Chrome Extension Setup for Multiple Projects

1. **Install Browser Tools extension** once from https://browsertools.agentdesk.ai/
2. **Switch between projects** by changing the port in extension settings:
   - Project A: Set port to `3024`
   - Project B: Set port to `3025`
   - Project C: Set port to `3026`
3. **Or use multiple Chrome profiles** - each with different port settings

### Quick Multi-Project Example

```bash
# Terminal 1 - Project A (React app)
cd ~/projects/my-react-app
./mcp-server/start.sh  # port 3024
claude  # Start Claude Code

# Terminal 2 - Project B (Vue app)
cd ~/projects/my-vue-app
BROWSER_TOOLS_PORT=3025 ./mcp-server/start.sh  # port 3025
claude  # Start Claude Code

# Terminal 3 - Project C (Angular app)
cd ~/projects/my-angular-app
BROWSER_TOOLS_PORT=3026 ./mcp-server/start.sh  # port 3026
claude  # Start Claude Code
```

Now you can work on multiple projects simultaneously! 🎉

### Port Range Recommendations

- **3024**: Default (Project A)
- **3025-3030**: Additional projects
- **3031+**: Available for other tools

## Tools and Examples 

### Individual Tools (NOT ALL WORKING YET)

All tools are prefixed with `mcp__browser-tools__`:

- `navigate` - Go to URL
- `screenshot` - Capture page/element
- `click` - Click elements
- `type` - Enter text
- `evaluate` - Run JavaScript
- `get_content` - Get HTML
- `audit` - Run Lighthouse
- `wait` - Wait for elements
- `get_console` - Get console logs

### Example Usage

```javascript
// Navigate to a page
mcp__browser-tools__navigate({ url: "https://example.com" })

// Take screenshot
mcp__browser-tools__screenshot({ fullPage: true })

// Click button
mcp__browser-tools__click({ selector: "#submit-button" })
```

## Tools Guide
Guide to usage of available tools: TOOLS_GUIDE.md

## Important Files

### MCP Method (Port 3024)
- `mcp-server/server.mjs` - MCP server
- `mcp-server/http-bridge.mjs` - MCP HTTP bridge
- `mcp-server/start.sh` - Start script for MCP

### BACKUP: Direct Method (Port 3026)
- `mcp-server/mcp-server/direct-http-bridge.js` - Direct HTTP bridge
- `mcp-server/mcp-server/start-direct-browser-tools.sh` - Start script for direct

### Configuration, Files & Directories
- `~/.claude/mcp.json` - ==(DANGEROUS TO MODIFY)== User-level MCP configuration (Claude Code) 
- `.mcp.json` - Project-level MCP configuration (local config and team collaboration)
- `.screenshots/` - Screenshot outputs

## 🔧 Environment Variables

The MCP server supports several environment variables for customization:

### Core Configuration

| Variable | Default | Description | Example |
|----------|---------|-------------|---------|
| `BROWSER_TOOLS_PORT` | `3024` | HTTP bridge port for MCP server | `3025` |
| `MCP_HTTP_BRIDGE_PORT` | `3024` | Alternative name for same setting | `3026` |
| `MCP_DEBUG` | `0` | Enable detailed debug logging | `1` |


### Port Conflict Issues

**Problem**: "Error: listen EADDRINUSE: address already in use :::3024"

**Solutions:**

```bash
# 1. Check what's using the port
lsof -i :3024

# 2. Kill existing process
pkill -f "mcp-http-bridge"

# 3. Or use a different port
BROWSER_TOOLS_PORT=3025 ./mcp-server/start.sh
```

### Multi-Project Port Conflicts

**Problem**: Running multiple projects simultaneously

**Solution**: Use different ports per project

```bash
# Check active browser tools processes
ps aux | grep mcp-http-bridge

# See which ports are in use
lsof -i :3024-3030

# Start each project with unique port
cd project-a && BROWSER_TOOLS_PORT=3024 ./mcp-server/start.sh
cd project-b && BROWSER_TOOLS_PORT=3025 ./mcp-server/start.sh
```

## Configuration

### MCP Server Settings

To modify MCP server configurations:

1. Edit `.mcp.json` in codebase root
2. Restart Claude Code to apply changes
3. Test server connectivity with debug mode: `MCP_DEBUG=1`

```json
{
  "mcpServers": {
    "claude-code-browser-tools": {
      "type": "stdio",
      "command": "node",
      "args": [
        "mcp-server/claude-code-browser-tools.js"
      ],
      "env": {
        "BROWSER_TOOLS_PORT": "3024",
        "MCP_DEBUG": "1"
      }
    }
  }
}
```

### Configuration Tips & Guidelines

1. **File Location**: Place `.mcp.json` in codebase root directory configured using latest specification
2. **Server Types**: All servers use `"type": "stdio"` for JSON-RPC communication
3. **Environment Variables**: Configure ports and debug modes in the `env` section
4. **Path Requirements**: Use absolute paths for local scripts (e.g., our browser-tools-mcp-2025.js)
5. **NPX Dependencies**: External packages can be run with `npx -y` for auto-installation


## Compatibility

- Works with Claude Code 
- May work with other MCP-compatible clients e.g. Cursor IDE integration

## Documentation

- [TOOLS-GUIDE.md](mcp-server/mcp-server_docs/TOOLS-GUIDE.md) - Guide to use of available tools
- [CODE-ARCHITECTURE.md](mcp-server/mcp-server_docs/CODE-ARCHITECTURE.md) - Full technical details

## Important Notes

- MCP HTTP bridge uses port 3024 (for Claude Code)
- Direct HTTP bridge uses port 3026 (for API access)
- Chrome extension required for browser control
- MCP servers that are configured in .mcp.json auto-start with Claude Code
- Debug output goes to stderr only (MCP_DEBUG=1)

## Resources

- [Original Chrome Extension by AgentDesk](https://browsertools.agentdesk.ai/)
- [Original Browser Tools MCP by AgentDesk](https://github.com/AgentDeskAI/browser-tools-mcp)
- [MCP Specification](https://modelcontextprotocol.io/specification/2025-06-18)

Maintenance

ActivityInactive
ResponsivenessNo issues