Token导航 LogoToken导航TokenDH.com
PeepIt MCP logo
运维云端未说明官方级别未说明来源级核验

PeepIt MCP

MCP Server

PeepIt是一款专为macOS设计的屏幕截图工具,支持快速捕获屏幕、应用或窗口截图,并可通过AI模型进行分析。适用于AI助手、开发调试和视觉内容分析等场景。

工具数

0

提示词数

0

GitHub Stars

2

资源数

0
开发工具TypeScriptClaudeClaude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

MantisWare

提供方

MantisWare

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

PeepIt MCP:AI代理的闪电般快速的macOS屏幕截图

PeepIt Banner

](https://www.npmjs.com/package/@mantisware/peepit-mcp) ![License: MIT](https://opensource.org/licenses/MIT) ![macOS](https://www.apple.com/macos/) ](https://nodejs.org/)

______________________________________________________________________

PeepIt:因为你的AI值得看到你所看到的

有没有希望你的人工智能助手能 *看* 在你的屏幕上,得到它?PeepIt是来赋予你的数字伙伴视觉天赋的——不需要魔杖。无论你是在调试UI,在野外捕捉bug,还是只是想知道那个神秘窗口背后潜伏着什么,PeepIt都会支持你(和你的屏幕)。

PeepIt是什么?

PeepIt是一个仅支持macOS的MCP服务器,它允许AI代理捕获您的应用程序、窗口或整个系统的屏幕截图,然后使用本地或基于云的AI模型进行分析。这就像给你的人工智能一副眼镜和一个放大镜,集两者于一身。

  • 截图 任何东西:整个屏幕、一个应用程序,或者你永远找不到的一个窗口
  • 分析视觉内容 使用AI视觉模型(本地或云端——由您决定)
  • 列出正在运行的应用程序和窗口 用于激光靶向捕获
  • 非侵入性工作--没有窗口焦点窃取,没有工作流程中断,没有戏剧性

主要特点

  • 🚀 快速且非侵入性:眨眼,你会错过的——PeepIt使用苹果的ScreenCaptureKit进行闪电般快速的截图,所有这些都不会劫持你的窗口焦点或打断你的节奏。
  • 🎯 智能窗口定位:模糊匹配非常精确,即使你只记得它名字的一半(我们都去过那里),它也会找到正确的窗口。
  • 🤖 AI驱动的分析问一些关于你的截图的问题,并从GPT-4o、Claude或当地模特那里得到答案——因为有时你需要第二双(机器人)眼睛。
  • 🔒 隐私第一:喜欢低调行事吗?与Ollama一起在本地运行所有内容,或者只在真正需要时调用云骑兵。
  • 📦 简易安装:通过Cursor一键安装,或者只是一个快速的npm/npx咒语——不需要神秘的仪式。
  • 🛠️ 开发者友好:干净的JSON API、TypeScript支持和日志如此全面,你会怀疑PeepIt是否在秘密写回忆录。

______________________________________________________________________

安装

需求

  • macOS 14.0+ (索诺玛或更高版本)
  • Node.js 20.0+
  • 屏幕录制权限 (别担心,系统会提示您——无需在系统设置中进行洞穴探险)

快速开始

用于游标IDE

或者手动添加到光标设置中:

{
  "mcpServers": {
    "peepit": {
      "command": "npx",
      "args": [
        "-y",
        "@mantisware/peepit-mcp"
      ],
      "env": {
        "PEEPIT_AI_PROVIDERS": "openai/gpt-4o,ollama/llava:latest",
        "OPENAI_API_KEY": "your-openai-api-key-here"
      },
      "toolCallTimeoutMillis": 120000
    }
  }
}

适用于克劳德桌面

编辑您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

添加PeepIt配置(复制、粘贴,就完成了AI视觉的一半):

{
  "mcpServers": {
    "peepit": {
      "command": "npx",
      "args": [
        "-y",
        "@mantisware/peepit-mcp"
      ],
      "env": {
        "PEEPIT_AI_PROVIDERS": "openai/gpt-4o,ollama/llava:latest",
        "OPENAI_API_KEY": "your-openai-api-key-here"
      }
    }
  }
}

然后重新启动Claude Desktop。(是的,您确实需要重新启动它。我们已经检查过了。)

配置

PeepIt与您最喜欢的文本编辑器一样可配置。使用环境变量将其调整到您的工作流程:

{
  "PEEPIT_AI_PROVIDERS": "openai/gpt-4o,ollama/llava:latest",
  "OPENAI_API_KEY": "your-openai-api-key-here",
  "PEEPIT_LOG_LEVEL": "debug",
  "PEEPIT_LOG_FILE": "~/Library/Logs/peepit-mcp-debug.log",
  "PEEPIT_DEFAULT_SAVE_PATH": "~/Pictures/PeepItCaptures",
  "PEEPIT_CONSOLE_LOGGING": "true",
  "PEEPIT_CLI_TIMEOUT": "30000",
  "PEEPIT_CLI_PATH": "/opt/custom/peepit"
}

可用环境变量

变量描述默认值
PEEPIT_AI_PROVIDERS谁是你的AI?列出图像分析的提供者(请参见 AI分析)."" (残疾)
PEEPIT_LOG_LEVELPeepIt应该有多健谈?(跟踪、调试、信息、警告、错误、致命)info
PEEPIT_LOG_FILE把原木藏在哪里。如果目录不可写,PeepIt会找到一个舒适的临时文件夹。~/Library/Logs/peepit-mcp.log
PEEPIT_DEFAULT_SAVE_PATH当您未指定路径时,屏幕截图的默认目录。系统临时目录
PEEPIT_OLLAMA_BASE_URL你的Ollama API在哪里?只有当它不在通常的位置时才需要。http://localhost:11434
PEEPIT_CONSOLE_LOGGING想要登录您的主机吗?吃起来 "true" 为了获得最大程度的过度分享"false"
PEEPIT_CLI_TIMEOUTSwift CLI魔术等待多长时间(ms)。30000 (30秒)
PEEPIT_CLI_PATHSwift的自定义路径 peepit CLI,如果你喜欢的话。(使用捆绑的CLI)

AI提供者配置

PEEPIT_AI_PROVIDERS 变量是您进行AI驱动的屏幕截图分析的金奖券。想让PeepIt回答有关屏幕的问题吗?只需列出您最喜欢的模特:

PEEPIT_AI_PROVIDERS="openai/gpt-4o,ollama/llava:latest,anthropic/claude-3-haiku-20240307"

或者,如果你是分号鉴赏家:

PEEPIT_AI_PROVIDERS="openai/gpt-4o;ollama/llava:latest;anthropic/claude-3-haiku-20240307"

每个条目都是 provider_name/model_identifier.支持的提供商: ollama (对于本地), openai (对于云),很快, anthropic (适合真正喜欢冒险的人)。

PeepIt将按顺序尝试提供程序,根据需要检查API密钥或本地服务。如果你觉得特别,可以根据请求覆盖模型。

与Ollama建立本地AI

Ollama将AI愿景带到您的桌面上——无需云,无需数据离开您的Mac。(你的秘密是安全的。也许吧。)

安装Ollama

brew install ollama
# Or download from https://ollama.ai
ollama serve

下载视觉模型

对于结实的机器:

ollama pull llava:latest
ollama pull llava:7b-v1.6
ollama pull llava:13b-v1.6  # For the RAM-rich
ollama pull llava:34b-v1.6  # For the RAM-obsessed

对于较轻的笔记本电脑:

ollama pull qwen2-vl:7b

型号尺寸指南:

  • qwen2-vl:7b -~4GB下载,~6GB RAM(非常适合凡人)
  • llava:7b -约4.5GB下载,约8GB RAM
  • llava:13b -~8GB下载,~16GB RAM
  • llava:34b -~20GB下载,~40GB RAM(带零食)

使用Olama配置PeepIt

将Ollama添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "peepit": {
      "command": "npx",
      "args": [
        "-y",
        "@mantisware/peepit-mcp@beta"
      ],
      "env": {
        "PEEPIT_AI_PROVIDERS": "ollama/llava:latest"
      }
    }
  }
}

