使用说明
Selenium MCP服务器
一种模型上下文协议(MCP)服务器,使用连接到无浏览器服务的Selenium WebDriver提供浏览器自动化功能。此服务器在没有本地浏览器的情况下运行,通过TCP连接到无浏览器,以实现可扩展的容器化部署。
特性
- 浏览器自动化:导航到URL,与元素交互,执行JavaScript
- 无浏览器集成:通过WebDriver协议连接到无浏览器服务
- 异步Python:使用FastMCP构建,用于高性能异步操作
- 集装箱准备就绪:基于Alpine的Docker镜像,没有本地浏览器
- 会话管理:根据MCP上下文自动处理会话
快速开始
先决条件
- Python 3.13+
- 无浏览器服务正在运行(本地或远程)
- UV包管理器(推荐)
安装
# Clone the repository
git clone <your-repo-url>
cd selenium-mcp-server
# Install with UV
uv sync
# Or with pip
pip install -e .
环境设置
设置无浏览器服务URL和可选身份验证令牌:
export BROWSERLESS_URL=http://localhost:3000 # Local browserless
export BROWSERLESS_URL=http://browserless:3000 # Kubernetes service
# Optional: Set authentication token if browserless requires it
export BROWSERLESS_TOKEN=your-bearer-token-here
运行服务器
# With UV
uv run selenium-mcp
# Or directly
python -m selenium_mcp.server
Claude桌面设置
添加到您的Claude Desktop配置中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"selenium": {
"command": "uv",
"args": ["run", "selenium-mcp"],
"env": {
"BROWSERLESS_URL": "http://localhost:3000",
"BROWSERLESS_TOKEN": "your-bearer-token-here"
}
}
}
}
可用工具
导航到URL
navigate_to_url({
"url": "https://example.com"
})
查找元素
find_element({
"selector": ".button-primary",
"by": "css" # css, xpath, id, name, class_name, tag_name, link_text, partial_link_text
})
单击元素
click_element({
"selector": "#submit-button",
"by": "id"
})
执行JavaScript
execute_javascript({
"script": "return document.title;"
})
屏幕截图
take_screenshot({})
获取页面信息
get_page_info({})
关闭浏览器
close_browser({})
Docker部署
塑造形象
docker build -t selenium-mcp-server .
使用Docker Compose运行
version: '3.8'
services:
browserless:
image: browserless/chrome:latest
ports:
- "3000:3000"
environment:
- CONNECTION_TIMEOUT=60000
- MAX_CONCURRENT_SESSIONS=10
selenium-mcp:
image: selenium-mcp-server:latest
environment:
- BROWSERLESS_URL=http://browserless:3000
- BROWSERLESS_TOKEN=${BROWSERLESS_TOKEN:-}
ports:
- "8000:8000"
depends_on:
- browserless
Kubernetes部署
apiVersion: apps/v1
kind: Deployment
metadata:
name: selenium-mcp
spec:
replicas: 2
selector:
matchLabels:
app: selenium-mcp
template:
metadata:
labels:
app: selenium-mcp
spec:
containers:
- name: selenium-mcp
image: selenium-mcp-server:latest
env:
- name: BROWSERLESS_URL
value: "http://browserless-service:3000"
- name: BROWSERLESS_TOKEN
valueFrom:
secretKeyRef:
name: browserless-secrets
key: token
ports:
- containerPort: 8000
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "256Mi"
cpu: "200m"
---
apiVersion: v1
kind: Service
metadata:
name: browserless-service
spec:
selector:
app: browserless
ports:
- port: 3000
targetPort: 3000
发展
虚拟环境
# Create virtual environment
uv venv .venv
# Activate on Unix/macOS
source .venv/bin/activate
# Activate on Windows
.venv\\Scripts\\activate
# Install dependencies
uv sync
测试
# Run tests
uv run pytest
# Start local browserless for testing
docker run -p 3000:3000 browserless/chrome:latest
# Test the server
BROWSERLESS_URL=http://localhost:3000 uv run selenium-mcp
装订和格式化
# Format code
uv run black src/
# Lint code
uv run ruff check src/
# Type checking
uv run mypy src/
GitHub CI/CD管道
该存储库包括一个GitHub Actions工作流,该工作流:
- 测试:启动无浏览器容器并运行测试
- 建筑:使用UV创建Docker映像
- 推动:部署到主分支上的容器注册表
看 .github/workflows/ci.yml 了解详情。
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
BROWSERLESS_URL |
无浏览器服务URL | 必填 |
BROWSERLESS_TOKEN |
用于无浏览器身份验证的可选承载令牌 | 空 |
PYTHONPATH |
Python导入路径 | /app/src |
PYTHONUNBUFFERED |
无缓冲Python输出 | 1 |
无浏览器配置
此MCP服务器需要无浏览器服务。推荐的无浏览器配置:
docker run -p 3000:3000 \
-e CONNECTION_TIMEOUT=60000 \
-e MAX_CONCURRENT_SESSIONS=10 \
-e DEFAULT_BLOCK_ADS=true \
browserless/chrome:latest
性能注意事项
- 会话管理:每个MCP上下文都有自己的浏览器会话
- 连接池:无浏览器处理多个并发会话
- 资源限制:在Kubernetes中设置适当的内存/cpu限制
- 超时:根据用例配置无浏览器超时
故障排除
常见问题
- 连接被拒绝:确保无浏览器正在运行且可访问
- 认证失败:检查是否
BROWSERLESS_TOKEN是必需的,并且设置正确 - 会话超时:增加无浏览器超时设置
- 未找到元素:在脚本中使用适当的等待策略
日志
通过设置环境变量启用调试日志记录:
export LOG_LEVEL=DEBUG
export BROWSERLESS_DEBUG=true
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
支持
有关问题和疑问,请打开GitHub问题或查看无浏览器文档。