MCP硒
Selenium WebDriver的模型上下文协议(MCP)的Java实现,通过标准化的MCP客户端实现浏览器自动化。
概述
MCP Selenium在模型上下文协议和Selenium WebDriver之间提供了一座桥梁。它允许AI助手和其他兼容MCP的客户端使用一组标准化的工具执行浏览器自动化任务。
项目结构
│ ├── McpSeleniumServer.java#主MCP服务器实现 │ ├── McpSeleniumLauncher.java#服务器的启动器脚本 │ └── AdvancedMcpClient.java#用于测试的GUI客户端 ├── 目标/ │ └── mcp-selenium-0.1.0-jar-with-dependences.jar#编译的含依赖项的jar └── pom.xml#Maven项目配置
## Prerequisites
- Java 11 or higher
- Maven (for building)
- Chrome or Firefox browser installed
# Build with Maven
mvn clean package这将在以下位置创建JAR文件 target/mcp-selenium-0.1.0-jar-with-dependencies.jar.
服务器将启动并等待标准输入上的命令。您将看到服务器信息作为初始输出。
发送命令
现在,您可以向服务器发送JSON命令。将命令直接键入或粘贴到终端中,每行一个。
示例命令
- 启动Chrome浏览器:
{"type":"tool_call","tool_call_id":"call-1","name":"start_browser","params":{"browser":"chrome","options":{"headless":false}}}- 导航到网站:
{"type":"tool_call","tool_call_id":"call-2","name":"navigate","params":{"url":"https://www.example.com"}}- 查找元素:
{"type":"tool_call","tool_call_id":"call-3","name":"find_element","params":{"by":"css","value":"h1"}}- 获取元素文本:
{"type":"tool_call","tool_call_id":"call-4","name":"get_element_text","params":{"by":"css","value":"h1"}}- 单击元素:
{"type":"tool_call","tool_call_id":"call-5","name":"click_element","params":{"by":"id","value":"submit-button"}}- 在元素中键入文本:
{"type":"tool_call","tool_call_id":"call-6","name":"send_keys","params":{"by":"id","value":"search-box","text":"search query"}}- 截图:
{"type":"tool_call","tool_call_id":"call-7","name":"take_screenshot","params":{"outputPath":"screenshot.png"}}- 关闭浏览器:
{"type":"tool_call","tool_call_id":"call-8","name":"close_session","params":{}}关闭服务器
要停止服务器,请在终端中使用Ctrl+C。
选项2:GUI客户端
为了获得更用户友好的体验,您可以使用附带的GUI客户端。
启动GUI客户端
编译并运行客户端:
使用GUI
启动时,GUI客户端会自动启动MCP Selenium服务器。界面包括:
- 命令选择器:下拉菜单,选择要执行的MCP命令。
- JSON参数:文本字段,用于以JSON格式输入命令参数。
- 快速操作按钮:
- 启动Chrome:启动Chrome浏览器 - 导航:打开一个对话框以输入URL - 截图:截图 - 关闭浏览器:关闭当前会话
- 日志区域:显示服务器响应和日志。
GUI使用示例
查找元素
- 从命令下拉列表中选择“find_element”。
- 在JSON字段中输入参数:
{"by":"id","value":"login-button"}- 点击“发送”。
发送密钥(键入文本)
- 从命令下拉列表中选择“send_keys”。
- 在JSON字段中输入参数:
{"by":"id","value":"username","text":"testuser@example.com"}- 点击“发送”。
单击元素
- 从命令下拉列表中选择“click_element”。
- 在JSON字段中输入参数:
{"by":"css","value":"button.submit"}- 点击“发送”。
支持的命令
MCP Selenium服务器支持以下命令:
| 命令 | 说明 | 必需参数 | 可选参数 |
|---|---|---|---|
start_browser | 启动浏览器 | browser (“chrome”或“firefox”) | options.headless, options.arguments |
navigate | 导航到URL | url | - |
find_element | 查找元素 | by, value | timeout |
click_element | 点击一个元素 | by, value | timeout |
send_keys | 在元素中键入文本 | by, value, text | timeout |
get_element_text | 从元素中获取文本 | by, value | timeout |
hover | 将鼠标悬停在元素上 | by, value | timeout |
drag_and_drop | 拖放元素 | by, value, targetBy, targetValue | timeout |
double_click | 双击元素 | by, value | timeout |
right_click | 在元素上单击鼠标右键 | by, value | timeout |
press_key | 按下键盘键 | key | - |
upload_file | 上传文件 | by, value, filePath | timeout |
take_screenshot | 截图 | - | outputPath |
close_session | 关闭浏览器 | - | - |
定位器策略
对于与元素交互的命令,请在 by 参数:
id:元素IDcss:CSS选择器xpath:XPath表达式name:元素名称tag:HTML标记名称class:CSS类名
与人工智能系统集成
MCP Selenium旨在与支持模型上下文协议的AI系统一起使用。要与Claude这样的人工智能助手集成:
- 启动MCP Selenium服务器
- 配置AI系统以通过stdin/stdout连接到服务器
- 向人工智能发送自然语言命令,人工智能会将其转换为MCP命令
故障排除
常见问题
- 浏览器未启动:
- 确保您已安装Chrome或Firefox - 尝试使用 "headless":true 在选项中 - 检查服务器日志以获取详细的错误消息
- 未找到元素:
- 验证您的定位器(通过和值) - 增加超时值 - 检查元素是否在iframe中
- 服务器未响应:
- 确保JSON格式正确 - 检查每个命令是否具有唯一的tool_call_id - 如果服务器没有响应,请重新启动服务器
- 屏幕截图未保存:
- 提供绝对文件路径 - 确保目录存在 - 检查文件权限
致谢
- 基于Selenium WebDriver构建,实现浏览器自动化
- 实现模型上下文协议标准
