返回市场
全能MCP

全能MCP

作者:OpenAdaptAI64 星标更新:2025-04-08

项目介绍

OmniMCP

CI License: MIT Python Version Code style: ruff

OmniMCP通过模型上下文协议(MCP)microsoft/OmniParser,为AI模型提供了丰富的用户界面上下文和交互能力。它专注于通过视觉分析、结构化规划和精确的交互执行来实现对用户界面的深入理解。

核心特性

  • 视觉感知: 使用OmniParser理解UI元素。
  • LLM规划: 基于目标、历史和视觉状态规划下一步行动。
  • 代理执行器: 协调感知-规划-执行循环(omnimcp/agent_executor.py)。
  • 动作执行: 通过pynput控制鼠标/键盘(omnimcp/input.py)。
  • CLI接口: 简单的入口点(cli.py)用于运行任务。
  • 自动部署: 可选地在AWS EC2上部署OmniParser服务器并自动关闭。
  • 调试: 按步骤生成带时间戳的视觉日志。

概览

cli.py使用AgentExecutor运行一个感知-规划-执行循环。它捕获屏幕(VisualState),使用LLM进行规划(core.plan_action_for_ui),并执行动作(InputController)。

示例

  • 真实操作(计算器): python cli.py打开计算器并计算5*9。 OmniMCP真实操作演示GIF
  • 合成UI(登录): python demo_synthetic.py使用生成的图像(无实际I/O)。(注意:待重构以使用AgentExecutor)。 OmniMCP合成演示GIF

预备条件

  • Python >=3.10, <3.13
  • 安装了uv (pip install uv)
  • Linux运行时需求: 需要活跃的图形会话(X11/Wayland)用于pynput。可能需要系统库(libx11-dev等) - 请参阅pynput文档。

(macOS显示缩放依赖项在安装期间自动处理)。

对于AWS部署功能

需要在.env中提供AWS凭证(见.env.example)。警告: 创建AWS资源(EC2, Lambda等)会产生费用。使用python -m omnimcp.omniparser.server stop清理。

AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
# OMNIPARSER_URL=http://... # 可选:跳过自动部署

安装

