Peekaboo MCP 是一款 macOS 实用工具,它能像幽灵般迅速捕捉屏幕快照,并借助超自然的 AI 视觉洞察窗口内容。它赋予 AI 助手真正的视觉能力,让它们能像人类一样“看到”你所描述的内容,从而在 bug 排查、设计审查、数据可视化分析等场景中发挥重要作用。

将 Peekaboo 集成到你的 Agent 环境中:
{
"mcpServers": {
"peekaboo": {
"command": "npx",
"args": [
"-y",
"@steipete/peekaboo-mcp@beta"
],
"env": {
"PEEKABOO_AI_PROVIDERS": "ollama/llava:latest"
}
}
}
}
完成以上步骤后,Peekaboo 就会从数字世界中“现身”,准备好为你服务啦!👻
brew install ollama
你也可以访问 ollama.ai 下载 macOS 应用。
启动 Ollama 服务:
ollama serve
默认情况下,服务将在 http://localhost:11434 运行。
高性能设备推荐:LLaVA(Large Language and Vision Assistant)
# 下载最新版本的 LLaVA 模型(推荐)
ollama pull llava:latest
# 其他版本的 LLaVA 模型
ollama pull llava:7b-v1.6
ollama pull llava:13b-v1.6 # 更大、功能更强
ollama pull llava:34b-v1.6 # 最大、性能最强(需要大量内存)
低性能设备推荐:Qwen2-VL
# 下载 Qwen2-VL 7B 模型(性能与质量的平衡之选)
ollama pull qwen2-vl:7b
模型大小参考:
qwen2-vl:7b - 约 4GB 下载,约 6GB 内存要求(适合低配置设备)llava:7b - 约 4.5GB 下载,约 8GB 内存要求llava:13b - 约 8GB 下载,约 16GB 内存要求llava:34b - 约 20GB 下载,约 40GB 内存要求将 Ollama 配置到 Claude Desktop 中:
{
"mcpServers": {
"peekaboo": {
"command": "npx",
"args": [
"-y",
"@steipete/peekaboo-mcp@beta"
],
"env": {
"PEEKABOO_AI_PROVIDERS": "ollama/llava:latest"
}
}
}
}
低性能设备配置(使用 Qwen2-VL):
{
"mcpServers": {
"peekaboo": {
"command": "npx",
"args": [
"-y",
"@steipete/peekaboo-mcp@beta"
],
"env": {
"PEEKABOO_AI_PROVIDERS": "ollama/qwen2-vl:7b"
}
}
}
}
多 AI 提供商配置(Ollama + OpenAI):
{
"env": {
"PEEKABOO_AI_PROVIDERS": "ollama/llava:latest,openai/gpt-4o",
"OPENAI_API_KEY": "your-api-key-here"
}
}
验证 Ollama 是否正常运行:
# 检查 Ollama 服务状态
curl http://localhost:11434/api/tags
# 直接使用 Peekaboo 进行截图测试
./peekaboo image --app Finder --path ~/Desktop/finder.png
# 直接使用 Peekaboo 进行截图和分析测试(需要设置 PEEKABOO_AI_PROVIDERS 环境变量)
# 注意:CLI 本身不支持输入问题,这是 MCP 服务器的功能。
# MCP 服务器会先调用:./peekaboo image ... 获取图像
# 然后根据输入的问题调用 AI 提供商进行分析
Peekaboo 需要以下 macOS 权限才能正常工作:
操作步骤:
支持的应用:
/Applications/Utilities/Terminal.app/Applications/Claude.app/Applications/Visual Studio Code.app若要对窗口进行操作,需要授予此权限:
# 查看 Peekaboo 帮助信息
./peekaboo --help
# 检查服务器状态
./peekaboo list server_status --json-output
# 进行屏幕截图测试(需要权限)
./peekaboo image --mode screen --format png
# 启动 Peekaboo 服务
peekaboo-mcp
预期输出:
{
"success": true,
"data": {
"swift_cli_available": true,
"permissions": {
"screen_recording": true
},
"system_info": {
"macos_version": "14.0"
}
}
}
image - 屏幕捕获{
"tool_name": "image",
"arguments": {
"mode": "screen",
"path": "~/Desktop/myscreen.png",
"format": "png"
}
}
Peekaboo 会返回保存文件的详细信息。
{
"tool_name": "image",
"arguments": {
"app": "Finder",
"mode": "window",
"return_data": true,
"format": "jpg"
}
}
Peekaboo 会直接返回图像数据,方便 AI 分析,同时也会告知图像的保存位置(如果指定了路径)。
{
"tool_name": "image",
"arguments": {
"app": "Google Chrome",
"mode": "multi",
"capture_focus": "foreground",
"path": "~/Desktop/ChromeWindows/"
}
}
list - 信息列表{
"tool_name": "list",
"arguments": {
"item_type": "running_applications"
}
}
Peekaboo 会列出所有活动的应用程序及其 PID 等信息。
{
"tool_name": "list",
"arguments": {
"item_type": "application_windows",
"app": "Preview",
"include_window_details": ["bounds", "ids"]
}
}
{
"tool_name": "list",
"arguments": {
"item_type": "server_status"
}
}
analyze - 图像分析{
"tool_name": "analyze",
"arguments": {
"image_path": "~/Desktop/myscreen.png",
"question": "图像左上角的主要颜色是什么?"
}
}
Peekaboo 会调用 AI 进行分析,并返回分析结果。
{
"tool_name": "analyze",
"arguments": {
"image_path": "~/Desktop/some_diagram.jpg",
"question": "解释这个图表。",
"provider_config": {
"type": "ollama",
"model": "llava:13b-v1.6"
}
}
}
通过环境变量对 Peekaboo 进行高级配置:
{
"PEEKABOO_AI_PROVIDERS": "ollama/llava:latest,openai/gpt-4o",
"PEEKABOO_LOG_LEVEL": "debug",
"PEEKABOO_LOG_FILE": "~/Library/Logs/peekaboo-mcp-debug.log",
"PEEKABOO_DEFAULT_SAVE_PATH": "~/Pictures/PeekabooCaptures",
"PEEKABOO_CONSOLE_LOGGING": "true",
"PEEKABOO_CLI_PATH": "/opt/custom/peekaboo"
}
| 变量名 | 描述 | 默认值 |
|---|---|---|
PEEKABOO_AI_PROVIDERS |
逗号分隔的 provider_name/default_model_for_provider 列表,指定可用的 AI 提供商和默认模型。例如:"openai/gpt-4o,ollama/llava:7b"。推荐使用 ollama/llava:latest 以获得最佳视觉分析效果。 |
""(无) |
PEEKABOO_LOG_LEVEL |
日志级别(trace, debug, info, warn, error, fatal)。 | info |
PEEKABOO_LOG_FILE |
服务器日志文件路径。如果指定目录不可写,将使用系统临时目录。 | ~/Library/Logs/peekaboo-mcp.log |
PEEKABOO_DEFAULT_SAVE_PATH |
image 工具保存图像的默认绝对路径。如果 image 工具指定了 path 参数,则优先使用该参数。如果两者都未设置,Swift CLI 将使用临时目录。 |
(无,Swift CLI 使用临时路径) |
PEEKABOO_OLLAMA_BASE_URL |
Ollama API 服务器的基础 URL。仅当 Ollama 运行在非默认地址时需要设置。 | http://localhost:11434 |
PEEKABOO_CONSOLE_LOGGING |
是否在控制台输出日志("true"/"false")。 |
"false" |
PEEKABOO_CLI_PATH |
可选参数,指定 Swift peekaboo CLI 可执行文件的路径。 |
(使用捆绑的 CLI) |
PEEKABOO_AI_PROVIDERS 环境变量是配置 Peekaboo 分析功能的关键,它决定了 analyze 工具和 image 工具(当提供 question 参数时)使用的 AI 提供商和模型。格式为逗号分隔的 provider_name/model_identifier 字符串,例如:
PEEKABOO_AI_PROVIDERS="ollama/llava:latest,openai/gpt-4o,anthropic/claude-3-haiku-20240307"
provider_name:目前支持 ollama(本地 Ollama 实例)和 openai,计划支持 anthropic。model_identifier:指定提供商使用的具体模型,如 llava:latest、gpt-4o。analyze 工具和 image 工具(当提供 question 参数时)会根据该配置尝试使用 AI 提供商。如果 provider_config 参数设置为 "auto"(analyze 工具默认,image 工具可选),Peekaboo 会按顺序尝试 PEEKABOO_AI_PROVIDERS 中的提供商,检查所需的 API 密钥(如 OPENAI_API_KEY)或服务可用性(如 Ollama 是否在 http://localhost:11434 或 PEEKABOO_OLLAMA_BASE_URL 指定的地址运行)。
你可以通过 analyze 或 image 工具的 provider_config 参数覆盖模型选择或指定特定的提供商。系统会验证其是否可用,如 API 密钥是否存在或服务是否运行。
# 克隆仓库
git clone https://github.com/steipete/peekaboo.git
cd peekaboo
# 安装依赖
npm install
# 编译 TypeScript 代码
npm run build
# 编译 Swift CLI
cd peekaboo-cli
swift build -c release
# 复制可执行文件
cp .build/release/peekaboo ../peekaboo
# 返回项目根目录
cd ..
# 可选:全局安装
npm link
然后将 Peekaboo 配置到 Claude Desktop 或其他 MCP 客户端:
使用全局安装的配置示例:
{
"mcpServers": {
"peekaboo_local": {
"command": "peekaboo-mcp",
"args": [],
"env": {
"PEEKABOO_LOG_LEVEL": "debug",
"PEEKABOO_CONSOLE_LOGGING": "true"
}
}
}
}
使用 node 直接运行的配置示例:
{
"mcpServers": {
"peekaboo_local_node": {
"command": "node",
"args": [
"/Users/steipete/Projects/Peekaboo/dist/index.js"
],
"env": {
"PEEKABOO_LOG_LEVEL": "debug",
"PEEKABOO_CONSOLE_LOGGING": "true"
}
}
}
}
请将 /Users/steipete/Projects/Peekaboo/dist/index.js 替换为你本地项目的实际路径。同时,使用本地配置时,请确保在 MCP 客户端的服务器列表中使用唯一的键(如 "peekaboo_local" 或 "peekaboo_local_node"),以避免与 npx 安装的 "peekaboo" 服务器冲突。
# 直接运行 AppleScript
osascript peekaboo.scpt
此方法仅提供简单的截图功能,不支持 MCP 集成和 AI 分析。
{
"server": {
"command": "node",
"args": ["/path/to/peekaboo/dist/index.js"],
"env": {
"PEEKABOO_AI_PROVIDERS": "ollama/llava,openai/gpt-4o"
}
}
}
Peekaboo/
├── src/ # Node.js MCP Server (TypeScript)
│ ├── index.ts # 主 MCP 服务器入口
│ ├── tools/ # 工具实现
│ │ ├── image.ts # 屏幕捕获工具
│ │ ├── analyze.ts # AI 分析工具
│ │ └── list.ts # 应用/窗口列表工具
│ ├── utils/ # 工具模块
│ │ ├── peekaboo-cli.ts # Swift CLI 集成
│ │ ├── ai-providers.ts # AI 提供商管理
│ │ └── server-status.ts # 服务器状态工具
│ └── types/ # 共享类型定义
├── peekaboo-cli/ # 原生 Swift CLI
│ └── Sources/peekaboo/ # Swift 源代码
│ ├── main.swift # CLI 入口
│ ├── ImageCommand.swift # 图像捕获实现
│ ├── ListCommand.swift # 应用列表实现
│ ├── Models.swift # 数据结构
│ ├── ApplicationFinder.swift # 应用发现逻辑
│ ├── WindowManager.swift # 窗口管理
│ ├── PermissionsChecker.swift # macOS 权限检查
│ └── JSONOutput.swift # JSON 响应格式化
├── package.json # Node.js 依赖
├── tsconfig.json # TypeScript 配置
└── README.md # 本文件
Swift CLI 在使用 --json-output 参数时会输出结构化的 JSON 数据:
{
"success": true,
"data": {
"applications": [
{
"app_name": "Safari",
"bundle_id": "com.apple.Safari",
"pid": 1234,
"is_active": true,
"window_count": 2
}
]
},
"debug_logs": ["Found 50 applications"]
}
Node.js 服务器负责在 MCP 的 JSON-RPC 协议和 Swift CLI 的 JSON 输出之间进行转换,提供以下功能:
Peekaboo 严格遵守 macOS 安全机制:
本项目采用 MIT 许可证,详细信息请参考 LICENSE 文件。
如果你想为 Peekaboo 贡献代码,可以按照以下步骤操作:
git checkout -b feature/amazing-feature)。git commit -m 'Add amazing feature')。git push origin feature/amazing-feature)。Peekaboo 作为 MCP 服务器运行时,提供以下工具:
image:捕获 macOS 屏幕内容。
question 和 provider_config 参数,对捕获的图像进行即时分析,并返回分析结果和图像详细信息。如果提供了问题,图像文件将是临时的,分析完成后会删除,除非指定了 path 参数。提问时,不会返回图像数据(Base64)。docs/spec.md。analyze:使用配置好的 AI 模型分析现有图像文件。
PEEKABOO_AI_PROVIDERS 和 provider_config 配置的 AI 提供商。docs/spec.md。list:列出系统信息,如运行的应用程序、特定应用的窗口或服务器状态。
docs/spec.md。🎃 Peekaboo 随时等待你的指令!它就像一座桥梁,连接 macOS 的隐藏 API 和 Node.js 的强大功能,让你能够轻松捕获屏幕内容并深入分析。祝你使用愉快!👻