OmniParser AutoGUI MCP

项目简介

OmniParser AutoGUI MCP 是一个基于 Model Context Protocol (MCP) 构建的应用后端,它利用 OmniParser 分析屏幕内容,并结合 pyautogui 库实现 Windows 桌面应用程序的图形用户界面 (GUI) 自动化操作。该服务器旨在为大型语言模型 (LLM) 提供与桌面环境交互的能力,例如点击按钮、填写表单、滚动页面等。

主要功能点

  • 屏幕内容分析: 使用 OmniParser 分析屏幕截图,识别屏幕上的文本、图标和元素及其位置。
  • GUI 自动化: 提供工具 (Tools) 允许 LLM 控制鼠标和键盘,执行点击、拖拽、滚动、输入文本和快捷键等操作。
  • MCP 服务器: 遵循 MCP 协议,通过 JSON-RPC 与 MCP 客户端通信,提供标准化的上下文服务接口。
  • 多种配置选项: 支持通过环境变量配置 OmniParser 模型路径、目标窗口、通信协议 (stdio, SSE) 等。

安装步骤

  1. 克隆仓库:

    git clone --recursive https://github.com/NON906/omniparser-autogui-mcp.git
    cd omniparser-autogui-mcp

    请务必使用 '--recursive' 参数,以便同步子模块。

  2. 安装依赖:

    uv sync

    如果需要使用 'langchain_example.py' 示例,请使用 'uv sync --extra langchain'。

  3. 设置 OCR 语言 (可选):

    set OCR_LANG=en

    或者在非 Windows 系统上使用 'export OCR_LANG=en'。 可以根据需要修改 'en' 为其他 PaddleOCR 支持的语言。

  4. 下载模型:

    uv run download_models.py

    此命令会下载 OmniParser 和 PaddleOCR 所需的模型文件。

服务器配置

MCP 服务器需要配置在 MCP 客户端中才能使用。以 'claude_desktop_config.json' 为例,配置信息如下:

{
  "mcpServers": {
    "omniparser_autogui_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "D:\\CLONED_PATH\\omniparser-autogui-mcp",
        "run",
        "omniparser-autogui-mcp"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8",
        "OCR_LANG": "en"
      }
    }
  }
}
  • '"omniparser_autogui_mcp"': 服务器名称,可以自定义。
  • '"command": "uv"': 启动服务器的命令,这里使用 'uv' 运行器。
  • '"args"': 命令参数列表。
    • '"--directory"': 指定仓库克隆路径,请将 '"D:\CLONED_PATH\omniparser-autogui-mcp"' 替换为实际的仓库路径。
    • '"run"': 'uv' 运行器的子命令,表示运行 Python 脚本。
    • '"omniparser-autogui-mcp"': 要运行的脚本名称,对应仓库根目录下的 'omniparser-autogui-mcp' 脚本 (实际上会执行 'src/mcp_autogui/init.py' 中的 'main' 函数)。
  • '"env"': 环境变量配置。
    • '"PYTHONIOENCODING": "utf-8"': 设置 Python IO 编码为 UTF-8,避免编码问题。
    • '"OCR_LANG": "en"': 指定 OCR 语言,与安装步骤中设置的 'OCR_LANG' 保持一致。

更多环境变量配置 (可选)

'env' 字段还支持以下额外的环境变量配置,可以根据需要进行设置:

  • 'OMNI_PARSER_BACKEND_LOAD': 设置为 '1' 可以解决与其他客户端(如 LibreChat)的兼容性问题。
  • 'TARGET_WINDOW_NAME': 指定要操作的目标窗口名称,如果不设置则操作整个屏幕。
  • 'OMNI_PARSER_SERVER': 如果希望将 OmniParser 处理放在另一台设备上,可以指定 OmniParser 服务器的地址和端口,例如 '"127.0.0.1:8000"'。OmniParser 服务器可以使用 'uv run omniparserserver' 命令启动。
  • 'SSE_HOST', 'SSE_PORT': 如果指定了这两个环境变量,则使用 SSE 协议进行通信,而不是默认的 stdio。
  • 'SOM_MODEL_PATH', 'CAPTION_MODEL_NAME', 'CAPTION_MODEL_PATH', 'OMNI_PARSER_DEVICE', 'BOX_TRESHOLD': 这些是 OmniParser 的高级配置选项,通常情况下无需修改。

基本使用方法

  1. 启动 OmniParser AutoGUI MCP 服务器。

  2. 在 MCP 客户端(如 Claude)中配置并连接到该服务器。

  3. 在 LLM 的 Prompt 中,可以使用服务器提供的工具 (Tools) 来控制 GUI。例如:

    • 使用 'omniparser_details_on_screen' 工具获取屏幕元素信息。
    • 使用 'omniparser_click' 工具点击屏幕上的元素,例如 ID 为 '0' 的元素:'omniparser_click(id=0)'。
    • 使用 'omniparser_write' 工具在当前激活的输入框中输入文本:'omniparser_write(content="Hello")'。
    • 更多工具的使用方法请参考代码中的函数注释。

示例

在 'langchain_example.py' 文件中提供了一个使用 Langchain 框架调用 OmniParser AutoGUI MCP 服务器的示例。可以参考该示例了解如何在 LLM 应用中使用此 MCP 服务器。

信息

分类

桌面与硬件