一个由Playwright驱动的高级网络浏览服务器,适用于模型上下文协议(MCP),通过灵活、安全的API实现无头浏览器交互。
<a href="https://glama.ai/mcp/servers/lwqlaw6k6d"><img width="380" height="200" src="https://gips3.baidu.com/it/u=325179036,639407700&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Web Browser Server MCP服务器" /></a>
# 安装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:可选的上下文对象(目前未使用)欢迎贡献!请随时提交拉取请求。
# 克隆仓库
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上打开一个issue。