项目概览

  • 这是一个完整的 MCP 服务器实现,能够向 MCP 客户端提供以下核心能力:
    • 资源(Resources):用于向 LLM 客户端提供数据访问与上下文信息。
    • 工具(Tools):注册并执行外部功能,如 UI 自动化、鼠标/键盘输入、窗口管理、截图等。
    • 提示模板(Prompts):支持通过模板渲染与自定义对话模式。
  • 服务器通过 JSON-RPC 与客户端通信,支持多种传输协议,默认通过 STDIO 传输方式运行。

主要功能点

  • MCP 核心能力
    • 处理 MCP 请求并返回标准化的 JSON-RPC 响应
    • 支持资源读取、工具调用以及提示模板获取/渲染
  • UI 自动化相关工具
    • 鼠标控制、键盘控制、窗口管理、截图等工具的注册与执行
    • 多显示器和 DPI 感知的操作能力
  • 服务端能力
    • 会话管理、错误处理与能力声明
    • 支持多种传输协议(如 STDIO,后续扩展可扩展为 SSE、WebSocket 等)
  • 安全与稳定性
    • 处理 UIPI/UAC 场景、等待超时与异常错误,确保在受控环境中工作的鲁棒性
  • 测试与集成
    • 提供广泛的单元与集成测试覆盖核心组件行为

安装与运行

  • 构建与运行
    • 将代码克隆到本地后,通过 .NET 构建工具构建解决方案
    • 进入仓库中的服务器项目(src/Sbroenne.WindowsMcp),直接运行即可启动 MCP 服务器
  • 运行方式(示例性描述,具体执行请以实际项目构建产物为准)
    • 在包含 .NET 8 的 Windows 环境中运行服务器:dotnet run
    • 服务器将通过标准输出/错误输出进行日志及 MCP 交互(根据配置也可通过 STDIO 传输)
  • MCP 客户端配置要点(客户端不用本仓库代码即可连接)
    • 客户端启动时需知道服务器的启动命令与参数,以便建立通信
    • 以下是示例配置描述(非代码块,便于直接理解):
      • 服务器名称:Windows MCP 服务器
      • 启动命令(command):dotnet
      • 启动参数(args):[路径/到/Sbroenne.WindowsMcp.dll]
      • 其他环境变量:可选,如连接超时、调试开关等,保持为空即可使用默认
    • MCP 客户端的配置通常形如: { "servers": { "windows": { "command": "dotnet", "args": ["path/to/Sbroenne.WindowsMcp.dll"], "env": {} } } }

使用方法

  • 连接方式
    • 使用支持 MCP 的客户端(如带 MCP 扩展的 IDE/模型对话环境)通过 JSON-RPC 与服务器通信
    • 服务器端提供以下核心能力:资源访问、工具执行、提示渲染
  • 基本使用流程
    • 通过 MCP 客户端查询并加载资源,了解可用的工具、模板
    • 通过工具调用执行相应操作,例如:
      • 鼠标控制:移动、点击、拖拽、滚轮等
      • 键盘控制:输入文本、发送按键、组合键等
      • 窗口管理:列举、激活、移动、调整大小等
      • 截图控制:区域/监视器/窗口截图,支持 JPEG/PNG,内嵌或输出文件
    • 使用 Prompt 模板渲染与对话引导,结合资源与工具实现对话驱动的上下文能力
  • 具体操作要点
    • 了解服务器暴露的工具名称(如 ui_automation、mouse_control、keyboard_control、window_management、screenshot_control、ui_automation 等),在 MCP 客户端请求中引入正确的工具名与参数
    • 资源与模板的获取通过 MCP 定义来完成,以标准化的 JSON-RPC 请求进行交互
    • 传输层可扩展,当前默认基于 STDIO,未来可扩展为 SSE、WebSocket 等

服务器配置(MCP 客户端所需信息)

  • 服务器名称:Windows MCP 服务器
  • 启动命令与参数示例(供 MCP 客户端配置使用):
    • command: dotnet
    • args: ["path/to/Sbroenne.WindowsMcp.dll"]
    • env: {} // 如有需要可设置环境变量
  • 说明:MCP 客户端通过该信息启动服务器并建立通信通道,不需要包含在 MCP 客户端代码中;服务器侧负责以 MCP 协议规范处理请求与响应。

运行后可以尝试的简单用例

  • 请求注册的工具列表并按需调用工具执行具体操作(如通过 mouse_control 调用 click、window_management 调用 list/activate 等)
  • 使用 screenshot_control 进行屏幕截图(区域、监视器、全屏等)

关键词

鼠标自动化, 屏幕截屏, 窗口管理, 多显示器, Windows 自动化

分类

8

信息

分类

桌面与硬件