项目简介
本项目提供一个基于 Model Context Protocol (MCP) 的服务器实现,专注于通过 Playwright 框架为 LLM 客户端提供 Web 浏览器自动化能力。它可以让 LLM 代理执行导航网页、提取信息等任务,扩展 LLM 的实时信息获取和交互范围。服务器封装在 Docker 容器中,方便部署和管理。
主要功能点
- Web 浏览器自动化: 核心功能是利用 Playwright 在无头(headless)或有头模式下控制浏览器执行任务。
- MCP 工具注册: 将浏览器自动化操作(如安装浏览器、导航、获取页面内容)注册为 MCP 工具,供 LLM 客户端调用。
- Docker 封装: 将整个服务器及其依赖项打包在 Docker 镜像中,简化安装和运行过程。
- 支持 LLM 交互: 允许 LLM 代理通过标准 MCP 协议与浏览器进行交互,完成需要网页操作的任务。
安装步骤
- 安装 Docker: 确保您的系统已安装 Docker。
- 克隆仓库: 将项目仓库克隆到本地。
- 构建 Docker 镜像: 在项目根目录下执行以下命令构建 Docker 镜像:
docker build -t docker-playwright-mcp . - 运行 Docker 容器: 运行以下命令启动容器:
这将以后台模式运行容器,并映射必要的端口(尽管通常通过 Stdio 与 MCP 服务器交互,端口映射可能用于其他目的或未来的功能)。容器将被命名为 'playwright-mcp'。docker run -i --name playwright-mcp -p 8931:8931 -p 3000:3000 -p 6274:6274 --rm docker-playwright-mcp:latest - 启动 MCP 服务器进程: 在运行中的容器内部启动 MCP 服务器进程。通常,LLM 客户端会配置启动服务器的命令,如下方配置所示。如果需要手动测试或从容器内部启动,可以执行(请注意这里的用户'abc'是示例,可能需要根据Dockerfile实际情况调整):
请注意,为了让 MCP 客户端通过 Stdio 连接,通常客户端会直接执行一个命令来启动服务器进程,并与其标准输入输出进行通信。上面的 'docker exec ...' 命令就是客户端可能需要执行的命令。docker exec -u abc -w /app playwright-mcp './start-server.sh'
服务器配置 (供 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' 等)来完成任务,并将结果返回给您。
信息
分类
开发者工具