对于较轻的机器:

{
  "mcpServers": {
    "peepit": {
      "command": "npx",
      "args": [
        "-y",
        "@mantisware/peepit-mcp@beta"
      ],
      "env": {
        "PEEPIT_AI_PROVIDERS": "ollama/qwen2-vl:7b"
      }
    }
  }
}

混合搭配AI提供商:

{
  "env": {
    "PEEPIT_AI_PROVIDERS": "ollama/llava:latest,openai/gpt-4o",
    "OPENAI_API_KEY": "your-api-key-here"
  }
}

______________________________________________________________________

macOS权限

PeepIt需要一些macOS权限才能发挥其魔力。别担心,它不会要求您输入Netflix密码。

1.屏幕录制权限(必填)

macOS红杉(15.0+):

  1. 系统设置→ 隐私和安全
  2. 滚动到屏幕和系统录音
  3. 打开终端或MCP客户端
  4. 重新启动应用程序(是,再次)

macOS Sonoma(14.0)及更早版本:

  1. 系统首选项→ 安全与隐私→ 隐私
  2. 选择屏幕录制
  3. 点击锁,输入密码
  4. 添加您的终端或MCP客户端
  5. 重新启动应用程序

需要权限的应用程序:

  • 打开终端
  • 克劳德桌面
  • VS代码
  • 光标

