屏幕截图服务

Windows专用的屏幕截图服务器,支持全屏或应用窗口截图,并可结合AI模型进行视觉问答分析。

  • by ezerfernandes
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ezerfernandes/winpeek

使用说明

Windows屏幕截图MCP服务器

一个仅支持Windows的模型上下文协议(MCP)服务器,使AI代理能够捕获应用程序或整个屏幕的屏幕截图,并通过本地或远程AI模型进行可选的视觉问答。

特性

  • 全屏截图:捕获整个屏幕或特定显示器的屏幕截图
  • 窗口特定捕获:按标题或进程名称定位特定的应用程序窗口
  • 窗口枚举:列出所有可见窗口及其进程信息
  • AI驱动的分析:使用OpenAI、Anthropic Claude或本地模型分析屏幕截图
  • 多种图像格式:支持PNG和JPEG输出
  • Windows集成:深度Windows API集成,实现可靠的窗口定位

需求

  • Windows操作系统(建议使用Windows 10/11)
  • Python 3.8或更高版本
  • 必需的Python包(见requirements.txt)

安装

  1. 克隆或下载此存储库

  2. 安装依赖项:

    pip install -r requirements.txt
    
  3. 设置API密钥(可选,用于AI分析):

    # For OpenAI
    set OPENAI_API_KEY=your_openai_api_key
    
    # For Anthropic Claude
    set ANTHROPIC_API_KEY=your_anthropic_api_key
    
    # For local models (e.g., Ollama)
    set LOCAL_MODEL_URL=http://localhost:11434
    

用法

运行MCP服务器:

python screenshot_server.py

可用工具

capture_screen

捕获整个屏幕或特定显示器的屏幕截图。

参数:

  • monitor (整数,可选):监视器编号(0表示主监视器,1+表示附加监视器)
  • format (字符串,可选):图像格式(“png”或“jpeg”,默认:“png”)

capture_window

捕获特定应用程序窗口的屏幕截图。

参数:

  • window_title (string):窗口的标题或部分标题
  • process_name (string):进程名称(例如“notepad.exe”)
  • format (字符串,可选):图像格式(“png”或“jpeg”,默认:“png”)

注:要么 window_title 或 process_name 是必需的。

list_windows

列出所有可见的窗口及其标题和进程名称。

参数: 无

analyze_screenshot

使用AI分析屏幕截图并回答相关问题。

参数:

  • image_data (string):Base64编码图像数据
  • question (string):关于图像的问题
  • model_provider (字符串,可选):“openai”、“anthropic”或“local”(默认值:“openal”)
  • model_name (字符串,可选):特定型号名称(默认:“gpt-4-vision-preview”)

配置

环境变量

  • OPENAI_API_KEY:用于GPT-4视觉分析的OpenAI API密钥
  • ANTHROPIC_API_KEY:Claude分析的Anthropic API密钥
  • LOCAL_MODEL_URL:本地模型API的URL(默认值:http://localhost:11434)

支持的AI模型

OpenAI

  • gpt-4-vision-preview
  • gpt-4o
  • gpt-4o-mini

Anthropic

  • claude-3-sonnet-20240229
  • claude-3-haiku-20240307
  • claude-3-opus-20240229

局部模型

  • 任何具有视觉能力的Olama模型(例如。, llava, bakllava)
  • 具有兼容API的自定义本地视觉模型

例子

基本屏幕截图

# Capture entire screen
{"tool": "capture_screen", "arguments": {}}

# Capture specific monitor
{"tool": "capture_screen", "arguments": {"monitor": 1, "format": "jpeg"}}

窗口特定捕获

# Capture by window title
{"tool": "capture_window", "arguments": {"window_title": "Notepad"}}

# Capture by process name
{"tool": "capture_window", "arguments": {"process_name": "chrome.exe"}}

AI分析

# Analyze with OpenAI
{
  "tool": "analyze_screenshot",
  "arguments": {
    "image_data": "base64_encoded_image_data",
    "question": "What applications are visible in this screenshot?",
    "model_provider": "openai"
  }
}

# Analyze with local model
{
  "tool": "analyze_screenshot",
  "arguments": {
    "image_data": "base64_encoded_image_data",
    "question": "Describe what you see in this image",
    "model_provider": "local",
    "model_name": "llava"
  }
}

安全考虑

  • 此服务器需要Windows API访问权限,并且可以捕获敏感信息
  • 截图可能包含私人数据-确保正确处理
  • API密钥应安全存储,而不是提交给版本控制
  • 使用远程AI模型时考虑网络安全

故障排除

常见问题

  1. Windows模块导入错误:确保您在Windows上运行
  2. 权限不足:如果捕获系统窗口,请以管理员身份运行
  3. 未找到窗口:检查窗口标题 list_windows 工具优先
  4. AI分析失败:验证API密钥设置是否正确

调试模式

通过修改脚本中的日志记录级别启用调试日志记录:

logging.basicConfig(level=logging.DEBUG)

许可证

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

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 在Windows上测试
  5. 提交拉取请求