项目简介

“Mac桌面AI助手”是一款专为macOS系统设计的MCP服务器实现,旨在赋能大型语言模型(LLM)通过模拟用户操作来控制本地计算机。它通过提供一系列标准化的“工具”功能,让AI能够启动应用程序、读取屏幕内容、点击UI元素、输入文本和模拟键盘按键等,从而实现桌面任务的自动化和智能化管理。

主要功能点

  • 启动应用程序: AI可以根据名称启动macOS上安装的任何应用程序。
  • 读取屏幕内容: 获取当前活动应用程序的可见文本内容,为AI提供上下文信息。
  • 点击和交互: AI可以识别并点击应用程序界面中的按钮、链接等可交互元素。
  • 输入文本: AI可以在文本框或输入字段中键入文字。
  • 模拟键盘操作: AI可以模拟按下键盘上的任意按键或组合键,例如回车、Tab键等。
  • 打开URL: 可以在指定浏览器(或默认浏览器)中打开网页链接。
  • 滚动操作: 对指定的UI元素进行滚动,或在屏幕的特定位置进行滚动。

安装步骤

  1. 系统要求: 确保您的电脑运行macOS系统,至少有4GB内存和100MB可用磁盘空间,并需要互联网连接进行首次设置。
  2. 下载: 访问仓库的发布页面(通常在GitHub仓库侧边栏的"Releases"区域),下载最新版本的'MCP-server-client-computer-use-ai-sdk.zip'压缩包。
  3. 解压: 将下载的'zip'文件解压到您希望存放项目的目录。
  4. 配置辅助功能权限: 由于此服务器需要控制UI,macOS会要求辅助功能权限。
    • 在首次运行服务器时,系统可能会自动弹出提示。如果未弹出,请手动前往 “系统设置” > “隐私与安全性” > “辅助功能”
    • 在此列表中找到并添加您解压后运行的应用程序(例如,如果运行的是编译后的Node.js桥接脚本,可能是'Node'或'ts-node';如果是直接的Rust二进制文件,则其名称为'server'),并勾选其旁边的复选框以授予权限。 (这是运行此服务器的关键步骤,务必完成)

服务器配置(供MCP客户端使用)

MCP客户端需要以下信息来连接并使用此服务器:

{
  "server_name": "ui-automation-bridge",
  "command": "node",
  "args": ["/path/to/your/extracted/folder/mcp-server-os-level/src/bin/mcp-bridge.js"],
  "description": "连接到Mac桌面AI助手服务器,实现LLM对macOS UI的自动化控制。
                  请确保在运行前将'command'和'args'中的路径替换为实际的Node.js解释器路径和MCP桥接脚本路径,
                  并授予辅助功能权限。"
}

配置说明:

  • 'server_name': 服务器的识别名称,客户端会使用此名称。
  • 'command': 用于启动MCP服务器进程的命令。在此项目中,它指向Node.js解释器,因为服务器通过一个TypeScript桥接脚本('mcp-bridge.ts'编译后的'mcp-bridge.js')提供Stdio接口。
  • 'args': 传递给'command'的参数数组。这里是'mcp-bridge.js'脚本的完整路径。
    • 重要提示: 您需要将'/path/to/your/extracted/folder/'替换为您实际解压'MCP-server-client-computer-use-ai-sdk.zip'的目录路径。
    • 在实际使用前,您可能需要手动将'mcp-server-os-level/src/bin/mcp-bridge.ts'编译为'mcp-server-os-level/src/bin/mcp-bridge.js',或者安装'ts-node'并修改'command'为'ts-node','args'为'mcp-server-os-level/src/bin/mcp-bridge.ts'。

基本使用方法

一旦服务器启动并被MCP客户端连接,LLM就可以调用服务器公开的工具函数来执行桌面操作。

  1. 获取可用工具: LLM会通过MCP的'initialize'请求从服务器获取所有可用的工具函数及其参数定义(例如'clickByIndex', 'typeByIndex', 'openApplication'等)。
  2. 选择并执行工具:
    • 打开应用: LLM可以调用'openApplication'工具,提供'app_name'参数来启动指定应用,例如:'openApplication(appName="Safari")'。
    • 列出UI元素: 启动应用后,LLM通常会调用一个类似'listElementsAndAttributes'的工具(在服务器内部作为辅助功能),获取当前应用界面上所有可交互元素的详细列表,每个元素都有一个唯一的索引、角色、文本内容、位置等信息。
    • 点击元素: 根据获取到的UI元素列表,LLM可以通过调用'clickByIndex'工具,提供元素的'index'参数来点击特定的按钮或链接,例如:'clickByIndex(element_index=5)'。
    • 输入文本: LLM可以通过调用'typeByIndex'工具,提供元素的'index'和要输入的'text'参数,例如:'typeByIndex(element_index=10, text="Hello World")'。
    • 按键: LLM可以使用'pressKeyByIndex'工具,提供'element_index'和'key_combo'(如'"return"', '"cmd+c"')来模拟键盘输入。

服务器在执行完每个操作后,会返回操作结果以及更新后的UI元素列表,供LLM评估操作是否成功并决定下一步行动。

信息

分类

桌面与硬件