2.无障碍权限(可选,但很好)

macOS红杉(15.0+):

  1. 系统设置→ 隐私和安全→ 无障碍
  2. 打开终端/MCP客户端

macOS Sonoma(14.0)及更早版本:

  1. 系统首选项→ 安全与隐私→ 隐私
  2. 选择辅助功能
  3. 添加您的终端/MCP客户端

______________________________________________________________________

测试与调试

使用MCP检查器

想看看PeepIt的表演吗?点火 MCP检查员:

# Test with OpenAI
OPENAI_API_KEY="your-key" PEEPIT_AI_PROVIDERS="openai/gpt-4o" npx @modelcontextprotocol/inspector npx -y @mantisware/peepit-mcp

# Test with local Ollama
PEEPIT_AI_PROVIDERS="ollama/llava:latest" npx @modelcontextprotocol/inspector npx -y @mantisware/peepit-mcp

直接CLI测试

./peepit --help
./peepit list server_status --json-output
./peepit image --mode screen --format png
peepit-mcp

预期产量:

{
  "success": true,
  "data": {
    "swift_cli_available": true,
    "permissions": {
      "screen_recording": true
    },
    "system_info": {
      "macos_version": "14.0"
    }
  }
}

______________________________________________________________________

可用工具

PeepIt为你提供了三个主要工具——把它们想象成你的人工智能的瑞士军刀:

1. image -捕获屏幕截图

捕捉Mac的屏幕截图——屏幕、应用程序或窗口。阴影和框架?跑了。(不客气。)

注: 屏幕截图总是保存到文件中(巨型图像没有Base64,你的堆栈不会喜欢它)。如果你要求 format: "data",PeepIt会礼貌地忽略你,并保存一个PNG,同时发出温和的警告。

示例:

// Capture entire screen
await use_mcp_tool("peepit", "image", {
  app_target: "screen:0",
  path: "~/Desktop/screenshot.png"
});

// Capture a specific app window and analyze it
await use_mcp_tool("peepit", "image", {
  app_target: "Safari",
  question: "What website is currently open?",
  format: "data"
});

// Capture window by title
await use_mcp_tool("peepit", "image", {
  app_target: "Notes:WINDOW_TITLE:Meeting Notes",
  path: "~/Desktop/notes.png"
});

// Capture the frontmost window
await use_mcp_tool("peepit", "image", {
  app_target: "frontmost",
  format: "png"
});

// Capture by Process ID
await use_mcp_tool("peepit", "image", {
  app_target: "PID:663",
  path: "~/Desktop/process.png"
});

