Skip to main content
Glama
ssql2014

web-automation-mcp

by ssql2014
README.md
# Web Automation MCP Server

An MCP (Model Context Protocol) server that enables Claude Code CLI to interact with Cloud Desktop, ChatGPT, and Gemini web interfaces through browser automation.

## Features

- **Multi-Service Support**: Interact with Cloud Desktop, ChatGPT, and Gemini
- **Browser Automation**: Uses Playwright for reliable web automation
- **Session Persistence**: Maintains browser sessions across requests
- **Response Extraction**: Automatically extracts and returns responses
- **Conversation Management**: Clear conversation history when needed

## Installation

1. Clone the repository:
```bash
cd ~/web-automation-mcp
```

2. Install dependencies:
```bash
npm install
```

3. Build the project:
```bash
npm run build
```

## Configuration

Add the server to your Claude MCP settings (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "web-automation": {
      "command": "node",
      "args": ["/Users/YOUR_USERNAME/web-automation-mcp/dist/index.js"]
    }
  }
}
```

## Usage

### Natural Language Support

The MCP server now supports natural language queries through the `web_automation_query` tool:

```
# Ask ChatGPT a question
"Ask ChatGPT: What is quantum computing?"

# Send to Gemini
"Send to Gemini: Explain machine learning"

# Clear conversation
"Clear ChatGPT conversation"

# Get latest response
"Get the latest response from Gemini"

# Browser control
"Initialize browser in visible mode"
"Close browser"
```

### Available Tools

1. **web_automation_query** - Process natural language queries
   - `query`: string - Natural language description of what you want to do

2. **initialize_browser** - Initialize the browser
   - `headless`: boolean (default: false) - Run in headless mode

3. **send_to_service** - Send input to a service and get response
   - `service`: "clouddesktop" | "chatgpt" | "gemini"
   - `content`: string - The message to send

4. **get_latest_response** - Get the latest response from a service
   - `service`: "clouddesktop" | "chatgpt" | "gemini"

5. **clear_conversation** - Clear conversation history
   - `service`: "clouddesktop" | "chatgpt" | "gemini"

6. **cleanup_browser** - Close all browser windows

### Example Usage in Claude Code

Natural language examples:
```
# Ask ChatGPT
Use web_automation_query with query: "Ask ChatGPT about the history of computing"

# Send to Gemini
Use web_automation_query with query: "Send to Gemini: write a Python function to sort a list"

# Clear conversation
Use web_automation_query with query: "Clear ChatGPT conversation"
```

Direct tool usage:
```
# Initialize browser (visible mode)
Use the initialize_browser tool with headless: false

# Send a message to ChatGPT
Use the send_to_service tool with service: "chatgpt" and content: "What is the capital of France?"

# Clean up when done
Use the cleanup_browser tool
```

## Important Notes

1. **Manual Login Required**: You must manually log in to each service in the browser window the first time
2. **Service URLs**: Update the URLs in the handler files if they change:
   - `src/handlers/cloudDesktop.ts` - Update Cloud Desktop URL
   - `src/handlers/chatgpt.ts` - ChatGPT URL
   - `src/handlers/gemini.ts` - Gemini URL

3. **Selectors**: The CSS selectors in handlers may need updates if the services change their UI

## Development

To run in development mode:
```bash
npm run dev
```

To modify service handlers, edit the files in `src/handlers/`.

## Troubleshooting

- **Login Required Error**: Open the browser in non-headless mode and log in manually
- **Selector Not Found**: The service UI may have changed - update selectors in the handler
- **Timeout Errors**: Increase timeout values in the handlers for slower connections

## License

MIT

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation2/5

web_automation_query overlaps heavily with send_to_service and also covers clearing conversations, making it unclear when to use which tool. Other tools are distinct, but the primary query tool's broad scope creates ambiguity.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (send_to_service, get_latest_response, clear_conversation, initialize_browser, cleanup_browser), but web_automation_query breaks the pattern as a noun_phrase, causing a minor inconsistency.

Tool Count5/5

With 6 tools, the set is well-scoped for browser automation covering initialization, querying, response retrieval, conversation clearing, and cleanup. Each tool has a clear place in the workflow, and the count is appropriate.

Completeness4/5

The tool set covers the core lifecycle: initialize, send query, get response, clear conversation, and cleanup. Minor gaps exist (e.g., listing available services or fetching full conversation history), but they are not critical for the primary purpose.