mac-use
Enables control of the local macOS desktop, providing tools for screenshots, mouse movement and clicking, dragging, scrolling, typing text, and sending keyboard shortcuts with modifiers.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mac-useTake a screenshot of my screen and describe what you see."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mac Use
Local Mac desktop control for Grok and Cursor via a bundled stdio MCP server.
HID input matches Dottie: CGEvent posted on .cghidEventTap. Coordinates are screen points (main display, origin top-left). Screenshots are resized to that size, so image pixels and clicks share one space.
What it is
Surface | Use when |
Mac Use (this plugin) | Native Mac apps, Finder, system UI on the user Mac |
Browser Use | The task is primarily a website |
Remote Linux desktop | Work on a box desktop — not this plugin |
Prefer the smallest surface that fits.
Related MCP server: macinput
Install
Grok
grok plugin install /path/to/mac-use --trustOr add the folder under ~/.grok/plugins/ (auto-trusted) and enable it.
Cursor
mkdir -p ~/.cursor/plugins/local
ln -s /path/to/mac-use ~/.cursor/plugins/local/mac-use
cd ~/.cursor/plugins/local/mac-use && npm installThen Developer: Reload Window. Call mac_use_status.
First input/screenshot compiles server/helper.swift with swiftc (Xcode or CLT).
macOS permissions
Grant Accessibility and Screen Recording to:
mac-use-helper(built next to the Swift source)The host that launched the MCP server (Grok, Cursor, or Terminal)
mac_use_status requests the TCC prompt and opens the matching Settings pane when a grant is missing. After you flip the toggle, quit and reopen Grok.
Tools
Tool | Purpose |
| Platform, AX / Screen Recording, driver |
| Main display points (origin top-left) |
| PNG whose pixels match those points |
| Absolute |
| HID click at points (or current cursor) |
| Left-button drag in points |
| Unicode into the focused app (no clipboard) |
| Key + modifiers; destructive chords need |
| HID wheel at |
Always screenshot after acting. Confirm before destructive actions. Do not paste secrets from chat into type_text.
Agent loop
mac_use_statusscreenshot(orget_screen_size)One action in those points
Screenshot again
Dev
cd ~/Desktop/projects/mac-use
npm install
npm run build-helper
npm test
npm start # stdio MCPEntry:
server/index.jsDriver:
server/driver-impl.js→server/helper.swiftCursor:
.cursor-plugin/plugin.json+mcp.jsonGrok:
plugin.json+.mcp.jsonSkill:
skills/mac-use/SKILL.md
License
MIT / Steve Derico
Available Tools
9 toolsclickB
HID click at screen points (x, y), or at the current cursor if x/y omitted. Same coordinates as the screenshot.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| button | No | ||
| clicks | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral transparency burden. It adds useful behavior context: clicking at specified coordinates, fallback to current cursor when x/y omitted, and coordinate alignment with screenshots. However, it omits behavioral details like default button, click count behavior, or side effects, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence conveys the core action and parameters, and the second clarifies coordinate alignment. Every sentence earns its place; concision is excellent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four optional parameters, no annotations, and no output schema. The description provides only x/y behavior and coordinate system context. It does not address button options, click counts, defaults, or potential effects, leaving the tool under-specified for robust use by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains x and y semantics (coordinates and optional omission) but completely ignores 'button' and 'clicks', leaving those parameter meanings to be inferred from the schema alone. This is insufficient for full parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool performs a click at screen coordinates or current cursor, with a specific verb ('click') and resource ('screen points'). It also distinguishes from sibling tools like mouse_move and mouse_drag by clarifying the click action and coordinate system.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus alternatives such as mouse_move, mouse_drag, or scroll. It implies usage through the verb 'click' but does not provide context, exclusions, or mention scenarios where the click tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screen_sizeA
Return main display width/height in screen points (origin top-left). Same space as screenshot and click.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the output units (screen points) and coordinate origin (top-left), which are behavioral details beyond the tool name. It doesn't mention any side effects, but for a read-only getter no such disclosure is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every word adds value. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description provides all necessary context: what it returns, units, origin, and relationship to sibling tools. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter information because none exists, and the schema is empty. This is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns main display width/height in screen points, using a specific verb ('Return') and resource ('main display'). It also distinguishes itself from sibling tools by noting the coordinate space aligns with screenshot and click, making it uniquely about display dimensions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it doesn't explicitly say 'use when needing coordinate space,' it provides context by stating 'Same space as screenshot and click,' which implies when to use it for coordinating with other tools. No alternatives are mentioned, but for a simple query tool this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keyB
Key event to the focused app. direction press (default), down, or up. Destructive chords (cmd+q, cmd+w, cmd+delete) require confirmed=true.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| confirmed | No | ||
| direction | No | ||
| modifiers | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the transparency burden. It discloses a key behavioral constraint: destructive chords require confirmed=true. However, it omits other behaviors such as how key strings are interpreted, what happens when confirmed=false, and whether modifiers must be specified in any particular order. This is a moderate level of disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, then the key usage constraint. Every word earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four parameters, no annotations, and no output schema, the description is insufficient for fully reliable invocation. It lacks critical details like acceptable key string formats, how modifiers combine, and behavior when confirmed is false. The safety note about destructive chords is valuable, but the tool still has major unexplained surface area.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds value by defining the default for direction ('press') and explaining the confirmed flag's necessity for destructive chords. However, it does not clarify the format or expected values for the 'key' parameter, which is the primary input, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that the tool sends a 'Key event to the focused app', clearly indicating it simulates keyboard input. It distinguishes from sibling tools like mouse_move and type_text by focusing on key events, though the verb is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives. For example, it does not mention that this should be used for key combinations/shortcuts as opposed to type_text for normal text input. The only instruction is about direction and confirmed for destructive chords, which is parameter-level guidance, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mac_use_statusA
Report platform, Accessibility / Screen Recording, and Mac Use readiness.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. The verb 'Report' implies a read-only operation, which is useful, but the description does not disclose whether it performs active checks or merely returns cached status, nor does it specify any side effects or permissions required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to specifying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what the agent can expect in the response. It names the categories reported but does not indicate the format (e.g., booleans, versions, strings) or how readiness is represented, leaving some ambiguity for a simple status tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema already covers everything. The description needs no parameter detail, and the baseline of 4 applies because there are no parameter semantics to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Report') and clearly names the resource scope ('platform, Accessibility / Screen Recording, and Mac Use readiness'). It distinguishes itself from the sibling action-oriented tools by announcing itself as a status/readiness check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given for when to use this tool versus alternatives. It is implied that this is a pre-flight check for the screen-control sibling tools, but the description never states that usage context or contrasts it with any other tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_dragA
Left-button HID drag from (fromX, fromY) to (toX, toY) in screen points.
| Name | Required | Description | Default |
|---|---|---|---|
| toX | Yes | ||
| toY | Yes | ||
| fromX | Yes | ||
| fromY | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that it is a left-button HID-level drag and uses screen points, which is useful. However, it does not mention details like coordinate origin, drag speed, whether the button is released at the end, or any side effects beyond the drag itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that conveys the essential action and parameters with no wasted words. It is front-loaded and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter input tool with no output schema and no annotations, the description is mostly complete: it states the action, the input points, and that coordinates are screen points. It lacks guidance on alternative tools, but the core functionality is well-covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The phrase 'from (fromX, fromY) to (toX, toY)' clearly maps the four parameters to endpoints, but it does not define the coordinate system origin or units beyond 'screen points'. Parameter names are self-explanatory, but deeper semantics are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('drag') and identifies the exact resource and action: a left-button HID drag from one coordinate to another. It clearly distinguishes from sibling tools like mouse_move or click by specifying the left-button press-and-move behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (whenever a drag action is needed) but does not explicitly state when not to use it or compare it to alternatives like mouse_move or click. It provides no exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mouse_moveA
Move the cursor. Absolute: x and y (global points, origin top-left). Relative: dx and/or dy. Returns position and display size.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| dx | No | ||
| dy | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description fully carries the burden. It discloses the coordinate origin (top-left), movement modes, and the return value (position and display size). However, it omits behavior when no parameters are passed or whether absolute and relative can combine.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main action ('Move the cursor'), containing no filler. Each clause delivers distinct information: movement modes, coordinate origin, and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with 4 optional parameters and no output schema, the description covers core semantics (absolute vs. relative, return value) and coordinate origin. It lacks edge cases like multi-display behavior or no-parameter invocation, but is otherwise complete enough for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must explain parameters. It does clarify that x/y are absolute global points and dx/dy are relative, adding meaning beyond the schema. Still, it leaves out units, precedence, and optionality details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Move the cursor' with a specific verb and resource, and clearly distinguishes absolute (x, y) from relative (dx, dy) movement. This uniquely identifies it among sibling mouse tools like click or mouse_drag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's purpose implies when to use it (when cursor movement is needed), but there is no explicit when-not-to-use guidance or comparison to alternatives like mouse_drag. The absolute/relative distinction hints at parameter choice, but no direct exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotA
Capture the main display as PNG. Image pixels match screen points — click those coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses output format (PNG) and a critical behavior (pixels match screen points), which is essential for subsequent clicks. It does not mention side effects or permissions, but for a read-only capture tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no fluff. The critical information (PNG output and coordinate alignment) is front-loaded and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description is nearly complete. It explains output format and coordinate mapping, but does not specify whether the PNG is returned as data or a path. Given the low complexity, this minor gap is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds no parameter-specific detail, but none is needed. It appropriately implies that no configuration is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Capture') and resource ('main display as PNG'), distinguishing it from sibling tools like mouse_move or click. It also adds a unique detail about pixel-to-screen point mapping, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for visual context and coordinate reference, but does not explicitly contrast with alternatives like get_screen_size. The coordinate-mapping hint provides clear context, and no exclusion criteria are needed given the tool's unique role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrollB
HID scroll wheel at (x, y). dy>0 scrolls down. Optional dx.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| dx | No | ||
| dy | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It discloses dy direction but leaves dx direction undefined, and does not clarify whether the pointer is moved to (x,y) before scrolling or how coordinates are interpreted (screen vs window). This is a significant gap for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and location, no wasted words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A simple tool but under-described: dx semantics are missing, coordinate system is ambiguous, and no behavioral details beyond dy direction. Without annotations or output schema, the description should provide more context to be fully usable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description adds meaning for x and y as coordinates and for dy (dy>0 scrolls down), but dx is only marked optional without explaining its direction or effect. Partial compensation, but incomplete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific action (HID scroll wheel), the target location (x, y), and directional behavior (dy>0 scrolls down). This clearly distinguishes it from sibling tools like mouse_move, click, and mouse_drag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: scroll when you need to wheel-scroll at a position, distinct from moving or clicking. However, no explicit when-to-use or alternative comparisons are provided, so it earns an implied-usage score rather than a stronger one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
type_textA
Type unicode into the focused app (HID). Click the field first. No clipboard. For shortcuts use key.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals key traits: operates via HID, types into the focused app, and does not use the clipboard. This is helpful but could go further by noting limitations, such as how keyboard layout or special characters are handled, though for a simple tool it adequately covers the essentials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: three short sentences each earning their place. It front-loads the core purpose, then adds essential guidance and a key exception, with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter, no output schema, and no annotations, the description is sufficiently complete. It covers purpose, prerequisite, behavioral traits (HID, no clipboard), and alternative tool usage. No major gaps remain for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single 'text' parameter with no description (coverage 0%), so the description must compensate. It does so by stating that the tool 'types unicode' and explicitly mentions 'No clipboard', clarifying that the text is typed directly via HID rather than pasted. This adds meaningful context beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Type unicode into the focused app (HID).' It clearly states what the tool does and distinguishes it from the sibling 'key' tool by specifying that shortcuts should use 'key' instead.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Click the field first' instructs the user on the required prerequisite. 'For shortcuts use key' explicitly names an alternative tool and specifies when this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool serves a distinct purpose: status, screen info, capture, cursor movement, clicking, dragging, typing, key events, and scrolling. There is no overlap in function; even mouse_move and click are clearly separated by action type.
Most tools follow a verb_noun pattern like get_screen_size, mouse_move, type_text, but a few are single verbs (click, key, scroll) or nouns (screenshot, mac_use_status). All use consistent snake_case, so the minor deviations are acceptable.
Nine tools is a well-scoped set for GUI automation on macOS, covering the essential input and display actions without redundancy. The count is within the ideal 3-15 range and each tool earns its place.
The set provides comprehensive coverage of mouse, keyboard, screen capture, and status checking. Minor gaps include no explicit right-click or double-click, and no clipboard interaction (though type_text covers typing), but these are workable limitations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that allows AI tools like Claude Desktop, Claude Code, and Cursor to visually interact with macOS applications by capturing screenshots and controlling the mouse and keyboard.14
- AlicenseNot gradedqualityDmaintenanceAn MCP server for macOS that enables AI agents to control the desktop GUI through keyboard input, mouse actions, and screen captures. It provides stable low-level primitives for UI automation and agent-driven desktop workflows.MIT
- AlicenseNot gradedqualityCmaintenanceStandalone MCP server that gives AI agents full GUI control over macOS — screenshots, mouse, keyboard, apps, clipboard, and multi-display — with zero private dependencies.18MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for AI agents to control a Mac via screen and mouse/keyboard, supporting Anthropic Claude and OpenAI for task automation.236Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/stevederico/mac-use'
If you have feedback or need assistance with the MCP directory API, please join our Discord server