ui-locate-mcp: A DSH MCP Plugin for Local Screen Positioning and Desktop Interaction

前言

在 DeepSeek Harness(DSH)里做桌面自动化或「看屏操作」时,模型往往只能拿到截图或文字描述,缺少可执行的像素坐标。自行接 OCR、检测模型和点击脚本,还要维护常驻推理进程,集成成本高。下面介绍的 ui-locate-mcp(维护者 citydirector)把本地检测、OCR 与 MCP 工具打包成 DSH 插件:在本地查找屏幕上的 UI 文字与元素,返回精确坐标,并支持定位、点击、输入、滚动及结果校验等组合能力。检测与动作均在本地运行;首次准备会下载 Python 依赖和约 80 MB 的检测模型,由持久化服务做推理,轻量 MCP 进程转发请求。

这是什么

ui-locate-mcp 是 Screen locator MCP 插件:为屏幕上的文字与图标提供像素级坐标,并以 DeepSeek Harness MCP bundle 形式对外提供工具。npm 包提供插件代码;Python 依赖与模型需通过设置页或 Host 工具单独准备。bundle 内含 MCP 客户端、Host 运行时管理插件,以及 Client 设置页。

分类上在 DSH 插件目录中属于「模型推理」。当前 bundle 的 MCP 可执行路径按 Windows 配置;跨平台 Python 代码并不等同于跨平台 bundle 配置。许可证为 MIT(见 GitHub 仓库)。

核心功能

工具分为 MCP 侧与 Host 侧(Host 可能对工具名加命名空间前缀)。README 中列出的能力如下。

工具 用途
locate_text 查找匹配的 UI 文字及其中心坐标
find_all 返回多个匹配候选
detect_elements 枚举检测到的元素
ui_locate_marks 带编号标记的截图(可选命名网格),便于模型选编号而非猜像素
ui_locate_act 定位、执行动作并尝试校验
ui_locate_steps 按顺序执行步骤并定位失败点
ui_locate_windows 列出顶层窗口(标题、句柄、客户区矩形、是否前台)
ui_locate_diff 相对上次调用,屏幕变化区域(矩形,无图像、无 vision token)
ui_locate_watch 录制数秒并返回关键帧合成的一张图(裁剪变化区域)
ui_locate_frames / ui_locate_frame 列出或获取近期动作帧
list_monitors 显示器尺寸、原点与索引
health 检查服务是否就绪
ui_locate_setup 准备或重建 Python 依赖与模型

坐标为绝对屏幕坐标,副屏上可能为负值。monitor 支持 primary、索引字符串、all、window:<title> 或 hwnd:<handle>;UI 移动后需重新定位。

对无稳定文字的目标(游戏物品、工具栏图标等),可用编号标记操作:ui_locate_marks 生成带框编号图,ui_locate_act(mark=…) 点击对应中心;还支持 box、grid、cell 等参数放大区域或按网格选格。除检测框外,标记还包含按几何重复的等尺寸单元格(如背包格、标签页),便于游戏等场景。

指定 window= 时,捕获优先尝试 Windows Graphics Capture,失败则回退 PrintWindow 或监视器裁剪;发送输入前会将目标窗口置前(focus="off" 可关闭)。带 verify="screen" 时可在屏幕稳定后再判定动作效果;ui_locate_watch 与 ui_locate_act(..., watch_ms=…) 用于「先看再动、再看结果」的一体式录制。

环境与依赖

  1. Python 3.12+。设置页准备流程由 Host 发现的 Python 创建独立环境;若找不到解释器,可检查桌面安装是否自带运行时。
  2. 推理后端:默认 DirectML;可选 cuda、cpu。CUDA 需对应 NVIDIA 环境与更大依赖;切换后端需重建环境。
  3. DSH 能力:package.json 未声明 engines.dsh 范围,不保证与所有 DSH 版本兼容;bundle 需要工具注册、MCP 客户端与 settings 服务。

安装与启用

桌面 DSH(README Quick start):

  1. 在 DSH Plugins → Add plugin 中输入 ui-locate-mcp,然后启用。
  2. 在 Settings 中打开 ui-locate runtime,选择路径与 backend,并完成环境准备;Host 工具 ui_locate_setup 提供相同准备路径。
  3. 准备完成后连接或重新启用 mcp-ui-locate;若 DSH 提示则重启。
  4. 调用 health,再试 locate_text(text="Save")。

Web profile 使用 CLI 时,需先停止实例,改完再重启;桌面侧更推荐 Plugins 页面,且管理 desktop profile 需使用该安装的 CLI 与相同 DSH_HOME:

dsh plugin --profile web add ui-locate-mcp

典型用法

按文字定位并点击(monitor 可选):

locate_text(text="Save", monitor="primary")
ui_locate_act(text="Save", action="click", monitor="primary")

无稳定文字时用编号:

ui_locate_marks(monitor="primary")
ui_locate_act(mark=17)
ui_locate_marks(box="1200,40,1500,90")
ui_locate_marks(grid=8)
ui_locate_act(cell="B2")

同一标记图上的编号需在一次 ui_locate_marks 结果内使用;可传 mark_set 避免使用过期标记集。

适用场景与注意

适合需要在 DSH 智能体流程里做 Windows 桌面 GUI 自动化、本地 OCR/检测、以及「坐标 + 点击/输入/校验」闭环的开发者。Web profile 可安装 bundle,但当前 MCP 可执行路径面向 Windows 桌面场景;跨平台需求需自行核对 bundle 与运行环境。

插件以 当前 DSH 进程权限 运行,可截屏、发输入并访问本机文件(取决于 Host 与工具实现)。安装前应阅读 GitHub 源码 与 MIT 许可证,确认行为与信任边界符合你的环境策略。

DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

ui-locate-mcp 把本地视觉 grounding、OCR 与一系列 Host/MCP 工具收进一个 DSH bundle,让智能体用工具调用而不是纯猜像素来完成桌面交互。更多细节与完整参数说明见仓库 README。

  • 插件目录页:https://www.skillhub.cn/plugins/citydirector/ui-locate-mcp
  • GitHub:https://github.com/citydirector/ui-locate-mcp
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye