浏览器自动化客户端

一个集成Playwright MCP服务器和LangChain的Python客户端,用于通过AI代理实现浏览器自动化。

  • by SacSresta
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 SacSresta/mcp_browser

使用说明

LangChain MCP剧作家客户端

一个Python客户端,将Playwright MCP(模型上下文协议)服务器与LangChain集成在一起,通过AI代理实现浏览器自动化。

概述

该项目实现了以下各项之间的无缝集成:

  • 剧作家MCP服务器:通过MCP提供浏览器自动化功能
  • LangChain:构建AI代理应用程序的框架
  • Groq:使用Llama 3.3 70B等模型进行超快速LLM推理

客户端会自动发现可用的Playwright工具,并将其包装为LangChain工具,允许AI代理执行复杂的浏览器自动化任务。

特性

  • 🔌 轻松连接:连接到Playwright MCP服务器的简单异步接口
  • 🛠️ 自动工具发现:动态发现MCP工具并将其包装为LangChain工具
  • 🤖 代理支持:创建具有完全浏览器自动化访问权限的LangChain代理
  • 🔄 上下文管理:使用异步上下文管理器进行干净的资源管理
  • 📝 类型提示:完整的类型注释,以获得更好的IDE支持
  • ⚡ Groq集成:闪电般快速的LLM推理,实现快速的浏览器自动化

安装

先决条件

  • Python 3.8或更高版本
  • Node.js和npm(用于Playwright MCP服务器)
  • 紫外线 (推荐)或pip

设置

  1. 克隆或下载此存储库

  2. 安装Python依赖项:

    使用紫外线(推荐-更快):

    # Install uv if you haven't already
    # Windows: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    # macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh
    
    # Create virtual environment and install dependencies
    uv venv
    .venv\Scripts\activate  # Windows
    # source .venv/bin/activate  # macOS/Linux
    
    uv pip install -r requirements.txt
    

    使用pip:

    pip install -r requirements.txt
    
  3. 设置环境变量:

    cp .env.example .env
    

    编辑 .env 并添加您的Groq API密钥(从 console.groq.com):

    GROQ_API_KEY=your_groq_api_key_here
    
  4. 验证Playwright MCP是否可用:

    npx @playwright/mcp@latest --help
    

快速开始

基本用法

import asyncio
from dotenv import load_dotenv
from langchain_groq import ChatGroq
from langchain_mcp_client import create_playwright_mcp_client

async def main():
    load_dotenv()
    
    # Initialize LLM with Groq
    llm = ChatGroq(model="llama-3.3-70b-versatile", temperature=0)
    
    # Create and use MCP client
    async with create_playwright_mcp_client() as client:
        # Create agent
        agent = client.create_agent(llm)
        
        # Run a task
        result = await agent.ainvoke({
            "input": "Navigate to https://example.com and take a screenshot"
        })
        print(result['output'])

asyncio.run(main())

使用不同的LLM提供者

Groq(推荐-提供快速免费套餐)

from langchain_groq import ChatGroq

# Llama 3.3 70B - Best for complex tasks
llm = ChatGroq(model="llama-3.3-70b-versatile", temperature=0)

# Other models:
# llm = ChatGroq(model="llama-3.1-70b-versatile", temperature=0)
# llm = ChatGroq(model="mixtral-8x7b-32768", temperature=0)

其他提供者(需要额外的依赖关系)

# OpenAI: pip install langchain-openai
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4", temperature=0)

# Anthropic: pip install langchain-anthropic
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(model="claude-3-5-sonnet-20241022", temperature=0)

自定义系统消息

async with create_playwright_mcp_client() as client:
    custom_message = (
        "You are an expert web scraper. "
        "Extract information precisely and efficiently."
    )
    agent = client.create_agent(llm, system_message=custom_message)

手动连接管理

from langchain_mcp_client import PlaywrightMCPClient

client = PlaywrightMCPClient()
try:
    await client.connect()
    print(f"Connected! Found {len(client.tools)} tools")
    
    agent = client.create_agent(llm)
    result = await agent.ainvoke({"input": "Your task here"})
finally:
    await client.disconnect()

api参考

PlaywrightMCPClient

用于与Playwright MCP服务器交互的主客户端类。

方法

  • async connect():连接到MCP服务器并发现工具
  • create_agent(llm, system_message=None):使用MCP工具创建LangChain代理
  • async disconnect():断开与服务器的连接并清理资源

属性

  • tools:已发现的LangChain工具列表
  • session:活动MCP客户端会话

create_playwright_mcp_client()

异步上下文管理器,便于客户端生命周期管理。

退货: PlaywrightMCPClient 例子

示例:

async with create_playwright_mcp_client() as client:
    # Use client here
    pass

配置

MCP服务器配置

客户端使用以下方式连接到Playwright MCP:

{
  "command": "npx",
  "args": ["@playwright/mcp@latest"]
}

这是在中配置的 langchain_mcp_client.py 并运行最新版本的Playwright MCP。

环境变量

必修的:

可选(适用于其他提供商):

  • OPENAI_API_KEY:对于OpenAI模型(需要 langchain-openai)
  • ANTHROPIC_API_KEY:对于Anthropic模型(需要 langchain-anthropic)

示例

运行示例脚本:

python example_usage.py

该脚本提供了多个示例:

  1. OpenAI(GPT-4)使用情况
  2. 人类学(克劳德)用法
  3. 手动客户端管理
  4. 所有示例

可用工具

Playwright MCP服务器提供各种浏览器自动化工具。常用工具包括:

  • 导航: playwright_navigate, playwright_goto
  • 截图: playwright_screenshot
  • 页面交互: playwright_click, playwright_fill, playwright_type
  • 内容提取: playwright_evaluate, playwright_content
  • 还有更多:连接时自动发现

要查看所有可用工具,请执行以下操作:

async with create_playwright_mcp_client() as client:
    for tool in client.tools:
        print(f"{tool.name}: {tool.description}")

故障排除

“会话未初始化”错误

一定要打电话 await client.connect() 在使用客户端之前,或者使用上下文管理器。

“无可用工具”错误

确保MCP服务器正常运行。测试:

npx @playwright/mcp@latest

API关键错误

验证您的 .env 文件包含有效的API密钥,并且 load_dotenv() 被称为。

连接超时

MCP服务器可能需要一点时间才能启动。如果您遇到超时,请确保:

  • Node.js和npm已正确安装
  • 没有防火墙阻止npm/npx
  • @playwright/mcp@latest 可访问的

建筑

┌─────────────────┐
│   LangChain     │
│     Agent       │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  LangChain MCP  │
│     Client      │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│   MCP Session   │
│   (stdio)       │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Playwright MCP │
│     Server      │
│  (npx process)  │
└─────────────────┘

贡献

欢迎投稿!请随意:

  • 报告错误
  • 建议功能
  • 提交拉取请求

许可证

麻省理工学院许可证-请在您的项目中自由使用!

致谢

支持

对于问题或疑问:

  1. 检查故障排除部分
  2. 查看示例脚本
  3. 在GitHub上打开一个问题

自动化快乐! 🚀 #� �m�c�p�_�b�r�o�w�s�e�r� � �