浏览器自动化服务器

一个可扩展的开源服务器,用于管理Selenium浏览器自动化会话,支持本地和远程执行,适用于GenAI驱动的Web自动化。

  • by ira-ai-automation
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ira-ai-automation/selenium-mcp

使用说明

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文档

示例:执行操作

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条件
  • 回滚操作:故障时自动回滚
  • 状态跟踪:每个步骤的详细状态
  • 手动回滚:回滚已提交的交易

许可证

麻省理工学院