AI桌面视觉控制服务

为AI助手提供视觉和交互能力的Windows MCP服务器,支持屏幕识别、UI元素操作、批量动作序列等功能,适用于AI辅助开发与自动化测试。

  • by amichail-1
  • C#
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 amichail-1/Orbination-AI-Desktop-Vision-Control

使用说明

Orbining AI桌面视觉与控制

给AI助手眼睛和手。 一个原生的Windows MCP服务器,让人工智能看到屏幕、读取UI元素、点击按钮、键入文本和控制任何应用程序——内置OCR、暗主题支持、窗口遮挡检测和批处理操作排序。

专为 克劳德代码 通过 Leia企业解决方案 为了 Orbinion 项目。

AI编码助手是盲人。它们生成代码,但永远看不到结果。他们无法将设计模型与正在运行的应用程序进行比较。他们无法点击UI进行测试。 此服务器修复了此问题。

它的作用

此MCP服务器弥合了AI和桌面之间的差距。人工智能可以:

  • 看 --截图,在任何窗口上运行OCR(自动增强深色主题),检测窗口遮挡
  • 阅读 --通过Windows UIAutomation检测每个具有精确位置的UI元素(按钮、输入、文本、选项卡、复选框)
  • 互动 --按文本单击元素(UIAutomation+OCR回退),导航菜单,填写表单,键入和粘贴文本
  • 导航 --打开应用程序、切换窗口、聚焦选项卡、浏览浏览器URL
  • 理解 --扫描整个桌面:窗口可见性百分比、遮挡检测、未覆盖的桌面区域
  • 批次 --在一次调用中执行多步骤UI工作流 run_sequence

v2.0中的新增功能

  • 窗口遮挡检测 --基于网格的分析显示哪些窗口是真正可见的(可见性%),哪些窗口隐藏在其他窗口后面
  • 桌面区域检测 --洪水填充算法,用于查找未覆盖的屏幕区域
  • 共享OcrService --具有自动深色主题增强功能的集中式OCR(反转+对比度增强)——单次通过,而不是两次
  • 打印窗口API --即使被其他窗口遮挡,也能捕获窗口内容
  • click_element OCR回退 --首先是UIAutomation,然后是用于深色主题、web应用程序、iframe的OCR
  • run_sequence --在单个MCP调用中批处理多个UI操作(单击、键入、粘贴、热键、等待、聚焦、OCR单击)
  • click_menu_item --通过平滑的鼠标移动来导航父菜单>子菜单,以保持子菜单打开
  • DPI 感知 --在混合缩放的多显示器设置中,每个显示器的DPI用于正确的坐标
  • 嵌入式AI指令 --服务器在MCP连接上发送工具使用指南,教导AI更喜欢OCR而不是截图

建筑

AI Client (Claude Code / Claude Desktop)
         │
         │  MCP / stdio
         ▼
    ┌─────────────────────────────┐
    │       MCP Server            │
    │   (ServerInstructions)      │
    └─────────┬───────────────────┘
              │
    ┌─────────┼──────────────────────────────────────┐
    │         │         │          │          │       │
    ▼         ▼         ▼          ▼          ▼       │
 Mouse    Keyboard   Screen    Vision    Composite   │
 Tools     Tools     Tools     Tools      Tools      │
                       │          │          │       │
              ┌────────┼──────────┼──────────┘       │
              ▼        ▼          ▼                  │
          Win32     UIAuto-    OcrService            │
          Native    mation     (dark theme)          │
              │        │                             │
              ▼        ▼                             │
         DesktopScanner    NativeInput               │
         (occlusion,       (SendInput,               │
          regions)          clipboard)               │
              │               │                      │
              └───────┬───────┘                      │
                      ▼                              │
               Windows OS                            │
               (Desktop, Windows, Apps)              │
    └────────────────────────────────────────────────┘

单身本地人。NET 8可执行文件。没有Python。没有Node.js。没有浏览器驱动程序。直接访问Windows API。

需求

构建

cd DesktopControlMcp
dotnet build -c Release

或者发布为单个文件:

dotnet publish -c Release -r win-x64 --self-contained false

使用Claude代码进行设置

将MCP服务器添加到您的Claude Code配置中:

claude mcp add desktop-control -- "C:\path\to\DesktopControlMcp.exe"

或者手动将其添加到MCP配置文件中:

{
  "mcpServers": {
    "desktop-control": {
      "command": "C:\\path\\to\\DesktopControlMcp\\bin\\Release\\net8.0-windows\\DesktopControlMcp.exe",
      "args": []
    }
  }
}

工具(45+)

视觉与元素检测

