🤖 基于LangChain和Selenium MCP的人工智能浏览器自动化
📖 关于
该项目为使用自然语言命令自动化web浏览器提供了一个强大而灵活的解决方案。它结合了a 朗链代理 带着一个 基于Selenium的MCP服务器 创建一个可以基于简单的会话指令执行复杂的web自动化任务的系统。该项目旨在与 n8n,使您能够轻松构建复杂的自动化工作流程。对于希望利用人工智能进行网络抓取、自动化测试和其他基于浏览器的任务的开发人员来说,这是一个理想的起点。
✨ 主要特点
- 自然语言控制:使用简单的对话语言来控制网络浏览器。
- 模块化架构LangChain代理和Selenium MCP服务器解耦,使系统易于维护和扩展。
- 无缝n8n集成:带有预构建的n8n工作流程,可快速设置和部署。
- 综合工具集:一套丰富的浏览器自动化工具,用于处理各种任务。
- 会话保持:浏览器会话在服务器重启时保持不变,允许长时间运行、有状态的自动化。
🏛️ 项目架构
该项目由两个主要部分组成:
langchain-agent:使用LangChain和Streamlit构建的Python应用程序,为用户提供基于聊天的界面。它使用强大的语言模型(如谷歌的Gemini)来解释用户命令并编排自动化任务。
mcp-selenium:实现模型上下文协议(MCP)的Node.js服务器。它充当LangChain代理和Selenium WebDriver之间的桥梁,提供了一组代理可以用来控制web浏览器的工具。
这两个组件通过HTTP进行通信,LangChain代理向MCP服务器发送命令,然后MCP服务器在浏览器中执行这些命令。
🚀 入门指南
先决条件
- Node.js和npm
- Python和pip
- 支持的语言模型(例如Google Gemini)的API密钥
1.设置 mcp-selenium 服务器
这 mcp-selenium 服务器是项目的引擎,负责执行浏览器自动化任务。
安装:
cd mcp-selenium
npm install运行服务器:
node http-server.js服务器将于启动 http://localhost:3000.
2.设置 langchain-agent
这 langchain-agent 提供用户界面和操作的“大脑”。
安装:
cd langchain-agent
pip install -r requirements.txt配置:
创建一个 .env 文件在 langchain-agent 目录,并添加语言模型的API键:
GEMINI_API_KEY=your_api_key_here运行代理:
streamlit run app.py这将启动一个基于网络的聊天界面,您可以在其中与代理进行交互。
🐳 Docker使用
该项目也可以作为Docker镜像提供,通过捆绑 langchain-agent 和 mcp-selenium 将服务器放入单个容器中。
构建Docker镜像:
docker build -t mcp-selenium-agent .运行Docker容器:
docker run -p 3000:3000 -p 8501:8501 mcp-selenium-agent这将启动 mcp-selenium 端口上的服务器 3000 和那个 langchain-agent 在港口 8501。您可以通过导航到访问代理的web界面 http://localhost:8501 在您的浏览器中。
🔗 n8n集成
该项目旨在与功能强大的工作流自动化工具n8n一起使用。我们提供了一个预构建的工作流程(selenium_workflow.json)让你快速开始。
设置工作流:
- 导入
selenium_workflow.json将文件保存到n8n实例中。 - 配置 谷歌Gemini聊天模式 使用API凭据的节点。
- 确保 MCP客户端 节点指向您的正确URL
mcp-selenium服务器(http://127.0.0.1:3000默认情况下)。 - 激活工作流。
现在,您可以直接从n8n聊天界面与代理进行交互。
🧰 可用工具
这 mcp-selenium 服务器为浏览器自动化提供了一套全面的工具。以下是完整列表:
浏览器管理
start_browser:启动新的浏览器会话。navigate:导航到特定URL。close_session:关闭当前浏览器会话。
页面交互
get_page_source:检索当前页面的HTML源代码。get_element_text:获取特定元素的可见文本。take_screenshot:截取页面可见部分的屏幕截图。
元素交互
find_element:检查页面上是否存在元素。click_element:单击特定元素。send_keys:在输入字段中键入文本。upload_file:将文件上传到文件输入字段。
高级交互
hover:将鼠标悬停在元素上。drag_and_drop:拖动一个元素并将其放到另一个元素上。double_click:对元素执行双击操作。right_click:在元素上执行右键单击。press_key:模拟按下键盘上的某个键。
📜 许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
