\# MCPBrowser服务器
使用Selenium WebDriver实现浏览器自动化的综合模型上下文协议(MCP)服务器。该服务器为AI代理提供了强大的网络浏览功能,包括会话管理、标签控制、导航和元素交互。
特性
🌐 会话管理
- 创建和管理多个浏览器会话
- 在会话之间无缝切换
- 在重新启动之间保持会话状态
- 可配置的浏览器选项(无头、窗口大小、超时)
📑 选项卡管理
- 在会话中创建、切换和关闭选项卡
- 跟踪选项卡状态(URL、标题、加载状态)
- 在多个选项卡之间高效导航
🧭 导航
- 导航到具有加载时间跟踪的URL
- 页面刷新、后退和前进导航
- 在页面上执行JavaScript代码
- 捕获屏幕截图以进行调试
🎯 元素交互
- 使用CSS选择器、XPath、ID、类等查找元素。
- 单击元素,键入文本,获取元素属性
- 等待元素出现
- 滚动到元素和悬停交互
📊 调试与信息
- 全面的页面信息提取
- 屏幕截图(在内存中或保存到文件中)
- 详细的错误报告和日志记录
- 所有操作的调试信息
需求
- .NET 9.0或更高版本
- 系统上安装了Chrome浏览器
- ChromeDriver(由NuGet包自动管理)
安装
- 克隆或下载项目
- 构建项目:
dotnet build MCPBrowserServer.csproj- 发布可执行文件:
dotnet publish -c Release --self-contained false -o publish配置
添加到您的Claude Desktop配置(claude_desktop_config.json):
{
"mcpServers": {
"browser": {
"command": "C:\\path\\to\\MCPBrowserServer\\publish\\MCPBrowserServer.exe",
"args": []
}
}
}可用工具
会话管理
create_session-创建新的浏览器会话list_sessions-列出所有活动会话get_session-获取会话详细信息switch_session-切换到其他会话close_session-关闭会话get_active_session-获取当前活动会话
选项卡管理
create_tab-创建新选项卡list_tabs-列出会话中的所有选项卡get_tab-获取选项卡详细信息switch_tab-切换到其他选项卡close_tab-关闭选项卡get_active_tab-获取当前活动选项卡rename_tab-重命名选项卡
导航
navigate-导航到URLrefresh-刷新当前页面go_back-返回浏览器历史记录go_forward-在浏览器历史记录中前进get_page_info-获取页面信息(URL、标题、元数据)take_screenshot-捕获页面截图execute_javascript-执行JavaScript代码
元素交互
find_elements-在页面上查找元素click_element-单击元素type_text-在元素中键入文本get_element_text-从元素中获取文本get_element_attribute-获取元素属性值wait_for_element-等待元素出现scroll_to_element-滚动到一个元素hover_element-将鼠标悬停在元素上
使用示例
基本会话创建
# Create a new browser session
create_session("Main Session", headless=false, width=1920, height=1080)
# Navigate to a website
navigate("session-id", "https://example.com")
# Take a screenshot
take_screenshot("session-id", saveToFile=true)选项卡管理
# Create a new tab
create_tab("session-id", "Google Tab", "https://google.com")
# List all tabs
list_tabs("session-id")
# Switch to a specific tab
switch_tab("session-id", "tab-id")元素交互
# Find search input and type
find_elements("session-id", "input[name='q']", "css")
type_text("session-id", "input[name='q']", "MCP browser automation")
# Click search button
click_element("session-id", "button[type='submit']", "css")
# Wait for results and get text
wait_for_element("session-id", ".search-results", "css", 10)
get_element_text("session-id", ".search-results", "css")浏览器选项
创建会话时,您可以配置:
headless-运行不带GUI的浏览器(默认值:true)width/height-浏览器窗口大小(默认值:1920x1080)pageLoadTimeoutSeconds-页面加载超时(默认值:30)userAgent-自定义用户代理字符串- 其他Chrome选项
日志记录
日志被写入 %TEMP%/mcp-browser-server-log.txt 用于调试目的。
会话数据被持久化到 %TEMP%/mcp-browser-sessions.json.
错误处理
所有工具都返回结构化的JSON响应,其中包含:
Success-布尔值表示操作成功Error-操作失败时的错误消息DebugInfo-其他调试信息Timestamp-操作时间戳
建筑
服务器由以下组件构建:
- 模型:会话、选项卡和响应的数据结构
- 服务:浏览器和会话管理的核心业务逻辑
- 工具:向AI代理公开功能的MCP工具实现
从源头构建
# Restore dependencies
dotnet restore
# Build project
dotnet build
# Run tests (if available)
dotnet test
# Publish executable
dotnet publish -c Release -o publish故障排除
- 未找到Chrome:确保Chrome已安装并位于PATH中
- 权限问题:以适当的文件访问权限运行
- 端口冲突:每个会话使用一个唯一的Chrome实例
- 内存使用:监视多个并发会话的内存使用情况
贡献
此MCP服务器演示了高级浏览器自动化模式,可以通过其他工具和功能进行扩展。
许可证
本项目按原样提供,用于教育和发展目的。