工具 说明
scan_desktop 全桌面扫描——屏幕、可见性为%的窗口、UI元素、桌面区域、任务栏
list_windows 列出所有可见的窗口,包括标题、进程名称、可见性百分比、遮挡状态
get_window_details 获取窗口中的所有UI元素(按类型筛选:按钮、输入、文本等)
find_element 在所有窗口中按文本搜索UI元素
read_window_text 从窗口中提取所有可见文本
refresh_window 重新扫描单个窗口的元素(比完全扫描更快)

交互

工具 说明
click_element 按文本查找元素并单击——UIAutomation优先,OCR回退用于深色主题/web应用程序
type_in_element 找到一个输入字段并键入文本(ValuePattern、剪贴板粘贴或单击+键入回退)
interact 智能交互——自动检测元素类型并执行正确的操作
fill_form 在一次调用中用JSON字段填充多个表单字段:值对
select_tab 按文本选择浏览器或应用程序选项卡
click_menu_item 导航菜单:单击父级,平滑移动到子级,单击--单次调用

批处理和复合操作

工具 说明
run_sequence 在一次调用中执行多个UI操作:点击、键入、粘贴、热键、等待、聚焦、OCR点击、截图
click_and_type 单击位置,然后键入文本
focus_and_hotkey 点击以聚焦(例如iframe),然后自动发送键盘快捷键

鼠标和键盘

工具 说明
mouse_click 点击屏幕坐标
mouse_move 将光标移动到位置
mouse_move_smooth 平滑移动鼠标(保持菜单/子菜单打开)
mouse_drag 从一个位置拖动到另一个位置
mouse_scroll 滚动鼠标滚轮
mouse_get_position 获取当前光标位置
keyboard_type 键入文本(支持Unicode)
keyboard_press 按一个键
keyboard_hotkey 按组合键(Ctrl+C、Alt+Tab等)
keyboard_key_down / keyboard_key_up 按住并松开钥匙

窗口和应用程序管理

工具 说明
focus_window 把窗户带到前台
maximize_window 最大化窗口
minimize_window 最小化窗口
restore_window 恢复最小化/最大化窗口
open_app 按名称打开应用程序(聚焦现有应用程序、单击任务栏或搜索“开始”)
navigate_to_url 将浏览器导航到URL

屏幕截图和OCR

工具 说明
screenshot_to_file 所有显示器的完整屏幕截图
screenshot_region 特定屏幕区域的截图
screenshot_window 通过PrintWindow API捕获窗口(即使在遮挡时也有效)
get_screen_info 获取显示器布局(位置、尺寸、主要)
ocr_screen_region 捕获一个区域并运行OCR——自动增强深色主题
ocr_window 在整个窗口上运行OCR——读取所有带有点击坐标的文本
ocr_find_text 使用OCR在屏幕上搜索特定文本——返回点击坐标

公用事业

工具 说明
set_clipboard 设置剪贴板文本而不粘贴
paste_text 通过剪贴板粘贴大文本(XML、代码、多行)
auto_scroll 在批次之间暂停滚动
wait_seconds 在操作之间暂停
wait_for_element 轮询UI元素是否出现超时

嵌入式AI指令

服务器发送 工具使用指南 在每个MCP连接上自动通过 ServerInstructions。这教会了AI客户端最佳的工作流程,而不需要任何配置文件:

观察优先级: ocr_window > get_window_details > list_windows > scan_desktop > screenshot_to_file

行动优先级: click_element > click_menu_item > run_sequence > paste_text > mouse_click

关键见解: OCR和UIAutomation返回精确的文本和坐标 --AI确切地知道点击什么。截图需要视觉处理和猜测。OCR优先的工作流程更快、更便宜、更可靠。

窗口遮挡检测

服务器使用 基于网格的遮挡分析 (24px单元格)以确定哪些窗口是真正可见的:

Chrome (chrome) [71] @ -2060,-1461 3456x1403        ← 100% visible
VS Code (Code) [45] @ -1500,-800 1200x900           ← 65% visible
Explorer (explorer) [20] @ -1400,-700 800x600        ← 0% visible [OCCLUDED]

AI知道它可以与哪些窗口交互,哪些窗口是隐藏的。结合 桌面区域检测 (洪水填充以查找未覆盖的屏幕区域),AI对桌面有完整的空间理解。

深色主题OCR增强

许多现代应用程序在标准OCR失败的地方使用深色主题。服务器在OCR之前自动检测暗背景并增强图像:

  1. 采样像素亮度 横跨图像
  2. 如果平均亮度<100→ 检测到暗主题
  3. 反色 + 增强对比度(1.4倍) --单程通行证
  4. 在增强图像上运行OCR

这在以下情况下自动工作 ocr_window, ocr_screen_region, ocr_find_text,以及 click_element的OCR回退。

多显示器支持

