项目简介
TRAA MCP Server 是一个基于 Model Context Protocol (MCP) 的屏幕捕获服务器。它提供了系统屏幕和窗口的枚举功能,以及截图捕获功能。通过 MCP 协议,服务器可以与客户端进行通信,支持标准输入输出(stdio)和服务器发送事件(SSE)两种传输方式。
源码地址 traa-mcp
核心功能
1. 屏幕和窗口源枚举
sources = enum_screen_sources()
for source in sources:
print(f"ID: {source.id}")
print(f"标题: {source.title}")
print(f"类型: {'窗口' if source.is_window else '显示器'}")
print(f"位置: {source.rect}") # (left, top, right, bottom)
这个功能可以:
- 列出系统中所有可用的显示器
- 列出系统中所有可用的窗口
- 提供每个源的详细信息,包括 ID、标题、类型和位置信息
2. 屏幕捕获
项目提供了两种截图方式:
2.1 直接获取图像数据
image = create_snapshot(
source_id=1, # 屏幕源 ID
size=(1920, 1080) # 期望的尺寸
)
这种方式返回 MCP Image 对象,适合需要直接处理图像数据的场景。
2.2 保存到文件
save_snapshot(
source_id=1, # 屏幕源 ID
size=(1920, 1080), # 期望的尺寸
file_path="screenshot.jpeg", # 保存路径
quality=80, # 图像质量 (1-100)
format="jpeg" # 图像格式
)
这种方式直接将截图保存为文件,支持:
- 自动创建目录
- 可配置的图像质量
- 支持 JPEG 和 PNG 格式
技术实现
1. 架构设计
项目采用了模块化的设计,主要包含以下组件:
enum_screen_sources
: 枚举屏幕源create_snapshot
: 创建截图save_snapshot
: 保存截图_create_snapshot
: 内部实现函数
2. 错误处理
项目实现了完善的错误处理机制:
try:
result = traa.create_snapshot(source_id, size)
except ValueError as e:
# 参数验证错误
raise e
except traa.Error as e:
# TRAA 相关错误
raise RuntimeError(f"Failed to create snapshot: {e}")
except Exception as e:
# 其他未预期的错误
raise RuntimeError(f"Unexpected error: {e}")
3. 图像处理
- 支持 RGBA 和 RGB 格式转换
- 自动优化图像大小
- 可配置的图像质量设置
使用指南
1. 安装依赖
pip install mcp>=1.0.0 anyio>=4.5 traa>=0.1.5 pillow>=11.1.0
推荐使用uv安装依赖
uv sync
2. 启动服务器
支持两种运行模式:
- stdio 模式(默认):
uv run traa_mcp_server
- SSE 模式:
uv run traa_mcp_server-sse --port 3001
3. 使用客户端
uv run traa_mcp_client
4. 完整示例
# 1. 枚举所有屏幕源
sources = enum_screen_sources()
for source in sources:
print(f"找到屏幕源: {source.title}")
# 2. 捕获第一个屏幕源的截图
if sources:
# 获取图像数据
image = create_snapshot(sources[0].id, (1920, 1080))
# 保存为文件
save_snapshot(
sources[0].id,
(1920, 1080),
"screenshot.jpeg",
quality=80,
format="jpeg"
)
最佳实践
-
图像格式选择
- JPEG:适合包含大量颜色的截图,文件更小
- PNG:适合包含文字或需要透明度的截图,质量更好
-
性能优化
- 默认使用 JPEG 格式,质量设置为 60,以保持文件大小在 1MB 以下
- 可以根据需要调整质量设置
-
错误处理
- 总是检查返回值
- 使用 try-except 处理可能的异常
- 查看详细的错误消息进行故障排除
使用Claude Desktop效果展示
总结
TRAA MCP Server 提供了一个强大而灵活的屏幕捕获解决方案。它的模块化设计、完善的错误处理和丰富的功能使其成为各种屏幕捕获需求的理想选择。无论是需要简单的截图功能,还是需要复杂的图像处理,这个项目都能满足需求。