git clone [https://github.com/OpenAdaptAI/OmniMCP.git](https://github.com/OpenAdaptAI/OmniMCP.git)
cd OmniMCP
./install.sh # 创建.venv, 安装依赖包括测试额外项
cp .env.example .env
# 编辑.env中的您的密钥
# 激活: source .venv/bin/activate (Linux/macOS) 或相关Windows命令

快速开始

确保环境已激活且.env已配置。

# 运行默认目标(计算器任务)
python cli.py

# 运行自定义目标
python cli.py --goal "您的目标在这里"

# 查看选项
python cli.py --help

调试输出保存在runs/<时间戳>/

关于MCP服务器: 存在一个实验性的MCP服务器(OmniMCP类在omnimcp/mcp_server.py),但与主要的cli.py/AgentExecutor工作流是分开的。

架构

  1. CLI (cli.py) - 入口点,设置,启动执行器。
  2. 代理执行器 (omnimcp/agent_executor.py) - 协调循环,管理状态/工件。
  3. 视觉状态管理器 (omnimcp/visual_state.py) - 感知(截图,调用解析器)。
  4. OmniParser客户端及部署 (omnimcp/omniparser/) - 管理OmniParser服务器通信/部署。
  5. LLM规划器 (omnimcp/core.py) - 生成行动计划。
  6. 输入控制器 (omnimcp/input.py) - 执行动作(鼠标/键盘)。
  7. (可选)MCP服务器 (omnimcp/mcp_server.py) - 实验性MCP接口。

开发

环境设置及检查

# 设置(如果未完成): ./install.sh
# 激活环境: source .venv/bin/activate (或类似)
# 格式/检查: uv run ruff format . && uv run ruff check . --fix
# 运行测试: uv run pytest tests/

调试支持

运行python cli.py会在runs/中保存带时间戳的运行,包括:

  • step_N_state_raw.png
  • step_N_state_parsed.png (带有元素框)
  • step_N_action_highlight.png (带有动作高亮)
  • final_state.png

详细的日志在logs/run_YYYY-MM-DD_HH-mm-ss.log (LOG_LEVEL=DEBUG.env中推荐)。

<details> <summary>示例日志片段(自动部署+代理步骤)</summary>
# --- 初始化及自动部署 ---
2025-MM-DD HH:MM:SS | INFO     | omnimcp.omniparser.client:... - 未提供server_url,尝试发现/部署...
2025-MM-DD HH:MM:SS | INFO     | omnimcp.omniparser.server:... - 正在创建新的EC2实例...
2025-MM-DD HH:MM:SS | SUCCESS  | omnimcp.omniparser.server:... - 实例i-...正在运行。公共IP: ...
2025-MM-DD HH:MM:SS | INFO     | omnimcp.omniparser.server:... - 正在设置自动关闭基础设施...
2025-MM-DD HH:MM:SS | SUCCESS  | omnimcp.omniparser.server:... - 自动关闭基础设施设置完成...
... (SSH连接,Docker设置) ...
2025-MM-DD HH:MM:SS | SUCCESS  | omnimcp.omniparser.client:... - 自动部署成功。服务器URL: http://...
... (代理执行器初始化) ...

# --- 代理执行循环示例步骤 ---
2025-MM-DD HH:MM:SS | INFO     | omnimcp.agent_executor:run:... - --- 第N/10步 ---
2025-MM-DD HH:MM:SS | DEBUG    | omnimcp.agent_executor:run:... - 感知当前屏幕状态...
2025-MM-DD HH:MM:SS | INFO     | omnimcp.visual_state:update:... - 视觉状态更新完成。找到X个元素。耗时Y.YY秒。
2025-MM-DD HH:MM:SS | INFO     | omnimcp.agent_executor:run:... - 感知到有X个元素的状态。
... (保存工件) ...
2025-MM-DD HH:MM:SS | DEBUG    | omnimcp.agent_executor:run:... - 规划下一步动作...
... (LLM调用) ...
2025-MM-DD HH:MM:SS | INFO     | omnimcp.agent_executor:run:... - LLM计划: 动作=..., 目标ID=..., 目标完成=False
2025-MM-DD HH:MM:SS | DEBUG    | omnimcp.agent_executor:run:... - 添加到历史记录: 第N步: 规划的动作...
2025-MM-DD HH:MM:SS | INFO     | omnimcp.agent_executor:run:... - 执行动作: ...
2025-MM-DD HH:MM:SS | SUCCESS  | omnimcp.agent_executor:run:... - 动作执行成功。
2025-MM-DD HH:MM:SS | DEBUG    | omnimcp.agent_executor:run:... - 第N步耗时: Z.ZZ秒
... (循环继续或结束) ...

(注意:具体细节如时间、计数、IP地址、实例ID和特定计划会有所不同)

</details>

发展路线图及限制

关键限制及未来工作领域:

  • 性能: 减少OmniParser延迟(探索本地模型、缓存等)并优化状态管理(避免完全重新解析)。
  • 鲁棒性: 提升LLM规划可靠性(提示、技术如ReAct),增加动作验证/错误恢复,增强元素定位。
  • 目标API/架构: 向更高级别的声明式API演进(例如,@omni.publish风格),并可能与实验性的MCP服务器(OmniMCP类)集成。
  • 一致性: 重构demo_synthetic.py以使用AgentExecutor
  • 功能: 扩展动作空间(拖拽/释放,悬停)。
  • 测试: 增加端到端测试,扩大跨平台验证,定义评估指标。
  • 研究: 探索微调,过程图(RAG),框架集成。

项目状态

通过cli.py/AgentExecutor的核心循环对于基本任务是可用的。性能和鲁棒性需要显著改进。MCP集成是实验性的。

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 实现更改并添加测试
  4. 确保检查通过(uv run ruff format ., uv run ruff check . --fix, uv run pytest tests/)
  5. 提交拉取请求

许可证

MIT许可证

联系方式