开箱即用的全面多显示器支持 每显示器DPI感知:

  • 自动检测所有监视器 --位置、尺寸、主屏幕通孔 get_screen_info
  • 虚拟桌面映射 --坐标跨越整个虚拟桌面,包括左/上显示器的负坐标
  • DPI感知 --混合缩放设置上的正确坐标(例如,一个显示器上的坐标为100%,另一个显示器的坐标为150%)
  • 跨监视器屏幕截图 — screenshot_to_file 捕获所有屏幕, screenshot_region 瞄准任何地区
  • 窗口感知 --检测到任何监视器上的窗口位置正确
  • 任务栏扫描 --阅读两者 Shell_TrayWnd (主要)和 Shell_SecondaryTrayWnd (辅助监视器)

UIAutomation的工作原理

与基于屏幕截图的工具猜测屏幕上的内容不同,此服务器读取Windows公开的实际UI元素树。每个按钮、输入字段、文本标签、选项卡和复选框都通过以下方式检测:

  • 精确的位置和尺寸 (边界矩形)
  • 文本/标签 (元素所表达的内容)
  • 控制类型 (按钮、输入、文本、复选框等)
  • 自动化ID (开发人员分配的标识符)
  • 支持的模式 (可以点击、键入、切换吗?)

UIAutomation+OCR回退

click_element 结合了这两种策略。UIAutomation优先(快速、结构化),OCR回退(通用):

click_element "Save"
  → UIAutomation: found "Save" button → click via Invoke pattern ✓

click_element "OK"  (dark web dialog)
  → UIAutomation: not found
  → OCR: capture window → enhance dark theme → find "OK" text → click center ✓

限制:自定义渲染应用程序

渲染自己的UI画布的应用程序(Flutter、具有自定义渲染的Electron、游戏引擎)可能会向UIAutomation暴露更少的元素。OCR回退会自动处理这些情况。

代币设计高效

每次MCP工具调用都需要代币。此服务器旨在最大限度地减少令牌使用:

结构化数据而不是截图

大多数桌面自动化工具都会为每个操作发送完整的屏幕截图——每个操作都需要付费 数千个代币。此服务器返回 结构紧凑的文本:

[button] "Save" @ 450,320
[input] "Search..." @ 200,60
[tab-item] "Settings" @ 120,35

批量操作

  • run_sequence 在一次调用中执行多个操作(单击、键入、粘贴、热键、等待、聚焦)
  • fill_form 在一次调用中填充多个表单字段
  • scan_desktop 在一个响应中返回屏幕+窗口+元素+任务栏
  • click_menu_item 在一次调用中导航父菜单>子菜单

智能缓存

扫描结果将缓存30秒。单个窗口可以通过以下方式刷新 refresh_window 而不是一个完整的 scan_desktop扫描仪使用UIAutomation的 CacheRequest 在单个跨进程调用中批量获取所有属性。

项目结构

DesktopControlMcp/
├── Program.cs                    # MCP server entry + DPI awareness + ServerInstructions
├── NativeInput.cs                # Low-level mouse/keyboard via SendInput
├── Native/
│   └── Win32.cs                  # P/Invoke: EnumWindows, PrintWindow, window management
├── Models/
│   └── SceneData.cs              # Data models: windows (with occlusion), elements, regions
├── Services/
│   ├── DesktopScanner.cs         # Desktop scanning + occlusion analysis + region detection
│   ├── OcrService.cs             # Shared OCR engine with dark theme auto-enhancement
│   └── UiAutomationHelper.cs     # Element interaction patterns
└── Tools/
    ├── VisionTools.cs            # scan, find, click (with OCR fallback), list windows
    ├── CompositeTools.cs         # run_sequence, click_menu_item, navigate, open app
    ├── MouseTools.cs             # Mouse control
    ├── KeyboardTools.cs          # Keyboard control
    └── ScreenTools.cs            # Screenshots, OCR tools, PrintWindow capture

示例

请参阅 examples/ 用于真实工作流程的文件夹:

  • 视觉UI比较 --AI并排打开HTML设计和Flutter应用程序,点击两者,并识别每一个视觉差异
  • 自动化UI测试 --AI通过点击任何应用程序来测试登录流程、表单验证和导航——不需要测试脚本
  • 多应用程序工作流 --AI在单个工作流中跨浏览器、代码编辑器、数据库工具和桌面应用程序进行编排

快速安装

选项A:下载预构建的二进制文件

  1. 下载自 发布
  2. 解压拉链
  3. 添加到克劳德代码:
claude mcp add desktop-control -- "C:\path\to\DesktopControlMcp.exe"

选项B:从源代码构建

git clone https://github.com/amichail-1/Orbination-AI-Desktop-Vision-Control.git
cd Orbination-AI-Desktop-Vision-Control/DesktopControlMcp
dotnet build -c Release
claude mcp add desktop-control -- "bin\Release\net8.0-windows\DesktopControlMcp.exe"

贡献

欢迎捐款。打开问题或提交PR。

许可证

麻省理工学院