浏览器帮助程序筛选: PeepIt足够聪明,可以避免浏览器助手进程(不再有“谷歌Chrome助手(渲染器)”恶作剧)。你会得到真正的浏览器窗口,或者一条清晰的消息,如果它没有运行。

文件命名和路径行为:

  • 单次捕获? 您的路径按原样使用。
  • 多次捕获? PeepIt将元数据添加到文件名中,因此不会覆盖任何内容。
  • 目录路径? PeepIt为您生成唯一的名称。
  • 长文件名? PeepIt将它们修剪为符合macOS 255字节的限制,保持表情符号和非拉丁文字的完整性。
  • 格式无效? 只允许使用PNG和JPEG。其他任何东西都会被转换,并发出友好的警告。

2. list -系统信息

列出正在运行的应用程序、窗口或检查服务器状态。因为有时候你只需要知道外面有什么。

示例:

// List all running apps
await use_mcp_tool("peepit", "list", {
  item_type: "running_applications"
});

// List windows of a specific app
await use_mcp_tool("peepit", "list", {
  item_type: "application_windows",
  app: "Preview"
});

// List windows by PID
await use_mcp_tool("peepit", "list", {
  item_type: "application_windows",
  app: "PID:663"
});

// Check server status
await use_mcp_tool("peepit", "list", {
  item_type: "server_status"
});

3. analyze -AI视觉分析

向你的AI输入一张图片,并询问任何问题。(好吧,几乎任何东西。)

示例:

// Analyze with auto-selected provider
await use_mcp_tool("peepit", "analyze", {
  image_path: "~/Desktop/screenshot.png",
  question: "What applications are visible?"
});

// Force a specific provider
await use_mcp_tool("peepit", "analyze", {
  image_path: "~/Desktop/diagram.jpg",
  question: "Explain this diagram",
  provider_config: {
    type: "ollama",
    model: "llava:13b"
  }
});

______________________________________________________________________

测试

PeepIt附带了大量的测试:

TypeScript测试

  • 单元测试:对于喜欢独处的代码
  • 集成测试:用于与他人配合良好的代码
  • 平台特定测试:有些测试需要macOS和Swift二进制文件
npm test                # Run all tests (macOS required for full suite)
npm run test:unit       # Unit tests only (any platform)
npm run test:typescript # TypeScript-only tests (Linux-friendly)
npm run test:typescript:watch # Watch mode
npm run test:coverage   # With coverage

Swift测试

npm run test:swift      # Swift CLI tests (macOS only)
npm run test:integration # Full integration (TypeScript + Swift)

平台支持

  • macOS:所有测试
  • Linux/CI:仅支持TypeScript(跳过Swift测试)
  • 环境变量:

- SKIP_SWIFT_TESTS=true:跳过Swift测试 - CI=true:自动跳过Swift测试

______________________________________________________________________

故障排除

闹鬼驱魔
Permission denied 在捕获过程中授予屏幕录制权限。重新启动应用程序。
窗口捕获问题授予辅助功能权限以实现更可靠的定位。
Swift CLI unavailable确保 peepit 二进制文件存在并且可执行。如有需要,进行重建。
AI analysis failed检查您的人工智能提供商配置和API密钥。确保本地服务正在运行。查看日志以了解详细信息。
Command not found: peepit-mcp确保你的PATH包含npm二进制文件,或者使用正确的命令。
总体怪异检查日志!集 PEEPIT_LOG_LEVEL=debug 为了获得最大的细节。

调试模式

OPENAI_API_KEY="your-key" PEEPIT_AI_PROVIDERS="openai/gpt-4o" PEEPIT_LOG_LEVEL=debug PEEPIT_CONSOLE_LOGGING=true npx @mantisware/peepit-mcp
./peepit list server_status --json-output

获取帮助

______________________________________________________________________

从源头构建

开发设置

git clone https://github.com/mantisware/peepit.git
cd peepit
npm install
npm run build
cd peepit-cli
swift build -c release
cp .build/release/peepit ../peepit
cd ..
npm link # Optional: install globally

本地开发配置

对于本地开发人员:

