截图服务器

一个基于MCP协议的截图服务器,通过文件路径保存截图,便于AI助手或其他进程使用。

  • by KunihiroS
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 KunihiroS/screenshot-server

使用说明

截图服务器(以文件路径为中心)

该项目提供了一个MCP(模块化通信协议)服务器,旨在捕获屏幕截图并方便其他流程或人工智能助手使用,主要是通过 将屏幕截图保存到客户端(主机)指定的文件路径.

核心问题与解决方案

人工智能助手直接解释通过MCP发送的屏幕截图图像数据在测试中被证明是不可靠的。此服务器采用更强大的工作流程,专注于文件路径:

推荐工作流程(WSL主机->Windows服务器):

  1. MCP主机(类似于WSL中运行的AI助手)调用 save_screenshot_to_host_workspace 工具,提供其 WSL工作区路径 作为一个论点。
  2. 此服务器(在Windows上运行)捕获屏幕。
  3. 服务器将接收到的WSL路径转换为Windows可访问的UNC路径(例如。, \\wsl$\Distro\path).
  4. 服务器通过UNC路径将屏幕截图保存到主机WSL文件系统中的指定位置。
  5. 服务器返回 "success" 或 "failed:...".
  6. MCP主机知道文件保存在其工作区(或子目录,如果在path参数中指定)。
  7. 然后,MCP主机可以传递 WSL路径 到另一个专用MCP服务器(在WSL中运行)进行图像分析。

备选工作流程(通用):

  1. MCP主机呼叫 take_screenshot_and_return_path,可选择指定文件名。
  2. 服务器将屏幕截图保存到其本地 images/ 目录。
  3. 服务器返回 绝对路径 (例如Windows路径)到保存的文件。
  4. MCP主机接收路径并将其传递(可能进行转换)到分析服务器。

可用工具

此服务器提供以下工具,按推荐用法排序:

  • save_screenshot_to_host_workspace(host_workspace_path: str, name: str = "workspace_screenshot.jpg")

    • 推荐用途: 将屏幕截图直接保存到AI助手(主机)的当前WSL工作区。这是无缝集成的首选方法。
    • 行动: 截取屏幕截图,将提供的WSL路径转换为UNC路径,并将文件保存到主机的工作区。自动检测WSL分发名称。
    • Args:
      • host_workspace_path (str):主机工作空间的绝对WSL路径(例如。, /home/user/project).
      • name (str,可选):文件名。默认为 workspace_screenshot.jpg.
    • 退货: str - "success" 或 "failed: [error message]".
  • take_screenshot_and_return_path(name: str = "latest_screenshot.jpg")

    • 用例: 将屏幕截图保存到固定位置 images/ 并返回绝对路径(通常是Windows路径)。如果调用者需要外部处理的路径,则很有用。
    • Args:
      • name (str,可选):文件名。默认为 latest_screenshot.jpg.
    • 退货: str -绝对路径或 "failed: [error message]".
  • take_screenshot_path(path: str = "./", name: str = "screenshot.jpg")

    • 用例: 将屏幕截图保存到Windows路径或UNC路径指定的任意位置(例如,保存在主机工作区之外)。需要调用者仔细指定路径。
    • Args:
      • path (str,可选):目标目录(Windows或UNC路径)。默认为服务器的工作目录。
      • name (str,可选):文件名。默认为 screenshot.jpg.
    • 退货: str - "success" 或 "failed: [error message]".

设置和使用

1.先决条件

  • Python 3.x: 服务器将运行的计算机上需要。
  • 依赖关系: 使用安装 uv:
    uv sync
    
    所需库包括 mcp[cli]>=1.4.1, pyautogui,以及 Pillow.

2.运行服务器

此服务器通常已启动 靠近 基于其配置的MCP主机。

3.环境因素(尤其是WSL2)

关键点: 要捕获 窗纱,这个 screenshot.py 服务器 必须直接在Windows上运行.

推荐的WSL2主机->Windows服务器设置:

  1. 项目地点: 放这个 screenshot-server 您的项目文件夹 Windows文件系统 (例如。, C:\Users\YourUser\projects\screenshot-server).

  2. Windows依赖关系: 安装Python, uv,以及项目依赖关系(uv sync ...)直接在 视窗 在项目文件夹中。

  3. MCP主机配置(WSL中): 配置您的MCP主机(在WSL中运行)以使用PowerShell在Windows上启动服务器。更新 mcp_settings.json (或同等):

    {
      "mcpServers": {
        "Screenshot-server": {
          "command": "powershell.exe",
          "args": [
            "-Command",
            "Invoke-Command -ScriptBlock { cd '<YOUR_WINDOWS_PROJECT_PATH>'; & '<YOUR_WINDOWS_UV_PATH>' run screenshot.py }"
          ]
        }
        // ... other servers ...
      }
    }
    
    • 用实际的Windows路径替换路径。

4.工作流示例(WSL中的AI助手)

  1. AI助手识别其当前的工作空间路径(例如。, /home/user/current_project).
  2. AI助手使用 use_mcp_tool 呼叫 save_screenshot_to_host_workspace 在…上 Screenshot-server,通过 host_workspace_path="/home/user/current_project" 以及可选的a name.
  3. 接收 "success".
  4. AI助手知道截图现在在 /home/user/current_project/workspace_screenshot.jpg (或指定的名称)。
  5. AI助手使用 use_mcp_tool 呼叫A 图像分析 服务器/工具(也在WSL中运行),传递WSL路径 /home/user/current_project/workspace_screenshot.jpg.
  6. 图像分析服务器读取文件并执行其任务。

文件结构

  • screenshot.py:核心MCP服务器脚本。
  • README.md:此文档文件。
  • pyproject.toml:项目定义和依赖关系 uv.
  • uv.lock:依赖锁定文件。
  • .gitignore:Git忽略配置。
  • .python-version:(可选)Python版本说明符。
  • server.log:服务器生成的日志文件。
  • images/:的默认目录 take_screenshot_and_return_path.