Skip to main content
Glama
pranavkakde

mcp-selenium-python

by pranavkakde
README.md
# MCP Selenium Server & Client

This project provides a **Model Context Protocol (MCP) server and client implementation for Selenium-based browser automation**. It allows LLMs or external tools to interact with a browser through a standardized protocol, supporting actions like navigation, input, and clicks.

---

## šŸš€ Features
- **MCP Server**: Exposes Selenium browser automation as tools.
- **MCP Client**: Sends tool calls (e.g., navigate, click, input) and receives structured results.
- **Extensible Actions**: Modular design for actions (`navigate`, `click`, `input`). More actions to be added.
- **Driver Management**: Abstraction for Selenium sessions and locator strategies.
- **Tool Facade**: Unified interface for tools (`mcp_tools`, `webtools`).
- **Logging & Context**: Centralized log writer and execution context.

---

## šŸ“‚ Project Structure
```
.
ā”œā”€ā”€ client/
│   ā”œā”€ā”€ client.py              # MCP client implementation
│   ā”œā”€ā”€ llm_client.py          # Example LLM client integration (currently set to use Gemini)
│
ā”œā”€ā”€ server/
│   ā”œā”€ā”€ mcp_selenium_server.py # MCP server entry point
│   ā”œā”€ā”€ custom_context.py      # Execution context handling
│   ā”œā”€ā”€ log_writer.py          # Logging utilities
│   ā”œā”€ā”€ actions/               # Browser actions (navigate, click, input)
│   ā”œā”€ā”€ engine/                # Driver/session/locator management
│   └── tools/                 # Tool definitions (MCP tools, web tools)
│
ā”œā”€ā”€ .env                       # Environment variables
ā”œā”€ā”€ pyproject.toml             # Project dependencies & configuration
ā”œā”€ā”€ uv.lock                    # Dependency lock file
ā”œā”€ā”€ LICENSE                    # License file
└── README.md                  # (this file)
```

---

## āš™ļø Installation

1. Clone the repo:
   ```bash
   git clone <repo-url>
   cd mcp-selenium
   ```

2. Install dependencies (using [uv](https://github.com/astral-sh/uv) or poetry):
   ```bash
   uv sync
   ```

3. Set environment variables in `.env` if needed (e.g., LLM API Key).

---

## ā–¶ļø Usage

### Start the MCP Server
```bash
python server/mcp_selenium_server.py
```

### Run the Client
```bash
python client/client.py
```

### Example JSON-RPC Request
```json
{
  "action": "launch_page",
  "args": {
    "url": "https://google.com",
    "browser": "edge",
    "headless": false
  }
}
```

### Example Actions
- `launch_page` → Open a URL
- `click` → Click an element
- `enter_text` → Type text into a field
At present only these actions are added but can be extended for more actions.
---

## šŸ›  Development
- Python 3.10+
- Selenium WebDriver
- MCP protocol integration

Lint & format before committing:
```bash
uv run black .
uv run flake8 .
```

---

## šŸ“œ License
This project is licensed under the terms of the [MIT License](LICENSE).

Maintenance

ActivityInactive
ResponsivenessNo issues