KunihiroS
服务介绍
截图服务器(文件路径聚焦)
该项目提供了一个MCP(模块化通信协议)服务器,旨在捕获截图并方便其他进程或AI助手使用这些截图,主要是通过将截图保存到客户端(主机)指定的文件路径。
核心问题与解决方案
直接解释由AI助手通过MCP发送的截图图像数据在测试中被证明是不可靠的。此服务器采用了更健壮的工作流程,重点在于文件路径:
推荐工作流(WSL主机 -> Windows服务器):
- 一个MCP主机(如运行在WSL中的AI助手)调用
save_screenshot_to_host_workspace工具,并将其WSL工作区路径作为参数提供。 - 此服务器(运行于Windows上)捕捉屏幕。
- 服务器将接收到的WSL路径转换为Windows可访问的UNC路径(例如,
\wsl$Distropath)。 - 服务器通过UNC路径将截图保存到主机的WSL文件系统中指定的位置。
- 服务器返回
"success"或"failed:..."。 - MCP主机知道文件已保存在其工作区(如果路径参数中指定了子目录,则保存在该子目录下)。
- 然后,MCP主机可以将WSL路径传递给另一个专门的MCP服务器(运行在WSL中)进行图像分析。
备选工作流(通用):
- MCP主机调用
take_screenshot_and_return_path,可选地指定文件名。 - 服务器将截图保存到其本地
images/目录。 - 服务器返回保存文件的绝对路径(例如,Windows路径)。
- 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.1、pyautogui和Pillow。
2. 运行服务器
此服务器通常基于其配置由MCP主机启动。
3. 环境考虑(特别是WSL2)
...(此处省略了原文档中未完成的部分,如果有更多内容,请继续提供以完成翻译。)关键点: 要捕获Windows屏幕,此screenshot.py服务器必须直接在Windows上运行。
推荐的WSL2主机 -> Windows服务器设置:
-
项目位置: 将这个
screenshot-server项目文件夹放在你的Windows文件系统中(例如,C:\Users\YourUser\projects\screenshot-server)。 -
Windows依赖项: 直接在Windows上的项目文件夹内安装Python、
uv和项目依赖项(使用uv sync ...)。 -
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助手)
- AI助手识别其当前的工作空间路径(例如,
/home/user/current_project)。 - AI助手使用
use_mcp_tool调用Screenshot-server上的save_screenshot_to_host_workspace,传递host_workspace_path="/home/user/current_project",并可选地传递一个name。 - 收到
"success"响应。 - AI助手知道截图现在位于
/home/user/current_project/workspace_screenshot.jpg(或指定的名称)。 - AI助手使用
use_mcp_tool调用图像分析服务器/工具(也在WSL中运行),传递WSL路径/home/user/current_project/workspace_screenshot.jpg。 - 图像分析服务器读取文件并执行其任务。
文件结构
screenshot.py:核心MCP服务器脚本。README.md:本文档文件。pyproject.toml:项目的定义和uv的依赖项。uv.lock:依赖项锁定文件。.gitignore:Git忽略配置。.python-version:(可选)Python版本说明符。server.log:由服务器生成的日志文件。images/:take_screenshot_and_return_path的默认目录。