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).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues