这是一个 Node.js MCP 服务器,专门用于在 macOS 系统上借助 Safari 浏览器捕获网页截图。它能满足不同场景下的截图需求,为用户提供便捷的截图服务。
该工具使用简单,只需按照以下步骤操作,就能轻松在 macOS 上使用 Safari 进行截图。
在满足需求的环境下,使用以下命令进行安装:
npm install safari-screenshot
import { takeScreenshot } from './screenshot.js';
// 基本窗口截图
await takeScreenshot({
url: 'https://www.apple.com',
outputPath: './screenshot.png',
width: 1024, // 可选:窗口宽度(默认:1024)
height: 768, // 可选:窗口高度(默认:768)
waitTime: 3, // 可选:等待加载的时间(默认:3 秒)
zoomLevel: 1, // 可选:页面缩放级别(默认:1)
});
// 测试响应式设计
await takeScreenshot({
url: 'https://www.apple.com',
outputPath: './mobile.png',
width: 375, // iPhone SE 宽度
height: 667, // iPhone SE 高度
zoomLevel: 1,
});
// 高分辨率捕获
await takeScreenshot({
url: 'https://www.apple.com',
outputPath: './desktop-hd.png',
width: 1920, // 全高清宽度
height: 1080, // 全高清高度
waitTime: 5, // 等待更长时间以捕获 HD 内容
zoomLevel: 0.8, // 略微缩小
});
| 属性 | 详情 |
|---|---|
| url | 要捕获的 URL,必填项 |
| outputPath | 截图保存的位置,默认值为 ./screenshots/[hostname]-[timestamp].png |
| width | 窗口宽度(以像素为单位),默认值为 1024 |
| height | 窗口高度(以像素为单位),默认值为 768 |
| waitTime | 等待页面加载的秒数,默认值为 3 |
| zoomLevel | 页面缩放级别(1 = 100%),默认值为 1 |
该模块针对以下常见视口大小进行了测试:
take_screenshot 类型的请求时,MCP 服务器执行以下步骤:
seleniumWebDriver 控制 Safari 浏览器。echo '{"type":"discover"}' | npx -y ./server.js
期望的响应:
{
"type": "capabilities",
"tools": [
{
"name": "take_screenshot",
"parameters": ["url", "outputPath", "waitTime", "zoomLevel"]
}
]
}
echo '{"type":"execute","tool":"take_screenshot","input":"Take a screenshot of https://apple.com","requestId":"123"}' | npx -y ./server.js
期望的结果:
./screenshots/ 目录。如果遇到问题,可按以下步骤排查:
可以直接测试 MCP 实现:
# 测试发现
echo '{"type":"discover"}' | npx -y ./server.js
# 测试截图
echo '{"type":"execute","tool":"take_screenshot","input":"Take a screenshot of https://apple.com","requestId":"123"}' | npx -y ./server.js
期望的响应:
./screenshots/。该工具基于 Node.js 构建 MCP 服务器,利用 seleniumWebDriver 控制 Safari 浏览器进行截图操作。MCP 服务器通过与 Cursor 代理交互,实现功能发现和截图执行。在执行截图时,会根据用户配置的参数,打开指定 URL 的页面,等待页面加载完成后进行截图并保存。
本项目采用 MIT 许可证。