Apple Tools (Unified)
PYPI · APPLE-TOOLS-MCP · 2 COMPONENTS
Unified Apple ecosystem MCP server for macOS: Mail, Calendar, Notes, Files, Messages, and more.
Available components
Last scanned (23 hours ago)
Scores higher than 99% of PyPI servers
Category Productivity and Notes
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs setuptools.build_meta at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 1 of 39 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to JonathanRReed/Apple-MCPs). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 16830 tokens (~82/item across 203 items; 184 tools + 19 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 14 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 186 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 22 Oct 26 +6
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Schema quality: 44 → 82 ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Tool coverage: 1% → 100% ▲ functional
- Schema quality: poor → good functional
- Package version: 1.1.2 → 1.1.3 functional
- 18 Oct 26 0
- Stability: 0.97 → pass security
- 17 Oct 26 +41
- Injection markers: unverified → pass ▲ security
- Stability: unverified → 0.97 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 100 ▲ functional
- Package version: 1.0.5 → 1.1.2 functional
- 16 Oct 26 0
- Package version: 1.0.5 → 1.1.2 functional
- 15 Oct 26 0
- Tool safety: Tool safety not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool text to scan. security
- Stability: Stability not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to compare. security
- Tool coverage: Tool coverage not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool definitions to assess. functional
- Capabilities: Protocol version not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we never saw its MCP handshake. functional
- Schema quality: Schema quality not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to assess. functional
- 14 Oct 26 0
- Stability: Stability not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to compare. security
- Tool safety: Tool safety not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool text to scan. security
- Schema quality: Schema quality not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no schema to assess. functional
- Capabilities: Protocol version not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we never saw its MCP handshake. functional
- Tool coverage: Tool coverage not yet verified: this server's registry entry declares environment variables (an API key or similar), and its server did not start in our sandbox, so we have no tool definitions to assess. functional
- Package version: 1.0.5 → 1.1.2 functional
- Package version: 1.0.5 → 1.1.1 functional
- 13 Oct 26 0
- Package version: 1.0.5 → 1.1.1 functional
- 12 Oct 26 −41
- Tool safety: pass → unverified ▼ security
- Stability: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 1.0.5 → 1.1.0 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 23 Oct 2026 · Analysed pypi/apple-tools-mcp@1.1.3
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | JonathanRReed/Apple-MCPs |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/JonathanRReed/Apple-MCPs/.github/workflows/release.yml@refs/tags/v1.1.3 |
| Rekor log index | 3371477963 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:855b038a07c665f7f7d1e5831e19e5244475e154f09059fa9837c11ec58db7c3 |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | setuptools.build_meta |
Background: Why install scripts are a supply-chain risk →
Dependencies 39 packages
| Packages resolved | 39 |
|---|---|
| No linked repository | 1 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
system_get_accessibility_settings Get Accessibility Settings ~25
Read common macOS accessibility settings such as reduce motion and increase contrast.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_appearance_settings Get Appearance Settings ~27
Read current macOS appearance settings such as light or dark mode and accent color.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_battery Get Battery ~19
Get the current battery state from macOS.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_clipboard Get Clipboard ~17
Read the current text clipboard contents.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_context_snapshot Get System Context Snapshot ~29
Return a richer macOS context snapshot, including battery, frontmost app, and Focus metadata.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_dock_settings Get Dock Settings ~29
Read common macOS Dock settings such as autohide, magnification, and orientation.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_finder_settings Get Finder Settings ~30
Read common macOS Finder settings such as path bar, status bar, and preferred view style.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_focus_status Get Focus Status ~23
Return truthful Focus support metadata and the best available current Focus state.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_frontmost_app Get Frontmost App ~21
Get the name of the current frontmost application.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_get_settings_snapshot Get Settings Snapshot ~27
Return a combined read-only snapshot of appearance, accessibility, Dock, and Finder settings.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_choose_popup_value Choose Pop-Up Value ~256
Choose a value from a named pop-up button in the front window of a named application. This is a GUI fallback tool. Requires application or bundle_id naming a running app whose bundle id is listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (comma-separated bundle ids; GUI input is off while it is empty). Input is never sent to the frontmost app implicitly. Terminals, script editors and automation apps are always refused, even if allow-listed.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to send input to, for example TextEdit. Provide application or bundle_id; the app's bundle id must be listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. |
| bundle_id | – | – | Bundle identifier of a running application to send input to, for example com.apple.TextEdit. Takes precedence over application. Provide application or bundle_id; it must be listed in APPLE_SYSTEM_MCP… |
| description | – | – | Accessibility description of the pop-up button, used when label is null. |
| label | – | yes | Exact name of the pop-up button in the front window, or null to match by description. |
| value | string | yes | Exact title of the menu item to choose from the pop-up. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_click_button Click Button ~243
Click a named button in the front window of a named application. This is a GUI fallback tool. Requires application or bundle_id naming a running app whose bundle id is listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (comma-separated bundle ids; GUI input is off while it is empty). Input is never sent to the frontmost app implicitly. Terminals, script editors and automation apps are always refused, even if allow-listed.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to send input to, for example TextEdit. Provide application or bundle_id; the app's bundle id must be listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. |
| bundle_id | – | – | Bundle identifier of a running application to send input to, for example com.apple.TextEdit. Takes precedence over application. Provide application or bundle_id; it must be listed in APPLE_SYSTEM_MCP… |
| description | – | – | Accessibility description of the button, used when label is omitted. |
| index | integer | – | Which matching button to click when several match, starting at 1. |
| label | – | – | Exact button name in the front window. Provide label or description. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_click_menu_path Click Menu Path ~236
Click a menu path in a named application, for example ['File', 'New Window']. This is a GUI fallback tool. Requires application or bundle_id naming a running app whose bundle id is listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (comma-separated bundle ids; GUI input is off while it is empty). Input is never sent to the frontmost app implicitly. Terminals, script editors and automation apps are always refused, even if allow-listed.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to send input to, for example TextEdit. Provide application or bundle_id; the app's bundle id must be listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. |
| bundle_id | – | – | Bundle identifier of a running application to send input to, for example com.apple.TextEdit. Takes precedence over application. Provide application or bundle_id; it must be listed in APPLE_SYSTEM_MCP… |
| menu_path | array | yes | Menu titles from the menu bar item down to the item to click, at least two entries, for example ["File", "New Window"]. Titles must match exactly. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_list_menu_bar_items List Menu Bar Items ~84
List the top-level menu bar items for an application. This is a GUI fallback tool.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to target, for example Safari. Omit both application and bundle_id to target the frontmost app. |
| bundle_id | – | – | Bundle identifier of a running application, for example com.apple.Safari. Takes precedence over application. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_press_keys Press Keys ~253
Press a key or key chord in a named application. This is a GUI fallback tool. Requires application or bundle_id naming a running app whose bundle id is listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (comma-separated bundle ids; GUI input is off while it is empty). Input is never sent to the frontmost app implicitly. Terminals, script editors and automation apps are always refused, even if allow-listed.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to send input to, for example TextEdit. Provide application or bundle_id; the app's bundle id must be listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. |
| bundle_id | – | – | Bundle identifier of a running application to send input to, for example com.apple.TextEdit. Takes precedence over application. Provide application or bundle_id; it must be listed in APPLE_SYSTEM_MCP… |
| key | string | yes | A printable character such as n, or a special key: return, enter, tab, space, escape, delete, forward_delete, left, right, up, down. |
| modifiers | – | – | Modifier keys held during the press: command, control, option, shift. Omit for none. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_gui_type_text Type Text ~209
Type text into the focused control of a named application. This is a GUI fallback tool. Requires application or bundle_id naming a running app whose bundle id is listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (comma-separated bundle ids; GUI input is off while it is empty). Input is never sent to the frontmost app implicitly. Terminals, script editors and automation apps are always refused, even if allow-listed.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Name of a running application to send input to, for example TextEdit. Provide application or bundle_id; the app's bundle id must be listed in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. |
| bundle_id | – | – | Bundle identifier of a running application to send input to, for example com.apple.TextEdit. Takes precedence over application. Provide application or bundle_id; it must be listed in APPLE_SYSTEM_MCP… |
| text | string | yes | Text typed as keystrokes into the focused control of the target application. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_health System Health ~16
Report the active Apple System MCP configuration.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | yes | – |
| ok | boolean | – | – |
| safety_mode | string | yes | – |
| safety_mode_warning | – | – | Set when the configured safety value was invalid or blank and the server fell back to a safer mode |
| server_name | string | yes | – |
| supports | array | yes | – |
| transport | string | yes | – |
| version | string | yes | – |
No examples provided.
system_list_running_apps List Running Apps ~16
List currently running foreground applications.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_list_settings_domains List Settings Domains ~23
List the common macOS preference domains exposed by Apple System MCP.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_open_application Open Application ~58
Open an application by name using macOS.
| Name | Type | Req | Description |
|---|---|---|---|
| application | – | – | Application name to open, for example Safari. Provide application or bundle_id. |
| bundle_id | – | – | Application bundle identifier, for example com.apple.Safari. Takes precedence over application. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_read_preference_domain Read Preference Domain ~86
Read a macOS preference domain through defaults export for a production-safe, structured settings view.
| Name | Type | Req | Description |
|---|---|---|---|
| current_host | boolean | – | True to read the per-host (defaults -currentHost) variant of the domain. |
| domain | string | yes | Preference domain name, for example com.apple.finder or NSGlobalDomain (-g also works). File paths and command options are rejected. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_appearance_mode Set Appearance Mode ~35
Set macOS appearance mode to light or dark.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | yes | light or dark (case-insensitive). |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_clipboard Set Clipboard ~37
Write text into the macOS clipboard.
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Text to place on the clipboard; replaces the current clipboard contents. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_dock_autohide Set Dock Autohide ~40
Enable or disable Dock autohide.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to hide the Dock automatically, false to keep it visible. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_dock_show_recents Set Dock Show Recents ~42
Enable or disable recent applications in the Dock.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to show recent apps in the Dock, false to hide them. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_finder_path_bar Set Finder Path Bar ~39
Show or hide the Finder path bar.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to show the Finder path bar, false to hide it. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_finder_status_bar Set Finder Status Bar ~39
Show or hide the Finder status bar.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to show the Finder status bar, false to hide it. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_increase_contrast Set Increase Contrast ~41
Enable or disable macOS increase contrast accessibility mode.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to turn on Increase Contrast, false to turn it off. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_reduce_motion Set Reduce Motion ~39
Enable or disable macOS reduce motion accessibility mode.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to turn on Reduce Motion, false to turn it off. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_reduce_transparency Set Reduce Transparency ~40
Enable or disable macOS reduce transparency accessibility mode.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to turn on Reduce Transparency, false to turn it off. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_show_all_extensions Set Show All Extensions ~40
Show or hide filename extensions in macOS.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to show all filename extensions in Finder, false to hide them. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_set_show_hidden_files Set Show Hidden Files ~38
Show or hide hidden files in Finder.
| Name | Type | Req | Description |
|---|---|---|---|
| enabled | boolean | yes | True to show hidden files in Finder, false to hide them. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_show_notification Show Notification ~46
Display a local macOS notification.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | Main notification text. |
| subtitle | – | – | Optional line shown under the title. |
| title | string | yes | Notification title. |
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
system_status System Status ~21
Return current battery, frontmost app, and running app count.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| result | – | yes | – |
No examples provided.
How do I install the Apple Tools (Unified) MCP server?
Apple Tools (Unified) runs locally as a PyPI package, launched with uvx apple-tools-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · apple-tools-mcp
claude mcp add jonathanrreed-apple-tools-mcp -- uvx apple-tools-mcp
What is the Apple Tools (Unified) MCP server?
Apple Tools (Unified) is an MCP server listed in the public MCP registry as io.github.JonathanRReed/apple-tools-mcp. Unified Apple ecosystem MCP server for macOS: Mail, Calendar, Notes, Files, Messages, and more. This page covers its PyPI package (apple-tools-mcp).
Is the Apple Tools (Unified) MCP server safe to use?
Apple Tools (Unified) scores 97 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 October 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Apple Tools (Unified) MCP server expose?
Apple Tools (Unified) exposes 184 tools: apple_get_preferences, apple_detect_defaults, apple_update_preferences, apple_detect_digest_folder, apple_set_digest_folder, and 179 more. Their descriptions and schemas cost roughly 16,164 tokens of context every time the server is loaded.
Is the Apple Tools (Unified) MCP server still maintained?
Apple Tools (Unified) is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Apple Tools (Unified) MCP server under?
Apple Tools (Unified) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.