{
  "mcpServers": {
    "peepit_local": {
      "command": "peepit-mcp",
      "args": [],
      "env": {
        "PEEPIT_LOG_LEVEL": "debug",
        "PEEPIT_CONSOLE_LOGGING": "true"
      }
    }
  }
}

或者,直接与 node:

{
  "mcpServers": {
    "peepit_local_node": {
      "command": "node",
      "args": [
        "/Users/mantisware/Projects/PeepIt/dist/index.js"
      ],
      "env": {
        "PEEPIT_LOG_LEVEL": "debug",
        "PEEPIT_CONSOLE_LOGGING": "true"
      }
    }
  }
}

使用绝对路径和唯一的服务器名称以避免混淆。

AppleScript版本(旧版)

对于老校友来说:

osascript peepit.scpt

*注意:此版本中没有AI分析或MCP功能。*

其他MCP客户端的手动配置

{
  "server": {
    "command": "node",
    "args": ["/path/to/peepit/dist/index.js"],
    "env": {
      "PEEPIT_AI_PROVIDERS": "openai/gpt-4o,ollama/llava",
      "OPENAI_API_KEY": "your-openai-api-key-here"
    }
  }
}

______________________________________________________________________

工具文档

image -屏幕截图

捕获Mac的屏幕,并可选择对其进行分析。阴影和边框会自动消除。

参数:

  • app_target (字符串,可选):指定捕获目标。如果省略或为空,则捕获所有屏幕。

- 示例: - "screen:INDEX":在指定的从零开始的索引处捕获屏幕(例如。, "screen:0").(注意:Swift CLI计划全面支持从多个屏幕中选择索引)。 - "frontmost":捕获当前活动应用程序的最前面窗口。 - "AppName":捕获名为的应用程序的所有窗口 AppName (例如。, "Safari", "com.apple.Safari").使用模糊匹配。 - "PID:ProcessID":捕获具有指定进程ID的应用程序的所有窗口(例如。, "PID:663").当同一应用程序的多个实例正在运行时很有用。 - "AppName:WINDOW_TITLE:Title":捕获窗口 AppName 具有指定 Title (例如。, "Notes:WINDOW_TITLE:My Important Note"). - "AppName:WINDOW_INDEX:Index":捕获窗口 AppName 在指定的从零开始 Index (例如。, "Preview:WINDOW_INDEX:0" 用于预览的最前面窗口)。

  • path (字符串,可选):保存捕获图像的基本绝对路径。如果 format"data"path 图像将保存到此路径(作为PNG)并返回Base64数据。如果a question 提供和 path 省略,使用临时路径进行捕获,并在分析后删除文件。
  • question (string,可选):如果提供,将分析捕获的图像。服务器会自动从中配置的AI提供者中选择一个 PEEPIT_AI_PROVIDERS 环境变量。
  • format (字符串,可选,默认值: "png"):指定输出图像格式或数据返回类型。

- "png""jpg":将图像保存到指定位置 path 以所选格式。对于应用程序捕获:如果 path 未提供,行为类似 "data"。对于屏幕截图:始终保存到文件。 - "data":直接在MCP响应中返回图像的Base64编码PNG数据。如果 path 如果还指定了PNG文件,则也会将其保存到该文件中 path. 注意:屏幕截图不能使用此格式,将自动回退为PNG文件格式。 - 无效值(空字符串、null或无法识别的格式)会自动回退到 "png".

  • capture_focus (字符串,可选,默认值: "background"):控制捕获期间的窗口焦点行为。

- "background":捕获时不更改当前窗口焦点(默认)。 - "foreground":尝试在捕获之前将目标应用程序/窗口置于前台。这对于某些应用程序可能是必要的,或者在多个窗口打开的情况下确保捕获特定窗口。

行为与 question (AI分析):

  • 如果a question 如果提供,该工具将捕获图像(将其保存到 path 如果指定则为临时路径)。
  • 然后将此图像发送到AI模型进行分析。AI提供者和模型由服务器根据您的 PEEPIT_AI_PROVIDERS 环境变量(按顺序尝试它们,直到成功为止)。
  • 分析结果返回为 analysis_text 在回应中。图像数据(Base64)不会返回到 content 当一个问题被问到时,数组。
  • 如果图像使用了临时路径,则会在分析尝试后将其删除。

