Selenium浏览器自动化服务

MCP Selenium Server是一个为AI代理提供的Selenium WebDriver浏览器自动化服务,支持多种浏览器操作和交互。

作者 By angiejones
本地部署 可托管 浏览器自动化
GitHub

MCP硒服务器

Selenium WebDriver的模型上下文协议(MCP)服务器——AI代理的浏览器自动化。

Selenium MCP server

设置

Goose (Desktop) 粘贴到浏览器地址栏:

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

Goose (CLI) BASH``` 1goose session —with-extension “npx -y @angiejones/mcp-selenium@latest”




**Claude Code**
BASH```
1claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latest

Cursor / Windsurf / other MCP clients JSON``` 1 2 3 4 5 6 7 8{ “mcpServers”: { “selenium”: { “command”: “npx”, “args”: [“-y”, “@angiejones/mcp-selenium@latest”] } } }



## 示例用法


告诉你选择的AI代理:


> 打开Chrome浏览器,访问github/angiejones,然后截图。


代理将调用Selenium的API `start_browser`, `navigate`,以及 `take_screenshot`无需手动编写脚本或明确指示。


## 支持的浏览器


Chrome、Firefox、Edge和Safari。


> **Safari注释:** 需要macOS。跑 `sudo safaridriver --enable` 一次并启用
> Safari中的“允许远程自动化”→ 设置→ 开发商。没有无头模式。



---



**Tools**
### start_browser


启动浏览器会话。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| 浏览器 | 字符串 | 是 | `chrome`, `firefox`, `edge`,或 `safari` |
| 选项 | 对象 | 否 | `{ headless: boolean, arguments: string[] }` |


### 导航


导航到URL。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| url | string | 是 | 要导航到的url |


### 互动


在元素上执行鼠标操作。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| action | string | 是 | `click`, `doubleclick`, `rightclick`,或 `hover` |
| by | string | Yes | 定位器策略: `id`, `css`, `xpath`, `name`, `tag`, `class` |
| value | string | Yes | 定位器策略的值 |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### send_keys


在元素中键入文本。先清除字段。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| by | string | 是 | 定位器策略 |
| value | string | Yes | 定位器值 |
| text | string | Yes | 要输入的文本 |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### get_element_text


获取元素的文本内容。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| by | string | 是 | 定位器策略 |
| value | string | Yes | 定位器值 |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### get_element_attribute


从元素获取属性值。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| by | string | 是 | 定位器策略 |
| value | string | Yes | 定位器值 |
| attribute | string | Yes | 属性名称(例如。, `href`, `value`, `class`) |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### 按键


按下键盘键。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| key | string | Yes | 要按下的键(例如。, `Enter`, `Tab`, `a`) |


### 上传文件


通过文件输入元素上传文件。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| by | string | 是 | 定位器策略 |
| value | string | Yes | 定位器值 |
| filePath | string | Yes | 文件的绝对路径 |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### take_screenshot


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


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| outputPath | 字符串 | 否 | 保存路径。如果省略,则返回base64图像数据。 |


### 关闭会话


关闭当前浏览器会话。没有参数。


### execute_script


在浏览器中执行JavaScript。用于其他工具未涵盖的高级交互(例如,拖放、滚动、读取计算样式、DOM操作)。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| script | string | Yes | 要执行的JavaScript代码 |
| args | array | 否 | 参数可通过以下方式访问 `arguments[0]`等等。 |


### 窗口


管理浏览器窗口和选项卡。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| action | string | 是 | `list`, `switch`, `switch_latest`,或 `close` |
| handle | string | No | 窗口句柄(必需 `switch`) |


### 框架


将焦点切换到框架或返回主页。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| action | string | 是 | `switch` 或 `default` |
| by | string | 否 | 定位器策略(适用于 `switch`) |
| value | string | No | 定位器值(用于 `switch`) |
| index | number | No | 帧索引,从0开始(用于 `switch`) |
| timeout | number | No | 最大等待时间(毫秒)(默认值:10000) |


### 警报


处理浏览器警报、确认或提示对话框。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| action | string | 是 | `accept`, `dismiss`, `get_text`,或 `send_text` |
| text | string | 否 | 要发送的文本(必填 `send_text`) |
| timeout | number | No | 最大等待时间(毫秒)(默认值:5000) |


### add_cookie


添加cookie。浏览器必须位于cookie域的页面上。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| name | string | Yes | Cookie名称 |
| value | string | Yes | Cookie值 |
| 域 | 字符串 | 否 | Cookie域 |
| path | string | 否 | Cookie路径 |
| secure | boolean | 否 | 安全标志 |
| httpOnly | boolean | 否 | 仅HTTP标志 |
| expire | number | No | Unix时间戳 |


### get_cookies


获取Cookie。按名称返回全部或特定值。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| name | string | 否 | Cookie名称。省略所有Cookie。 |


### 删除cookie


删除Cookie。按名称删除所有或特定内容。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| name | string | 否 | Cookie名称。省略删除所有内容。 |


### 诊断


获取通过WebDriver BiDi捕获的浏览器诊断(支持时自动启用)。


| 参数 | 类型 | 必填 | 说明 |
| --- | --- | --- | --- |
| type | string | 是 | `console`, `errors`,或 `network` |
| clear | boolean | 否 | 返回后清除缓冲区(默认值:false) |




**Resources**
MCP资源提供只读数据,客户端可以在不调用工具的情况下访问这些数据。


### 浏览器-status://current


返回当前浏览器会话状态(活动会话ID或“无活动会话”)。


| 财产 | 价值 |
| --- | --- |
| MIME类型 | `text/plain` |
| 需要浏览器 | 否 |


### 加速ssibility://current


返回当前页面的可访问性树快照——交互式元素和文本内容的紧凑、结构化JSON表示。比完整的HTML小得多。有助于理解页面布局和查找要交互的元素。


| 财产 | 价值 |
| --- | --- |
| MIME类型 | `application/json` |
| 需要浏览器 | 是 |




---



**Development**
### 设置


BASH```
1
2
3git clone https://github.com/angiejones/mcp-selenium.git
cd mcp-selenium
npm install

运行测试

BASH``` 1npm test


需要PATH上的Chrome+chromedriver。测试无头运行。


### 通过Smithery安装


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

全局安装

BASH``` 1 2npm install -g @angiejones/mcp-selenium mcp-selenium



## 许可证


麻省理工学院