mcp-server-webdriver

mcp-server-webdriver

Enables AI agents to control a real web browser (Firefox) via Selenium WebDriver, supporting page navigation, interaction, and inspection through natural language.

Category
访问服务器

README

mcp-server-webdriver

mcp-server-webdriver

MCP Server that lets AI agents control a real web browser via Selenium WebDriver (Firefox + geckodriver).
Built with FastMCP.


Requirements

Dependency Version
Python ≥ 3.11
FastMCP ≥ 2.10
selenium ≥ 4.0
Firefox any recent
geckodriver ≥ 0.34

Installation

Recommended — gecko-driver .deb from VitexSoftware repository

echo "deb http://repo.vitexsoftware.com trixie main" \
  | sudo tee /etc/apt/sources.list.d/vitexsoftware.list
sudo apt update
sudo apt install gecko-driver python3-selenium python3-fastmcp

This installs gecko-driver 0.36.0 (and compatible Firefox) from repo.vitexsoftware.com.

Alternative — system package manager

# Debian/Ubuntu (official repos — may be older version):
sudo apt install firefox-geckodriver

# macOS:
brew install geckodriver

# Rust / cargo (build from source):
cargo install geckodriver

# Manual download from GitHub releases:
# https://github.com/mozilla/geckodriver/releases

Fallback — webdriver-manager (auto-download)

pip install fastmcp selenium webdriver-manager
# geckodriver will be downloaded automatically on first browser_open

geckodriver resolution order

The server resolves geckodriver in this priority order (first match wins):

# Source Configure via
1 GECKODRIVER_PATH env variable Absolute path to the binary
2 System PATH (default) apt install gecko-driver from repo.vitexsoftware.com
3 webdriver-manager auto-download Fallback; disable with GECKODRIVER_AUTO_INSTALL=false

Running

# stdio transport (Claude Desktop / Claude Code)
python server.py

# HTTP transport (remote access)
fastmcp run server.py --transport streamable-http --port 8000

# Development mode (auto-reload)
fastmcp dev server.py

Available Tools

Session & driver management

Tool Description
browser_open Open URL — starts Firefox+geckodriver if not running
browser_close Quit the browser session
browser_status Show session state, geckodriver source/version, env config
geckodriver_install Download geckodriver via webdriver-manager (fallback)

Page inspection

Tool Description
browser_screenshot Full-page PNG screenshot
browser_get_title Current page <title>
browser_get_url Current URL
browser_get_source Raw HTML source
browser_get_text Visible text (whole page or CSS selector)
browser_get_attribute Value of an HTML attribute on an element

Interaction

Tool Description
browser_click Click element (CSS selector)
browser_fill Type text into an input field
browser_select Select <option> in a <select> dropdown
browser_execute_js Run JavaScript and return the result

Navigation & frames

Tool Description
browser_wait Wait for an element to become visible
browser_back Navigate back
browser_forward Navigate forward
browser_refresh Reload the page
browser_switch_frame Switch into <iframe> or back to main document

Environment variables

Variable Default Description
GECKODRIVER_PATH (unset) Absolute path to geckodriver binary (highest priority)
GECKODRIVER_AUTO_INSTALL true Set to false to disable webdriver-manager fallback
FIREFOX_BINARY (unset) Path to a custom Firefox executable

Claude Desktop / Claude Code config

{
  "mcpServers": {
    "webdriver": {
      "command": "python3",
      "args": ["/path/to/server.py"]
    }
  }
}

With explicit geckodriver path:

{
  "mcpServers": {
    "webdriver": {
      "command": "python3",
      "args": ["/path/to/server.py"],
      "env": {
        "GECKODRIVER_PATH": "/usr/bin/geckodriver"
      }
    }
  }
}

Packaging plan for Debian

To build a python3-mcp-server-webdriver .deb package, the following dependency chain must be packaged first (all from PyPI → .deb via VitexSoftware build infrastructure):

Layer 0 (no new deps): python-dotenv, jsonref, pathable, python-multipart, httpx-sse, typing-inspection, uncalled-for, pyperclip, cronsim, burner-redis, python-json-logger, griffelib, taskgroup, joserfc, opentelemetry-api, openapi-pydantic

Layer 1: pydantic-settings, rich-rst, griffecli, py-key-value-aio

Layer 2: jsonschema-path, sse-starlette, cyclopts, griffe

Layer 3: mcp, pydocket

Layer 4: prefab-ui

Layer 5: fastmcp-slim

Layer 6: fastmcp

Layer 7: mcp-server-webdriver (depends on gecko-driver ✅ already in repo)


License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选