这是一个基于 Playwright 的高级网页浏览服务器,专为 Model Context Protocol (MCP) 设计,通过灵活安全的 API 实现无头浏览器交互。
# 安装 MCP 和 Playwright
pip install mcp playwright
# 安装浏览器依赖
playwright install

在您的 claude_desktop_config.json
中添加:
{
"mcpServers": {
"web-browser": {
"command": "python",
"args": [
"/path/to/your/server.py"
]
}
}
}

# 浏览网站
page_content = browse_to("https://example.com")
# 提取页面文本
text_content = extract_text_content()
# 提取特定元素的文本
title_text = extract_text_content("h1.title")

# 导航到页面
browse_to("https://example.com/login")
# 在表单中输入文本
input_text("#username", "your_username")
input_text("#password", "your_password")
# 点击登录按钮
click_element("#login-button")

# 捕获全页截图
full_page_screenshot = get_page_screenshots(full_page=True)
# 捕获特定元素截图
element_screenshot = get_page_screenshots(selector="#main-content")

# 获取页面上的所有链接
page_links = get_page_links()
# 获取匹配模式的链接
filtered_links = get_page_links(filter_pattern="contact")

# 创建新标签页
tab_id = create_new_tab("https://example.com")
# 创建另一个标签页
another_tab_id = create_new_tab("https://example.org")
# 列出所有打开的标签页
tabs = list_tabs()
# 切换标签页
switch_tab(tab_id)
# 关闭标签页
close_tab(another_tab_id)

# 滚动页面
scroll_page(direction="down", amount="page")
# 在页面上执行 JavaScript
result = execute_javascript("return document.title")
# 获取详细的页面信息
page_info = get_page_info()
# 刷新当前页面
refresh_page()
# 等待导航完成
wait_for_navigation(timeout_ms=5000)

browse_to()
方法中的超时时间所有重要事件都带有详细信息进行日志记录,便于调试。
browse_to(url: str, context: Optional[Any] = None)
url
:要导航的网站context
:可选上下文对象(当前未使用)extract_text_content(selector: Optional[str] = None, context: Optional[Any] = None)
selector
:可选的 CSS 选择器,用于提取特定内容context
:可选上下文对象(当前未使用)click_element(selector: str, context: Optional[Any] = None)
selector
:要点击的元素的 CSS 选择器context
:可选上下文对象(当前未使用)get_page_screenshots(full_page: bool = False, selector: Optional[str] = None, context: Optional[Any] = None)
full_page
:捕获整个页面的截图selector
:可选的要截图的元素context
:可选上下文对象(当前未使用)get_page_links(filter_pattern: Optional[str] = None, context: Optional[Any] = None)
filter_pattern
:可选的文本模式,用于过滤链接context
:可选上下文对象(当前未使用)input_text(selector: str, text: str, context: Optional[Any] = None)
selector
:输入元素的 CSS 选择器text
:要输入的文本context
:可选上下文对象(当前未使用)create_new_tab(url: Optional[str] = None, context: Optional[Any] = None)
url
:新标签页中要导航的可选 URLcontext
:可选上下文对象(当前未使用)switch_tab(tab_id: str, context: Optional[Any] = None)
tab_id
:要切换到的标签页 IDcontext
:可选上下文对象(当前未使用)list_tabs(context: Optional[Any] = None)
context
:可选上下文对象(当前未使用)close_tab(tab_id: Optional[str] = None, context: Optional[Any] = None)
tab_id
:要关闭的标签页的可选 ID(默认为当前标签页)context
:可选上下文对象(当前未使用)refresh_page(context: Optional[Any] = None)
context
:可选上下文对象(当前未使用)get_page_info(context: Optional[Any] = None)
context
:可选上下文对象(当前未使用)scroll_page(direction: str = "down", amount: str = "page", context: Optional[Any] = None)
direction
:滚动方向('up', 'down', 'left', 'right')amount
:滚动量('page', 'half' 或数字)context
:可选上下文对象(当前未使用)wait_for_navigation(timeout_ms: int = 10000, context: Optional[Any] = None)
timeout_ms
:最大等待时间(毫秒)context
:可选上下文对象(当前未使用)execute_javascript(script: str, context: Optional[Any] = None)
script
:要执行的 JavaScript 代码context
:可选上下文对象(当前未使用)欢迎贡献!请随时提交 Pull Request。
# 克隆仓库
git clone https://github.com/random-robbie/mcp-web-browser.git
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # 在 Windows 上使用 `venv\Scripts\activate`
# 安装依赖
pip install -e .[dev]

MIT 许可证
如有问题,请在 GitHub 上提交问题。