截图服务器(以文件路径为中心)
该项目提供了一个MCP(模块化通信协议)服务器,旨在捕获屏幕截图并方便其他流程或人工智能助手使用,主要是通过 将屏幕截图保存到客户端(主机)指定的文件路径.
核心问题与解决方案
人工智能助手直接解释通过MCP发送的屏幕截图图像数据在测试中被证明是不可靠的。此服务器采用更强大的工作流程,专注于文件路径:
推荐工作流程(WSL主机->Windows服务器):
- MCP主机(类似于WSL中运行的AI助手)调用
save_screenshot_to_host_workspace工具,提供其 WSL工作区路径 作为一个论点。 - 此服务器(在Windows上运行)捕获屏幕。
- 服务器将接收到的WSL路径转换为Windows可访问的UNC路径(例如。,
\\wsl$\Distro\path). - 服务器通过UNC路径将屏幕截图保存到主机WSL文件系统中的指定位置。
- 服务器返回
"success"或"failed:...". - MCP主机知道文件保存在其工作区(或子目录,如果在path参数中指定)。
- 然后,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分发名称。 - 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服务器设置:
- 项目地点: 放这个
screenshot-server您的项目文件夹 Windows文件系统 (例如。,C:\Users\YourUser\projects\screenshot-server).
- Windows依赖关系: 安装Python,
uv,以及项目依赖关系(uv sync ...)直接在 视窗 在项目文件夹中。
- MCP主机配置(WSL中): 配置您的MCP主机(在WSL中运行)以使用PowerShell在Windows上启动服务器。更新
mcp_settings.json(或同等):
{
"mcpServers": {
"Screenshot-server": {
"command": "powershell.exe",
"args": [
"-Command",
"Invoke-Command -ScriptBlock { cd ''; & '' run screenshot.py }"
]
}
// ... other servers ...
}
}- 用实际的Windows路径替换路径。
4.工作流示例(WSL中的AI助手)
- AI助手识别其当前的工作空间路径(例如。,
/home/user/current_project). - AI助手使用
use_mcp_tool呼叫save_screenshot_to_host_workspace在…上Screenshot-server,通过host_workspace_path="/home/user/current_project"以及可选的aname. - 接收
"success". - AI助手知道截图现在在
/home/user/current_project/workspace_screenshot.jpg(或指定的名称)。 - AI助手使用
use_mcp_tool呼叫A *图像分析* 服务器/工具(也在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.
