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) 等。
安装步骤
-
克隆仓库:
git clone --recursive https://github.com/NON906/omniparser-autogui-mcp.git cd omniparser-autogui-mcp请务必使用 '--recursive' 参数,以便同步子模块。
-
安装依赖:
uv sync如果需要使用 'langchain_example.py' 示例,请使用 'uv sync --extra langchain'。
-
设置 OCR 语言 (可选):
set OCR_LANG=en或者在非 Windows 系统上使用 'export OCR_LANG=en'。 可以根据需要修改 'en' 为其他 PaddleOCR 支持的语言。
-
下载模型:
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 的高级配置选项,通常情况下无需修改。
基本使用方法
-
启动 OmniParser AutoGUI MCP 服务器。
-
在 MCP 客户端(如 Claude)中配置并连接到该服务器。
-
在 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 服务器。
信息
分类
桌面与硬件