MCP硒服务器
Selenium WebDriver的模型上下文协议(MCP)服务器——AI代理的浏览器自动化。
设置
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
## 许可证
麻省理工学院 