这是一个强大的浏览器自动化系统,使AI代理能够通过模型上下文协议(MCP)控制网络浏览器。此实现特别设计用于与Ollama本地模型配合使用,提供了一种安全且高效的方法,利用本地托管的AI模型来自动化浏览器交互。
# 克隆仓库
git clone https://github.com/Cam10001110101/mcp-server-browser-use-ollama
cd mcp-server-browser-use-ollama
# 使用uv安装(推荐)
uv pip install -e .
playwright install
# 启动Ollama并拉取模型
ollama serve # 在一个终端中
ollama pull qwen3 # 在另一个终端中
该系统可以以两种模式使用:
在claude_desktop_config.json中配置:
{
"mcpServers": {
"browser-use-ollama": {
"command": "/path/to/.venv/bin/python",
"args": ["/path/to/src/server.py"]
}
}
}
# 带有对话历史的交互式自动化
python src/client.py src/server.py
# 通过命令行执行自定义任务
python src/client.py src/server.py "导航到Google并搜索'Ollama模型'"
# 从文件执行复杂任务
python src/client.py src/server.py task_description.txt --file
# 使用自定义模型
python src/client.py src/server.py "您的任务" --model llama3.2:latest
MCP服务器提供了10个浏览器自动化工具:
launch_browser(url) - 启动浏览器并导航至URLclick_element(session_id, x, y) - 点击坐标位置click_selector(session_id, selector) - 通过CSS选择器点击元素type_text(session_id, text) - 在当前位置输入文本scroll_page(session_id, direction) - 向上或向下滚动页面get_page_content(session_id) - 提取页面文本内容get_dom_structure(session_id, max_depth) - 获取DOM树extract_data(session_id, pattern) - 提取结构化数据take_screenshot(session_id) - 捕获屏幕截图close_browser(session_id) - 关闭浏览器会话python src/client.py src/server.py "在Google上搜索'Ollama模型'并总结前三个结果"
python src/client.py src/server.py "比较Amazon上的无线耳机 - 创建包含价格、评分和特性的表格"
python src/client.py src/server.py "研究2024年变压器架构改进,访问5个来源,并编译摘要"
# 创建任务文件
echo "导航到GitHub,搜索MCP存储库,并分析前五个结果" > my_task.txt
# 运行任务
python src/client.py src/server.py my_task.txt --file
OLLAMA_MODEL:指定Ollama模型(默认值:qwen3)OLLAMA_HOST:Ollama API端点(默认值:http://localhost:11434)# 运行纯MCP测试(推荐)
pytest tests/test_server_mcp.py -v
# 运行所有测试
pytest
# 运行特定测试类别
pytest tests/test_server_mcp.py # 纯MCP实现测试
pytest tests/test_integration.py # 集成测试
mcp-server-browser-use-ollama/
├── src/ # 核心源代码
│ ├── server.py # MCP服务器实现
│ └── client.py # 具有完整自动化能力的交互客户端
├── tests/ # 测试套件
├── docs/ # 额外文档
├── pyproject.toml # 项目配置
└── README.md # 此文件
该系统采用客户端-服务器架构,使用MCP协议:
用户 → 客户端 → MCP协议 → 服务器 → Playwright浏览器
客户端与Ollama保持连续对话,以实现动态自动化: