Puppeteer截图服务

一个轻量级的Docker化HTTP服务器,运行无头模式的Puppeteer,提供MCP兼容接口,适用于OpenWebUI环境。

  • by gamersalpha
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 gamersalpha/puppeteer-mcp-server

使用说明

🧠 木偶MCP服务器

一个轻量级的、Docker化的HTTP服务器,在无头模式下运行Puppeter,并公开一个与模型上下文协议(MCP)兼容的接口,用于 mcpo 以及OpenWebUI环境。


🚀 特性

  • 📸 屏幕截图端点 通过Puppeteer(无头铬)
  • 🔌 HTTP API 与MCP协议兼容
  • 🧾 OpenAPI模式 服务于 /schema.json
  • 🐳 在一个自给自足的环境中运行 Docker容器
  • 🔁 已准备好与集成 mcpo 在 OpenWebUI

🧱 堆栈

  • Node.js 20(Alpine)
  • 木偶23+
  • Express.js
  • Docker与Docker组合

📦 API终点

GET /schema.json

返回用于客户端发现的MCP兼容OpenAPI模式。

POST /screenshot

请求:

{
  "url": "https://example.com"
}

答复:

  • 200 OK –捕获的网页的PNG图像

🐳 Docker使用

构建并运行:

docker compose build --no-cache
docker compose up

该服务将在以下地点提供:

http://localhost:9555

测试截图端点:

curl -X POST http://localhost:9555/screenshot \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}' --output screenshot.png

🔐 环境变量

变量 默认值 说明
PUPPETEER_EXECUTABLE_PATH /usr/bin/chromium-browser 通往Chromium二进制的道路

🧪 健康检查

Docker容器包含一个健康检查,ping /schema.json 以验证服务器状态。


📁 项目结构

.
├── Dockerfile
├── docker-compose.yml
├── package.json
├── package-lock.json
├── server.js
├── schema.json
└── .gitignore

📈 未来发展

✅ = 事实
🟡 = 正在进行/计划中

  • ✅ 轻量级和可重复的Dockerisation
  • ✅ 主控程序 schema.json 暴露
  • ✅ 屏幕截图通过 POST /screenshot
  • 🟡 添加 /pdf 将页面导出为PDF
  • 🟡 添加 /html 返回完整的DOM
  • 🟡 支持 @modelcontextprotocol/sdk (如果可用)
  • 🟡 添加端点 GET / (状态/信息)
  • 🟡 添加批处理模式(多URL)
  • 🟡 添加结构化JSON日志系统
  • 🟡 Redis集成或队列(长任务)
  • 🟡 Docker GHCR自动映像构建
  • 🟡 添加单元测试+CI GitHub操作

📜 许可证

麻省理工学院——随心所欲🤝
由维护 @gamersalpa