输出结构(简化):

  • content:可以包含 ImageContentItem (如果 format: "data"path 省略了,没有 question)和/或 TextContentItem (用于总结、分析文本、警告)。
  • saved_files:对象数组,每个对象详细说明一个保存到的文件 path (如果 path 已提供)。
  • analysis_text:来自AI的文本(如果 question 被问到)。
  • model_used:AI模型标识符(如果 question 被问到)。

有关详细的参数文档,请参阅 docs/spec.md.

______________________________________________________________________

文件命名和路径行为

PeepIt智能地管理输出路径,以防止文件覆盖,同时尊重您的意图:

关键原则:单次拍摄与多次拍摄

当您提供特定的文件路径时(例如。, ~/Desktop/screenshot.png),PeepIt根据捕获上下文确定是完全使用它还是添加元数据:

  1. 单次捕获→ 精确路径

- 捕获一个特定窗口 - 捕获一个特定屏幕(当只有一个显示器存在时) - 捕捉与 app_target: "frontmost" - 您的路径完全按照指定使用

  1. 多次捕获→ 已添加元数据

- 捕获应用程序的所有窗口(mode: "multi" 或存在多个窗口) - 捕获所有屏幕(当存在多个显示器时) - 在没有特定目标的情况下进行捕获(默认为所有屏幕) - 附加元数据以防止覆盖

示例:

// SINGLE CAPTURES - Use exact path
// ================================

// One window of Safari
await use_mcp_tool("peepit", "image", {
  app_target: "Safari",
  path: "~/Desktop/browser.png"
});
// Result: ~/Desktop/browser.png ✓

// Specific screen (when you have only one monitor)
await use_mcp_tool("peepit", "image", {
  app_target: "screen:0",
  path: "~/Desktop/myscreen.png"
});
// Result: ~/Desktop/myscreen.png ✓

// Frontmost window
await use_mcp_tool("peepit", "image", {
  app_target: "frontmost",
  path: "~/Desktop/active.png"
});
// Result: ~/Desktop/active.png ✓

// MULTIPLE CAPTURES - Add metadata
// ================================

// All windows of Safari (mode: multi)
await use_mcp_tool("peepit", "image", {
  app_target: "Safari",
  mode: "multi",
  path: "~/Desktop/browser.png"
});
// Results: ~/Desktop/browser_Safari_window_0_20250610_120000.png
//          ~/Desktop/browser_Safari_window_1_20250610_120000.png

// All screens (multiple monitors)
await use_mcp_tool("peepit", "image", {
  app_target: "screen",  // or omit app_target
  path: "~/Desktop/monitor.png"
});
// Results: ~/Desktop/monitor_1_20250610_120000.png
//          ~/Desktop/monitor_2_20250610_120000.png

// DIRECTORY PATHS - Always use generated names
// ============================================

// Directory path (note trailing slash)
await use_mcp_tool("peepit", "image", {
  app_target: "Safari",
  path: "~/Desktop/screenshots/"
});
// Result: ~/Desktop/screenshots/Safari_20250610_120000.png

长文件名保护:

PeepIt自动处理文件系统限制:

  • 截断超过macOS 255字节限制的文件名
  • 保留UTF-8多字节字符(表情符号、非拉丁文字)
  • 确保在需要时始终包含元数据
  • 从不创建无效的文件名

例子:

// Very long filename with emoji
await use_mcp_tool("peepit", "image", {
  app_target: "Safari",
  path: "~/Desktop/" + "🎯".repeat(100) + "_screenshot.png"
});
// Result: Filename safely truncated to fit 255-byte limit
//         while preserving valid UTF-8 characters

格式验证:

  • 无效格式(“bmp”、“gif”、“tiff”等)会自动转换为PNG
  • 当格式更正发生时,您将收到一条明确的警告消息
  • 只有“png”和“jpg”/“jpeg”是有效格式

浏览器帮助程序筛选:

