M

MCP Selenium 浏览器自动化工具

@angiejones/mcp-selenium
1 Stars 850 次浏览 angiejones 更新于 2026-08-23

通过 MCP 使用 Selenium WebDriver 启用浏览器自动化,支持浏览器管理、元素定位以及基本和高级用户交互。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "selenium": {
      "args": [
        "-y",
        "@angiejones/mcp-selenium"
      ],
      "command": "npx"
    }
  }
}

服务介绍

MCP Selenium Server

smithery badge

一个用于Selenium WebDriver的模型上下文协议(MCP)服务器实现,通过标准化的MCP客户端启用浏览器自动化。

特性

  • 使用可自定义选项启动浏览器会话
  • 导航至URL
  • 使用各种定位策略查找元素
  • 点击、输入和与元素交互
  • 执行鼠标操作(悬停、拖放)
  • 处理键盘输入
  • 截图
  • 上传文件
  • 支持无头模式

支持的浏览器

  • Chrome
  • Firefox

与Goose一起使用

选项1:一键安装

将下面的链接复制并粘贴到浏览器地址栏中,以将此扩展添加到goose桌面:

goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions

选项2:手动添加到桌面或CLI

  • 名称: Selenium MCP
  • 描述: 自动执行浏览器交互
  • 命令: npx -y @angiejones/mcp-selenium

与其他MCP客户端一起使用(例如Claude Desktop等)

{
  "mcpServers": {
    "selenium": {
      "command": "npx",
      "args": ["-y", "@angiejones/mcp-selenium"]
    }
  }
}

开发

要参与此项目开发:

  1. 克隆仓库
  2. 安装依赖项: npm install
  3. 运行服务器: npm start

安装

通过Smithery安装

要通过Smithery自动为Claude Desktop安装MCP Selenium:

npx -y @smithery/cli install @angiejones/mcp-selenium --client claude

手动安装

npm install -g @angiejones/mcp-selenium

使用方法

通过运行以下命令启动服务器:

mcp-selenium

或者在您的MCP配置中使用NPX:

{
  "mcpServers": {
    "selenium": {
      "command": "npx",
      "args": [
        "-y",
        "@angiejones/mcp-selenium"
      ]
    }
  }
}

工具

start_browser

启动浏览器会话。

参数:

  • browser (必需): 要启动的浏览器
    • 类型: 字符串
    • 枚举: ["chrome", "firefox"]
  • options: 浏览器配置选项
    • 类型: 对象
    • 属性:
      • headless: 以无头模式运行浏览器
        • 类型: 布尔值
      • arguments: 额外的浏览器参数
        • 类型: 字符串数组

示例:

{
  "tool": "start_browser",
  "parameters": {
    "browser": "chrome",
    "options": {
      "headless": true,
      "arguments": ["--no-sandbox"]
    }
  }
}

导航到指定URL。

参数:

  • url (必需): 要导航到的URL
    • 类型: 字符串

示例:

{
  "tool": "navigate",
  "parameters": {
    "url": "https://www.example.com"
  }
}

find_element

在页面上查找元素。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认: 10000

示例:

{
  "tool": "find_element",
  "parameters": {
    "by": "id",
    "value": "search-input",
    "timeout": 5000
  }
}

click_element

点击元素。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认: 10000

示例:

{
  "tool": "click_element",
  "parameters": {
    "by": "css",
    "value": ".submit-button"
  }
}

send_keys

向元素发送键(即打字)。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • text (必需): 要输入到元素中的文本
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "send_keys",
  "parameters": {
    "by": "name",
    "value": "username",
    "text": "testuser"
  }
}

get_element_text

获取元素的 text()。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "get_element_text",
  "parameters": {
    "by": "css",
    "value": ".message"
  }
}

hover

将鼠标悬停在一个元素上。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "hover",
  "parameters": {
    "by": "css",
    "value": ".dropdown-menu"
  }
}

drag_and_drop

拖动一个元素并将其放置在另一个元素上。

参数:

  • by (必需): 源元素的定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 源定位策略的值
    • 类型: 字符串
  • targetBy (必需): 目标元素的定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • targetValue (必需): 目标定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "drag_and_drop",
  "parameters": {
    "by": "id",
    "value": "draggable",
    "targetBy": "id",
    "targetValue": "droppable"
  }
}

double_click

对一个元素执行双击操作。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "double_click",
  "parameters": {
    "by": "css",
    "value": ".editable-text"
  }
}

right_click

对一个元素执行右键点击(上下文点击)操作。

参数:

  • by (必需): 定位策略
    • 类型: 字符串
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位策略的值
    • 类型: 字符串
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: 数字
    • 默认值: 10000

示例:

{
  "tool": "right_click",
  "parameters": {
    "by": "css",
    "value": ".context-menu-trigger"
  }
}

press_key

模拟按下键盘按键。

参数:

  • key (必需): 要按下的键(例如,'Enter', 'Tab', 'a' 等)
    • 类型: 字符串

示例:

{
  "tool": "press_key",
  "parameters": {
    "key": "Enter"
  }
}

upload_file

使用文件输入元素上传文件。

参数:

  • by (必需): 定位器策略
    • 类型: string
    • 枚举: ["id", "css", "xpath", "name", "tag", "class"]
  • value (必需): 定位器策略的值
    • 类型: string
  • filePath (必需): 要上传文件的绝对路径
    • 类型: string
  • timeout: 等待元素的最大时间(毫秒)
    • 类型: number
    • 默认值: 10000

示例:

{
  "tool": "upload_file",
  "parameters": {
    "by": "id",
    "value": "file-input",
    "filePath": "/path/to/file.pdf"
  }
}

take_screenshot

捕获当前页面的屏幕截图。

参数:

  • outputPath (可选): 保存屏幕截图的路径。如果未提供,则返回 base64 数据。
    • 类型: string

示例:

{
  "tool": "take_screenshot",
  "parameters": {
    "outputPath": "/path/to/screenshot.png"
  }
}

close_session

关闭当前浏览器会话并清理资源。

参数:

示例:

{
  "tool": "close_session",
  "parameters": {}
}

许可证

MIT

相关 MCP 服务