TRAA (2)MCP Server 支持 Claude Desktop等工具中指定窗口截图

项目简介

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. 启动服务器

支持两种运行模式:

  1. stdio 模式(默认):
uv run traa_mcp_server
  1. 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"
    )

最佳实践

  1. 图像格式选择

    • JPEG:适合包含大量颜色的截图,文件更小
    • PNG:适合包含文字或需要透明度的截图,质量更好
  2. 性能优化

    • 默认使用 JPEG 格式,质量设置为 60,以保持文件大小在 1MB 以下
    • 可以根据需要调整质量设置
  3. 错误处理

    • 总是检查返回值
    • 使用 try-except 处理可能的异常
    • 查看详细的错误消息进行故障排除

使用Claude Desktop效果展示

请添加图片描述
请添加图片描述
请添加图片描述

总结

TRAA MCP Server 提供了一个强大而灵活的屏幕捕获解决方案。它的模块化设计、完善的错误处理和丰富的功能使其成为各种屏幕捕获需求的理想选择。无论是需要简单的截图功能,还是需要复杂的图像处理,这个项目都能满足需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值