使用说明
Selenium MCP服务器
一个可扩展、可扩展的开源服务器,用于管理Selenium浏览器自动化会话,灵感来自Playwright MCP。专为GenAI驱动的web自动化而设计,支持本地和远程执行。
特性
- 用于浏览器会话管理和自动化命令的REST API
- 支持Chrome、Firefox、Edge(可扩展)
- 本地和远程(Selenium Grid)执行
- 可扩展的命令集和插件架构
- OpenAPI文档
- Docker就绪
建筑
- 快速 API:API服务器
- 会话管理器:处理多个浏览器会话
- 浏览器抽象:本地/远程驱动程序
- 命令注册表:可扩展的自动化命令
快速开始
先决条件
- Python 3.8+
- 已安装Chrome/Firefox/Edge浏览器(或远程Selenium Grid)
- Redis服务器(用于持久速率限制)
- (可选)Docker
Makefile使用情况
1.创建虚拟环境并安装pip工具
make venv
2.将您的依赖项添加到 requirements.in (例如:fastapi、selenium、uvicorn、python-dotenv)
3.生成 requirements.txt 从 requirements.in
make requirements
4.安装依赖项
make install
5.运行服务器
make run
6.运行测试
make test
7.清理环境和建筑/测试残留物
make clean
API终点
POST /sessions--启动新的浏览器会话POST /sessions/{session_id}/commands--运行命令(导航、单击、键入等)DELETE /sessions/{session_id}--结束会话GET /sessions--列出活动会话GET /health--健康检查
码头工人
docker build -t selenium-mcp .
docker run -p 8000:8000 selenium-mcp
OpenAPI和使用示例
API文档
- 交互式API文档: http://localhost:8000/docs
- 重新记录: http://localhost:8000/redoc
示例:执行操作
POST /sessions/{session_id}/actions
{
"type": "click",
"selector": {"role": "button", "aria_label": "Submit"}
}
示例:按标签键入
POST /sessions/{session_id}/actions
{
"type": "type",
"selector": {"label": "Username"},
"value": "myuser"
}
示例:导航
POST /sessions/{session_id}/actions
{
"type": "navigate",
"value": "https://example.com"
}
示例:通过语义选择器获取元素
GET /sessions/{session_id}/element?role=button&aria_label=Submit
答复:
{
"tag": "BUTTON",
"id": "submitBtn",
"name": null,
"role": "button",
"aria_label": "Submit",
"text": "Submit",
"children": []
}
Redis设置
# Install Redis (macOS)
brew install redis
redis-server
# Or using Docker
docker run -d -p 6379:6379 redis:alpine
环境变量
export MCP_API_KEY="your-secure-api-key"
export REDIS_URL="redis://localhost:6379" # Optional, defaults to localhost
高级功能
持续速率限制
- 基于Redis的速率限制,具有可配置的窗口和限制
- 配额信息端点:
GET /quota - 自动清理过期的速率限制数据
事务管理
使用回滚支持创建复杂的自动化工作流:
创建交易
POST /sessions/{session_id}/transactions
{
"steps": [
{
"action": {
"type": "navigate",
"value": "https://example.com"
}
},
{
"action": {
"type": "type",
"selector": {"label": "Username"},
"value": "testuser"
},
"condition": "document.querySelector('input[name=\"username\"]') !== null",
"rollback_action": {
"type": "click",
"selector": {"role": "button", "aria_label": "Clear"}
}
}
]
}
执行交易
POST /transactions/{transaction_id}/execute
检查交易状态
GET /transactions/{transaction_id}
回滚事务
POST /transactions/{transaction_id}/rollback
交易特征
- 条件:条件执行的JavaScript条件
- 回滚操作:故障时自动回滚
- 状态跟踪:每个步骤的详细状态
- 手动回滚:回滚已提交的交易
许可证
麻省理工学院