MCP Selenium 浏览器自动化工具
通过 MCP 使用 Selenium WebDriver 启用浏览器自动化,支持浏览器管理、元素定位以及基本和高级用户交互。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"selenium": {
"args": [
"-y",
"@angiejones/mcp-selenium"
],
"command": "npx"
}
}
}
服务介绍
MCP Selenium Server
一个用于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"]
}
}
}
开发
要参与此项目开发:
- 克隆仓库
- 安装依赖项:
npm install - 运行服务器:
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"]
}
}
}
navigate
导航到指定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