
MacOS使用
STDIO通过辅助功能API控制macOS应用的服务器
通过辅助功能API控制macOS应用的服务器
Model Context Protocol (MCP) server in Swift. It allows controlling macOS applications by leveraging the accessibility APIs, primarily through the MacosUseSDK
.
You can use it in Claude Desktop or other compatible MCP-client.
The server listens for MCP commands over standard input/output (stdio
) and exposes several tools to interact with applications.
https://github.com/user-attachments/assets/b43622a3-3d20-4026-b02f-e9add06afe2b
The server exposes the following tools via the CallTool
MCP method:
macos-use_open_application_and_traverse
identifier
(String, Required): The application's name, bundle ID, or file path.macos-use_click_and_traverse
pid
(Number, Required): The Process ID (PID) of the target application.x
(Number, Required): The X-coordinate for the click (relative to the window/screen, depending on SDK behavior).y
(Number, Required): The Y-coordinate for the click.macos-use_type_and_traverse
pid
(Number, Required): The Process ID (PID) of the target application.text
(String, Required): The text to be typed.macos-use_press_key_and_traverse
pid
(Number, Required): The Process ID (PID) of the target application.keyName
(String, Required): The name of the key (e.g., Return
, Escape
, ArrowUp
, Delete
, a
, B
). Case-sensitive for letters if no modifiers are active.modifierFlags
(ArrayCapsLock
(or Caps
), Shift
, Control
(or Ctrl
), Option
(or Opt
, Alt
), Command
(or Cmd
), Function
(or Fn
), NumericPad
(or Numpad
), Help
.macos-use_refresh_traversal
pid
(Number, Required): The Process ID (PID) of the application to traverse.Common Optional Parameters (for CallTool
)
These can potentially be passed in the arguments
object for any tool call to override default MacosUseSDK
behavior (refer to ActionOptions
in the code):
traverseBefore
(Boolean, Optional): Traverse accessibility tree before the primary action.traverseAfter
(Boolean, Optional): Traverse accessibility tree after the primary action (usually defaults to true).showDiff
(Boolean, Optional): Include a diff between traversals (if applicable).onlyVisibleElements
(Boolean, Optional): Limit traversal to visible elements.showAnimation
(Boolean, Optional): Show visual feedback animation for actions.animationDuration
(Number, Optional): Duration of the feedback animation.delayAfterAction
(Number, Optional): Add a delay after performing the action.MacosUseSDK
(Assumed local or external Swift package providing macOS control functionality)# 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
Integrating with Clients (Example: Claude Desktop)
Once built, you need to tell your client application where to find the server executable. For example, to configure Claude Desktop, you might add the following to its configuration:
{ "mcpServers": { "mcp-server-macos-use": { "command": "/path/to/your/project/mcp-server-macos-use/.build/debug/mcp-server-macos-use" } } }
Replace /path/to/your/project/
with the actual absolute path to your mcp-server-macos-use
directory.
Reach out to [email protected] Discord: m13v_
Happy to tailor the server for your needs, feel free to open an issue or reach out