K

KunihiroS

@KunihiroS/screenshot-server
0 Stars 354 次浏览 KunihiroS 更新于 2026-08-23
该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

截图服务器(文件路径聚焦)

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

核心问题与解决方案

直接解释由AI助手通过MCP发送的截图图像数据在测试中被证明是不可靠的。此服务器采用了更健壮的工作流程,重点在于文件路径:

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

  1. 一个MCP主机(如运行在WSL中的AI助手)调用save_screenshot_to_host_workspace工具,并将其WSL工作区路径作为参数提供。
  2. 此服务器(运行于Windows上)捕捉屏幕。
  3. 服务器将接收到的WSL路径转换为Windows可访问的UNC路径(例如,\wsl$Distropath)。
  4. 服务器通过UNC路径将截图保存到主机的WSL文件系统中指定的位置。
  5. 服务器返回"success""failed:..."
  6. MCP主机知道文件已保存在其工作区(如果路径参数中指定了子目录,则保存在该子目录下)。
  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发行版名称。
    • 参数:
      • host_workspace_path (str):主机工作区的绝对WSL路径(例如,/home/user/project)。
      • name (str, 可选):文件名,默认为workspace_screenshot.jpg
    • 返回值: str - "success""failed: [错误信息]"
  • take_screenshot_and_return_path(name: str = "latest_screenshot.jpg")

    • 使用场景: 将截图保存到相对于服务器位置固定的images/目录,并返回绝对路径(通常是Windows路径)。如果调用者需要路径用于外部处理时很有用。
    • 参数:
      • name (str, 可选):文件名,默认为latest_screenshot.jpg
    • 返回值: str - 绝对路径或"failed: [错误信息]"
  • take_screenshot_path(path: str = "./", name: str = "screenshot.jpg")

    • 使用场景: 将截图保存到由Windows路径或UNC路径指定的任意位置(例如,保存在主机工作区之外)。要求调用者仔细指定路径。
    • 参数:
      • path (str, 可选):目标目录(Windows或UNC路径),默认为服务器的工作目录。
      • name (str, 可选):文件名,默认为screenshot.jpg
    • 返回值: str - "success""failed: [错误信息]"

设置和使用

1. 前提条件

  • Python 3.x: 在运行服务器的机器上必需。

  • 依赖项: 使用uv安装:
    bash
    uv sync

    所需库包括mcp[cli]>=1.4.1pyautoguiPillow

2. 运行服务器

此服务器通常基于其配置由MCP主机启动。

3. 环境考虑(特别是WSL2)

...(此处省略了原文档中未完成的部分,如果有更多内容,请继续提供以完成翻译。)关键点: 要捕获Windows屏幕,此screenshot.py服务器必须直接在Windows上运行

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

  1. 项目位置: 将这个screenshot-server项目文件夹放在你的Windows文件系统中(例如,C:\Users\YourUser\projects\screenshot-server)。

  2. Windows依赖项: 直接在Windows上的项目文件夹内安装Python、uv和项目依赖项(使用uv sync ...)。

  3. MCP主机配置(在WSL中): 配置你的MCP主机(在WSL中运行),通过PowerShell在Windows上启动服务器。更新mcp_settings.json(或等效文件):

    json
    {
    "mcpServers": {
    "Screenshot-server": {
    "command": "powershell.exe",
    "args": [
    "-Command",
    "Invoke-Command -ScriptBlock { cd <YOUR_WINDOWS_PROJECT_PATH> ; & <YOUR_WINDOWS_UV_PATH> run screenshot.py }"
    ]
    }
    // ... 其他服务器 ...
    }
    }

    • 用你实际的Windows路径替换这些路径。

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

  1. AI助手识别其当前的工作空间路径(例如,/home/user/current_project)。
  2. AI助手使用use_mcp_tool调用Screenshot-server上的save_screenshot_to_host_workspace,传递host_workspace_path="/home/user/current_project",并可选地传递一个name
  3. 收到"success"响应。
  4. AI助手知道截图现在位于/home/user/current_project/workspace_screenshot.jpg(或指定的名称)。
  5. AI助手使用use_mcp_tool调用图像分析服务器/工具(也在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的默认目录。

相关 MCP 服务