macOS应用控制服务器

MCP服务器通过Swift实现,利用macOS的无障碍API控制应用程序,适用于自动化测试和辅助功能开发。

  • by mediar-ai
  • Swift
  • 本地部署
  • 355 星标
  • 更新于
在 GitHub 查看 mediar-ai/mcp-server-macos-use

使用说明

mcp服务器macos使用

官方网站:https://macos-use.dev/

Swift中的模型上下文协议(MCP)服务器。它允许通过利用可访问性API来控制macOS应用程序,主要是通过 MacosUseSDK.

您可以在Claude Desktop或其他兼容的MCP客户端中使用它。

服务器通过标准输入/输出监听MCP命令(stdio)并公开了几个与应用程序交互的工具。

https://github.com/user-attachments/assets/cd203171-bac6-4124-9a58-59947a25be07

https://github.com/user-attachments/assets/f274560a-559f-4140-b133-c0b5c500a02d

可用工具

服务器通过公开以下工具 CallTool MCP方法:

  1. macos-use_open_application_and_traverse

    • 说明: 打开或激活指定的应用程序,然后遍历其可访问性树。
    • 参数:
      • identifier (String,必填):应用程序的名称、包ID或文件路径。
  2. macos-use_click_and_traverse

    • 说明: 在目标应用程序窗口内的特定坐标(由PID标识)处模拟鼠标点击,然后遍历其可访问性树。
    • 参数:
      • pid (数字,必填):目标应用程序的进程ID(PID)。
      • x (数字,必填):单击的X坐标(相对于窗口/屏幕,取决于SDK行为)。
      • y (数字,必填):单击的Y坐标。
  3. macos-use_type_and_traverse

    • 说明: 模拟在目标应用程序(由PID标识)中键入文本,然后遍历其可访问性树。
    • 参数:
      • pid (数字,必填):目标应用程序的进程ID(PID)。
      • text (字符串,必填):要键入的文本。
  4. macos-use_press_key_and_traverse

    • 说明: 模拟按住可选的修饰键按下特定的键盘键(例如“Enter”、“Tab”、“a”、“B”),以PID指定的应用程序为目标,然后遍历其可访问性树。
    • 参数:
      • pid (数字,必填):目标应用程序的进程ID(PID)。
      • keyName (String,必填):密钥的名称(例如。, Return, Escape, ArrowUp, Delete, a, B).如果没有活动修饰符,则对字母区分大小写。
      • modifierFlags (数组,可选):按下时要按住的修饰键数组。有效值: CapsLock (或 Caps), Shift, Control (或 Ctrl), Option (或 Opt, Alt), Command (或 Cmd), Function (或 Fn), NumericPad (或 Numpad), Help.
  5. macos-use_refresh_traversal

    • 说明: 仅对指定的应用程序(由PID标识)执行可访问性树遍历。可用于在不执行操作的情况下获取当前UI状态。
    • 参数:
      • pid (数字,必填):要遍历的应用程序的进程ID(PID)。

通用可选参数(用于 CallTool)

这些可能会在 arguments 任何工具调用的对象都可以覆盖默认值 MacosUseSDK 行为(参见 ActionOptions 在代码中):

  • traverseBefore (布尔值,可选):在主要操作之前遍历可访问性树。
  • traverseAfter (布尔值,可选):在主要操作之后遍历可访问性树(通常默认为true)。
  • showDiff (布尔值,可选):包括遍历之间的差异(如果适用)。
  • onlyVisibleElements (布尔值,可选):将遍历限制为可见元素。
  • showAnimation (布尔值,可选):显示动作的视觉反馈动画。
  • animationDuration (数字,可选):反馈动画的持续时间。
  • delayAfterAction (数字,可选):执行操作后添加延迟。

依赖项

  • MacosUseSDK (假设本地或外部Swift包提供macOS控制功能)

建立和运行

# Example build command (adjust as needed, use 'debug' for development)
swift build -c debug # Or 'release' for production

# Running the server (it communicates via stdin/stdout)
./.build/debug/mcp-server-macos-use

与客户端集成(示例:Claude Desktop)

构建后,您需要告诉客户端应用程序在哪里可以找到服务器可执行文件。例如,要配置Claude Desktop,您可以在其配置中添加以下内容:

{
    "mcpServers": {
        "mcp-server-macos-use": {
            "command": "/path/to/your/project/mcp-server-macos-use/.build/debug/mcp-server-macos-use"
        }
    }
}

替换 /path/to/your/project/ 与您的实际绝对路径 mcp-server-macos-use 目录。

帮助

接触matt@mediar.ai Discord:m13v_

计划

很乐意根据您的需求定制服务器,随时提出问题或联系