项目简介

本项目提供一个基于 Model Context Protocol (MCP) 的服务器实现,专注于通过 Playwright 框架为 LLM 客户端提供 Web 浏览器自动化能力。它可以让 LLM 代理执行导航网页、提取信息等任务,扩展 LLM 的实时信息获取和交互范围。服务器封装在 Docker 容器中,方便部署和管理。

主要功能点

  • Web 浏览器自动化: 核心功能是利用 Playwright 在无头(headless)或有头模式下控制浏览器执行任务。
  • MCP 工具注册: 将浏览器自动化操作(如安装浏览器、导航、获取页面内容)注册为 MCP 工具,供 LLM 客户端调用。
  • Docker 封装: 将整个服务器及其依赖项打包在 Docker 镜像中,简化安装和运行过程。
  • 支持 LLM 交互: 允许 LLM 代理通过标准 MCP 协议与浏览器进行交互,完成需要网页操作的任务。

安装步骤

  1. 安装 Docker: 确保您的系统已安装 Docker。
  2. 克隆仓库: 将项目仓库克隆到本地。
  3. 构建 Docker 镜像: 在项目根目录下执行以下命令构建 Docker 镜像:
    docker build -t docker-playwright-mcp .
  4. 运行 Docker 容器: 运行以下命令启动容器:
    docker run -i --name playwright-mcp -p 8931:8931 -p 3000:3000 -p 6274:6274 --rm docker-playwright-mcp:latest
    这将以后台模式运行容器,并映射必要的端口(尽管通常通过 Stdio 与 MCP 服务器交互,端口映射可能用于其他目的或未来的功能)。容器将被命名为 'playwright-mcp'。
  5. 启动 MCP 服务器进程: 在运行中的容器内部启动 MCP 服务器进程。通常,LLM 客户端会配置启动服务器的命令,如下方配置所示。如果需要手动测试或从容器内部启动,可以执行(请注意这里的用户'abc'是示例,可能需要根据Dockerfile实际情况调整):
    docker exec -u abc -w /app playwright-mcp './start-server.sh'
    请注意,为了让 MCP 客户端通过 Stdio 连接,通常客户端会直接执行一个命令来启动服务器进程,并与其标准输入输出进行通信。上面的 'docker exec ...' 命令就是客户端可能需要执行的命令。

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要配置如何启动和连接到此服务器。对于运行在 Docker 中的服务器并通过 Stdio 连接的情况,配置通常指向 'docker exec' 命令。以下是可能的 JSON 配置格式,请注意,客户端的配置界面通常是填写这些信息,而不是直接粘贴 JSON 代码块:

  • 'server name': 一个标识服务器的名称,例如 "Playwright Browser"
  • 'command': 用于启动服务器进程的命令的可执行文件路径,例如 'docker'
  • 'args': 传递给 'command' 的参数列表。对于通过 'docker exec' 启动容器内进程的情况,参数应包含 'exec' 子命令、连接参数、容器名称以及容器内实际启动服务器的命令。例如:
    • '"exec"': Docker 子命令
    • '"-i"': 使标准输入保持打开,用于 Stdio 连接
    • '"playwright-mcp"': 运行中的 Docker 容器名称 (与 'docker run' 命令中的 '--name' 一致)
    • '"./start-server.sh"': 容器内部启动 MCP 服务器的脚本或命令

示例配置概念(非实际 JSON 代码块):

{
  "server name": "Playwright Browser",
  "command": "docker",
  "args": [
    "exec",
    "-i",
    "playwright-mcp",
    "./start-server.sh"
  ]
}

重要提示: 客户端配置时,只需在对应的输入框中填入这些值即可,无需理解 JSON 格式。确保 Docker 容器 'playwright-mcp' 已经在运行。

基本使用方法

启动 Docker 容器并配置好 LLM 客户端连接到该 MCP 服务器后,您的 LLM 代理即可利用服务器提供的浏览器工具。例如,您可以向 LLM 提出需要网页浏览的任务,如:

  • "请帮我访问 example.com 并告诉我页面标题是什么?"
  • "在 goodreads.com 上查找最新的历史小说排行榜。"

LLM 代理会识别这些任务需要浏览器工具,然后通过 MCP 协议调用服务器注册的相应工具(如 'browser_install', 'navigate', 'getPageContent' 等)来完成任务,并将结果返回给您。

信息

分类

开发者工具