屏幕截图服务

一款隐私优先的macOS专用MCP服务器,允许AI代理捕获预先批准的应用程序窗口的屏幕截图,为开发和调试任务提供安全的视觉上下文。

  • by rohanrav
  • Python
  • 本地部署
  • 17 星标
  • 更新于
在 GitHub 查看 rohanrav/screeny

使用说明

Screeny MCP服务器:隐私优先的人工智能代理macOS截图

A. 隐私优先,仅限macOS的MCP服务器 它使AI代理能够捕获预先批准的应用程序窗口的屏幕截图,为开发和调试任务提供安全的视觉上下文。

[!重要] 需要 屏幕截图权限 + 窗口审批设置 -请参阅下面的说明。

🔒 隐私优先设计

与其他截图工具不同,Screeny需要 明确的用户批准 对于每个窗口,在捕获之前:

  • 窗口审批系统 -只能捕获预先批准的窗口(在设置过程中批准)
  • 用户控制访问 -您可以确切地决定哪些窗口是可访问的
  • 非侵入式捕获 -在后台拍摄的截图,无需更改窗口焦点或中断工作流程
  • 无外部连接 -Screeny完全在您的设备上运行,使用后屏幕截图会立即删除

可用工具

  • listWindows -列出所有可用于截图的已批准应用程序窗口。

    • 仅显示用户批准的窗口
  • takeScreenshot -按ID捕获特定窗口的屏幕截图。

    • 在后台捕获窗口 -无需将窗口放在前面,但无法捕获最小化的窗口
    • 提供实际像素数据 -高保真图像,而非OCR或文本提取
    • 带可配置上限的JPEG压缩 -屏幕截图始终使用base64有效载荷上限进行JPEG压缩(默认预设: 中等/250KB),可配置并夹紧 100–900KB

资源

  • screeny://info -服务器信息和配置详细信息

配置

克劳德桌面

  1. 打开Claude设置→ 开发者→ 编辑配置
  2. 添加配置
  3. 重新启动克劳德桌面 保存配置后
Using pipx

首先安装: pipx install mcp-server-screeny

{
  "mcpServers": {
    "screeny": {
      "command": "mcp-server-screeny",
      "args": []
    }
  }
}

注: 如果你得到一个 ENOENT 错误,替换 "mcp-server-screeny" 带有可执行文件的完整路径(使用查找 which mcp-server-screeny 在您的终端中)。

Using uvx
{
  "mcpServers": {
    "screeny": {
      "command": "uvx",
      "args": ["mcp-server-screeny"]
    }
  }
}

注: 如果出现“spawn uvx ENOENT”错误,请替换 "uvx" uvx的完整路径:

which uvx  # Find your uvx path

然后在配置中使用该完整路径(例如。, "/opt/homebrew/bin/uvx").

光标

  1. 打开光标设置→ 工具和集成→ MCP工具
  2. 添加配置
  3. 重新启动游标 保存配置后
Using pipx

首先安装: pipx install mcp-server-screeny

{
  "mcpServers": {
    "screeny": {
      "command": "mcp-server-screeny",
      "args": []
    }
  }
}

注: 如果你得到一个 ENOENT 错误,替换 "mcp-server-screeny" 带有可执行文件的完整路径(使用查找 which mcp-server-screeny 在您的终端中)。

Using uvx
{
  "mcpServers": {
    "screeny": {
      "command": "uvx",
      "args": ["mcp-server-screeny"]
    }
  }
}

注: 如果出现“spawn uvx ENOENT”错误,请替换 "uvx" uvx的完整路径:

which uvx  # Find your uvx path

然后在配置中使用该完整路径(例如。, "/opt/homebrew/bin/uvx").

[!注意]> 光标MCP主机

  • 光标自动上下文摘要可以触发循环工具调用(重复截图)。
  • 如果发生这种情况,请降低KB上限(使用较小的预设)或选择具有较大上下文窗口的模型。

设置

1.授予屏幕截图权限(必填)

重要提示: 在运行窗口审批之前授予权限。

备注:您需要向以下两个用户授予屏幕截图权限:

  1. 您的终端应用程序 (Terminal.app、iTerm2等)-运行安装程序所需(之后可以禁用)
  2. 您的MCP主机 (克劳德桌面,光标)-需要截图

要添加它们,请执行以下操作:

  1. 打开 系统设置 > 隐私和安全 > 屏幕和系统录音
  2. 点击 "+" 按钮
  3. 添加您的终端应用程序和MCP主机应用程序
  4. 重新启动两个应用程序 授予权限后

2.窗口批准(必填)

在上面配置MCP客户端后,批准可以捕获哪些窗口。

If using pipx
# Interactive approval
mcp-server-screeny --setup

# Auto-approve all current windows
mcp-server-screeny --setup --allow-all
If using uvx
# Interactive approval
uvx mcp-server-screeny --setup

# Auto-approve all current windows
uvx mcp-server-screeny --setup --allow-all

批准保存到 ~/.screeny/approved_windows.json。要更新已批准窗口的列表时,请重新运行安装程序。

高级选项(可选)

在设置过程中,您可以配置屏幕截图大小预设(影响稳定性和清晰度):

  • 微型(50KB) --最稳定;精细的文字会模糊
  • 小(100KB) --推荐默认值;平衡的清晰度和稳定性
  • 中等大小(250KB) --更多细节;可能更慢、更重
  • 大型(500KB) --高细节;可能会触发客户端摘要
  • XL(750KB) --最大细节;最容易出错

您的选择已保存在 ~/.screeny/config.json 像 max_b64_kb。您也可以通过以下方式进行覆盖 SCREENY_MAX_B64_KB 环境变量。主动盖被夹紧到 100–900KB.

安全与隐私

  • 只能捕获用户批准的窗口
  • 所有处理都在您的机器上本地进行
  • 截图是临时的,使用后立即删除

故障排除

权限问题

# Test window detection and permissions
mcp-server-screeny --debug

# Re-run setup if windows changed
mcp-server-screeny --setup

常见问题

“spawn uvx ENOENT”错误

  • 解决方案:在MCP配置中使用uvx的完整路径,而不仅仅是 "uvx"
  • 查找路径: which uvx
  • 例子: "/opt/homebrew/bin/uvx" 或 "/usr/local/bin/uvx"

“未找到批准的窗口”

  • 解决方案:运行 mcp-server-screeny --setup 第一(或 uvx mcp-server-screeny --setup 如果使用uvx)

“需要屏幕录制权限”或“找不到窗口”

  • 解决方案:在系统设置>隐私和安全>屏幕和系统音频录制中授予屏幕录制权限
    • 点击“+”按钮,手动添加您的MCP主机(Claude Desktop、Cursor等)
    • 授予权限后重新启动MCP主机应用程序
  • 授予权限后再次尝试运行安装程序

贡献

欢迎拉取请求!请随时贡献新想法、错误修复或增强功能。

这是我的第一个MCP项目——如果你遇到任何错误,请打开一个问题,我会尽力修复它们!

Why I Built This

我创建了这个工具来简化我的移动开发工作流程。我厌倦了 手动反复截图以描述UI问题。使用Screeny,Cursor可以直接捕获我的iOS模拟器的屏幕截图,并在循环中迭代设计。我很高兴看到其他人会如何使用它!

需求

  • Python 3.10+
  • macOS
  • 屏幕截图权限

许可证

MIT许可证