PeepIt在搜索常见浏览器(Chrome、Safari、Firefox、Edge、Brave、Arc、Opera)时会自动过滤掉浏览器助手进程。这可以防止在匹配“Google Chrome helper(渲染器)”等辅助进程而不是主浏览器应用程序时出现混淆错误。

示例:

// ✅ Finds main Chrome browser, not helpers
await use_mcp_tool("peepit", "image", {
  app_target: "Chrome"
});

// ❌ Old behavior: Could match "Google Chrome Helper (Renderer)"
//     Result: "no capturable windows were found" 
// ✅ New behavior: Finds "Google Chrome" or shows "Chrome browser is not running"

浏览器特定错误消息:

  • 而不是通用的“找不到应用程序”
  • 显示明确的消息,如“Chrome浏览器未运行或未找到”
  • 仅适用于浏览器标识符-其他应用程序正常工作

______________________________________________________________________

技术特性

  • 多显示器支持:每个显示器都有自己的聚光灯时刻
  • 智能应用定位:应用程序名称的模糊匹配
  • 多种格式:PNG、JPEG、WebP、HEIF
  • 自动命名:基于时间戳,无覆盖
  • 权限检查:没有意外
  • 应用程序列表:查看正在运行的内容
  • 窗口枚举:列出应用程序的所有窗口
  • PID定位:对于痴迷于过程的人
  • 状态监测:知道什么是活动的
  • 提供者不可知:Ollama、OpenAI和即将推出的Anthropic
  • 自然语言:询问有关图像的问题
  • 可配置的:基于环境
  • 后备支援:提供程序之间的自动故障转移

______________________________________________________________________

建筑

PeepIt/
├── src/                      # Node.js MCP Server (TypeScript)
│   ├── index.ts             # Main MCP server entry point
│   ├── tools/               # Individual tool implementations
│   │   ├── image.ts         # Screen capture tool
│   │   ├── analyze.ts       # AI analysis tool  
│   │   └── list.ts          # Application/window listing
│   ├── utils/               # Utility modules
│   │   ├── peepit-cli.ts   # Swift CLI integration
│   │   ├── ai-providers.ts  # AI provider management
│   │   └── server-status.ts # Server status utilities
│   └── types/               # Shared type definitions
├── peepit-cli/            # Native Swift CLI
│   └── Sources/peepit/    # Swift source files
│       ├── main.swift       # CLI entry point
│       ├── ImageCommand.swift    # Image capture implementation
│       ├── ListCommand.swift     # Application listing
│       ├── Models.swift          # Data structures
│       ├── ApplicationFinder.swift   # App discovery logic
│       ├── WindowManager.swift      # Window management
│       ├── PermissionsChecker.swift # macOS permissions
│       └── JSONOutput.swift        # JSON response formatting
├── package.json             # Node.js dependencies
├── tsconfig.json           # TypeScript configuration
└── README.md               # This file

______________________________________________________________________

技术细节

JSON输出格式

Swift CLI在调用时输出结构化JSON --json-output:

{
  "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"]
}

MCP集成

Node.js服务器提供:

  • 通过Zod进行模式验证
  • 正确的MCP错误代码
  • 通过Pino进行结构化日志记录
  • 完全TypeScript类型安全

安全

PeepIt尊重macOS的安全性:

  • 操作前检查权限
  • 妥善处理缺失的权限
  • 权限设置的明确指导

______________________________________________________________________

发展

测试命令

./peepit list apps --json-output | head -20
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.js

建筑

npm run build
cd peepit-cli && swift build

______________________________________________________________________

已知问题

  • FileHandle警告:关于TextOutputStream一致性的非关键Swift警告
  • AI提供者配置:需要 PEEPIT_AI_PROVIDERS 分析特征的环境变量

______________________________________________________________________

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

______________________________________________________________________

贡献

  1. 分叉回购
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

______________________________________________________________________

作者

阅读更多关于PeepIt的设计和实现 博客文章.

目录标签

目录标签

开发工具TypeScriptClaudeAI视觉分析本地部署macOS工具屏幕截图开发辅助

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明nonelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP