Apple System

io.github.JonathanRReed由 GitHub 账号 JonathanRReed 发布v1.1.6更新于 Nov 7, 2026

Read and manage macOS system settings and perform scoped desktop actions.

概览

AI 生成的概览

本地 macOS MCP 服务器,让助手读取系统状态、修改限定范围内的设置,并向白名单应用发送受限的图形界面输入。

可以做什么
  • 读取系统状态:电池、前台应用、运行中的应用、剪贴板、专注模式元数据及综合快照
  • 读取 macOS 设置:外观、辅助功能、程序坞、访达及偏好域
  • 修改设置:外观模式、隐藏文件与扩展名、访达状态栏与路径栏、程序坞自动隐藏与最近应用、减弱动态效果、对比度与透明度
  • 读写剪贴板、显示本地通知、打开应用
  • 图形界面兜底:列出菜单栏项目、点击菜单路径、按键、输入文本、点击按钮、选择弹出菜单值
  • 通过 search_tools、get_tool_info 及提示词工具发现可用工具
适用场景
当助手的回答或操作依赖当前 Mac 桌面状态时适用,也适合让它调整常见 macOS 设置,或在没有原生集成的情况下操作某个应用的菜单和控件。
运行要求
仅限 macOS,通过 uvx 以 stdio 在本地运行(从克隆安装需 Python 3.11+),也可使用提供的安装包。可选环境变量:APPLE_SYSTEM_MCP_SAFETY_MODE(safe_readonly、safe_manage 或 full_access)与 APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS,后者须列出 bundle id 后图形界面输入才可用。可能需要 macOS 辅助功能权限。
安装前请注意
写入类工具会改动真实系统设置,图形界面工具会在真实应用中输入、点击和按键,因此应保持较窄的安全模式与白名单。终端、编辑器与自动化应用即使加入白名单也会被拒绝,因为输入的文字可能被执行。读取剪贴板会暴露已复制的文本,通知和打开应用也是可见操作。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Apple System,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Apple System MCP

Local MCP server for macOS system context, truthful Focus support metadata, assistant-relevant settings reads, explicit settings writes, and bounded GUI fallback automation.

Capabilities

  • battery status
  • frontmost app
  • running applications
  • clipboard read and write
  • local notifications
  • open an application
  • appearance settings
  • accessibility settings
  • Dock settings
  • Finder settings
  • truthful Focus support metadata
  • combined system context snapshots
  • appearance mode write
  • Finder visibility and bar writes
  • Dock write controls for autohide and recent apps
  • accessibility writes for reduce motion, increase contrast, and reduce transparency
  • GUI fallback tools for menu clicks, key presses, text entry, button clicks, and pop-up selection
  • preference-domain inspection via defaults export
  • resources: system://status, system://applications, system://settings, system://context
  • prompt: system_capture_context
  • tool discovery helpers search_tools and get_tool_info for context-constrained clients

Install On This Mac

Quick start (uvx, from PyPI)

With uv installed:

bash
uvx apple-system-mcp

No clone, no venv management.

From a clone
bash
git clone https://github.com/JonathanRReed/Apple-MCPs.gitcd Apple-MCPsuv sync --all-packages

This builds one workspace environment with every server's entry point in .venv/bin (for example .venv/bin/apple-system-mcp). You can also point an MCP client at AppleSystem-MCP/start.sh, which prefers uv run and falls back to a plain venv bootstrap (Python 3.11+ required).

Install In AI Agents

json
{  "mcpServers": {    "apple-system": {      "command": "uvx",      "args": ["apple-system-mcp"],      "env": {        "APPLE_SYSTEM_MCP_SAFETY_MODE": "safe_manage"      }    }  }}

Running from a clone instead? Use /path/to/Apple-MCPs/AppleSystem-MCP/start.sh as the command with empty args.

Claude Code:

bash
claude mcp add --transport stdio --scope user apple-system -- uvx apple-system-mcp

--scope user makes the server available in every project. To share it with one repository through its .mcp.json instead, use --scope project.

Transport

stdio is the default and recommended transport. Set APPLE_SYSTEM_MCP_TRANSPORT=streamable-http (with optional APPLE_SYSTEM_MCP_HOST and APPLE_SYSTEM_MCP_PORT) to serve Streamable HTTP instead.

Prompting Notes

  • tools/list returns the full System tool surface. Context-constrained clients can use search_tools first, then get_tool_info for the System tool they need.
  • Use this server when the user’s current desktop context matters.
  • Read battery state and the frontmost app before interruptive actions.
  • Use the settings tools before falling back to raw defaults read in prompts or E2E checks.
  • Use APPLE_SYSTEM_MCP_SAFETY_MODE=safe_manage for assistant-grade operation.
  • Keep safe_readonly only for audit-only or context-only deployments.
  • Keep GUI fallback narrow. Prefer native app-domain MCPs first, then explicit System tools, then GUI tools only when native support is missing. GUI input needs the target app in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS (see GUI Input Allowlist).
  • Focus reporting is best-effort and truthful. This server does not claim Notification Center history support when macOS does not expose it cleanly on an unsigned local install.

Health And Recovery

  • system_health
  • system_permission_guide
  • system_get_settings_snapshot
  • system_get_focus_status
  • system_get_context_snapshot
  • system_read_preference_domain

Assistant-Grade Control Surface

The launch System write surface is explicit, not generic:

  • system_set_appearance_mode
  • system_set_show_all_extensions
  • system_set_show_hidden_files
  • system_set_finder_path_bar
  • system_set_finder_status_bar
  • system_set_dock_autohide
  • system_set_dock_show_recents
  • system_set_reduce_motion
  • system_set_increase_contrast
  • system_set_reduce_transparency

The bounded GUI fallback surface is:

  • system_gui_list_menu_bar_items
  • system_gui_click_menu_path
  • system_gui_press_keys
  • system_gui_type_text
  • system_gui_click_button
  • system_gui_choose_popup_value

GUI Input Allowlist

The GUI input tools (system_gui_click_menu_path, system_gui_press_keys, system_gui_type_text, system_gui_click_button and system_gui_choose_popup_value) send input only to apps you list in APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS. It is empty by default, so GUI input is off until you set it. system_gui_list_menu_bar_items only reads and needs no allowlist.

  • Format: comma-separated bundle ids, for example com.apple.TextEdit,com.apple.Safari. Case and spaces around commas are ignored. To find an app's bundle id, run osascript -e 'id of app "TextEdit"'.
  • Where to set it: the env block of this server in your MCP client config, for example "APPLE_SYSTEM_MCP_GUI_ALLOWED_APPS": "com.apple.TextEdit,com.apple.Safari". In Claude Desktop, open Settings > Extensions, configure Apple System and fill in "Apps that accept GUI input". Restart the client afterwards.
  • Every GUI input call must name its target with application or bundle_id. Input is never sent to whatever app happens to be frontmost; the target is brought to the front first and the call fails with GUI_TARGET_NOT_FRONTMOST if it does not get there.
  • Terminals, script editors and automation apps are always refused with TERMINAL_TARGET_REFUSED, even if allow-listed, because text typed there can run code. This covers Terminal, iTerm2, Ghostty, Warp, kitty, WezTerm and similar terminals, Script Editor, Automator, Shortcuts, Xcode, VS Code, Cursor, Windsurf, Zed, JetBrains IDEs, BBEdit, Raycast and Alfred.
  • A call to an app outside the list returns GUI_TARGET_NOT_ALLOWED, and its suggestion gives the exact value to add.

Launch Checklist

  • Add uvx apple-system-mcp (or a clone's AppleSystem-MCP/start.sh) to your MCP client
  • Reload or reconnect the client so the System tool surface is loaded into context
  • Call system_health first
  • If a scoped system action is blocked, call system_permission_guide
  • Call system_status to verify the full context surface is available

Preference-domain reads accept named domains such as com.apple.finder and NSGlobalDomain, rather than filesystem paths or command options. The -g and -globalDomain aliases select NSGlobalDomain.

来源:AppleSystem-MCP/README.md,提交 9aeaa81

工具

39

system_health

System Health

Report the active Apple System MCP configuration.

无需输入参数。

system_permission_guide

System Permission Guide

Explain what system access this MCP may need on macOS.

无需输入参数。

system_status

System Status

Return current battery, frontmost app, and running app count.

无需输入参数。

system_get_battery

Get Battery

Get the current battery state from macOS.

无需输入参数。

system_get_frontmost_app

Get Frontmost App

Get the name of the current frontmost application.

无需输入参数。

system_list_running_apps

List Running Apps

List currently running foreground applications.

无需输入参数。

system_get_clipboard

Get Clipboard

Read the current text clipboard contents.

无需输入参数。

system_list_settings_domains

List Settings Domains

List the common macOS preference domains exposed by Apple System MCP.

无需输入参数。

system_get_appearance_settings

Get Appearance Settings

Read current macOS appearance settings such as light or dark mode and accent color.

无需输入参数。

system_get_accessibility_settings

Get Accessibility Settings

Read common macOS accessibility settings such as reduce motion and increase contrast.

无需输入参数。

system_get_dock_settings

Get Dock Settings

Read common macOS Dock settings such as autohide, magnification, and orientation.

无需输入参数。

system_get_finder_settings

Get Finder Settings

Read common macOS Finder settings such as path bar, status bar, and preferred view style.

无需输入参数。

system_get_settings_snapshot

Get Settings Snapshot

Return a combined read-only snapshot of appearance, accessibility, Dock, and Finder settings.

无需输入参数。

system_get_focus_status

Get Focus Status

Return truthful Focus support metadata and the best available current Focus state.

无需输入参数。

system_get_context_snapshot

Get System Context Snapshot

Return a richer macOS context snapshot, including battery, frontmost app, and Focus metadata.

无需输入参数。

system_read_preference_domain

Read Preference Domain

Read a macOS preference domain through defaults export for a production-safe, structured settings view.

输入参数domain必填current_host

system_set_appearance_mode

Set Appearance Mode

Set macOS appearance mode to light or dark.

输入参数mode必填

system_set_show_all_extensions

Set Show All Extensions

Show or hide filename extensions in macOS.

输入参数enabled必填

system_set_show_hidden_files

Set Show Hidden Files

Show or hide hidden files in Finder.

输入参数enabled必填

system_set_finder_path_bar

Set Finder Path Bar

Show or hide the Finder path bar.

输入参数enabled必填

system_set_finder_status_bar

Set Finder Status Bar

Show or hide the Finder status bar.

输入参数enabled必填

system_set_dock_autohide

Set Dock Autohide

Enable or disable Dock autohide.

输入参数enabled必填

system_set_dock_show_recents

Set Dock Show Recents

Enable or disable recent applications in the Dock.

输入参数enabled必填

system_set_reduce_motion

Set Reduce Motion

Enable or disable macOS reduce motion accessibility mode.

输入参数enabled必填

system_set_increase_contrast

Set Increase Contrast

Enable or disable macOS increase contrast accessibility mode.

输入参数enabled必填

system_set_reduce_transparency

Set Reduce Transparency

Enable or disable macOS reduce transparency accessibility mode.

输入参数enabled必填

system_gui_list_menu_bar_items

List Menu Bar Items

List the top-level menu bar items for an application. This is a GUI fallback tool.

输入参数bundle_idapplication

system_gui_click_menu_path

Click Menu Path

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.

输入参数bundle_idmenu_path必填application

system_gui_press_keys

Press Keys

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.

输入参数key必填bundle_idmodifiersapplication

system_gui_type_text

Type Text

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.

输入参数text必填bundle_idapplication

system_gui_click_button

Click Button

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.

输入参数indexlabelbundle_idapplicationdescription

system_gui_choose_popup_value

Choose Pop-Up Value

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.

输入参数label必填value必填bundle_idapplicationdescription

system_set_clipboard

Set Clipboard

Write text into the macOS clipboard.

输入参数text必填

system_show_notification

Show Notification

Display a local macOS notification.

输入参数body必填title必填subtitle

system_open_application

Open Application

Open an application by name using macOS.

输入参数bundle_idapplication

system_list_prompts

System List Prompts

Fallback prompt discovery tool for tool-only MCP clients.

无需输入参数。

system_get_prompt

System Get Prompt

Fallback prompt rendering tool for tool-only MCP clients.

输入参数name必填arguments_json

search_tools

Search Tools

Search this server's tool catalog by keyword, alias, or domain tag.

输入参数modelimitquery必填domain_tags

get_tool_info

Get Tool Info

Load the full schema, examples, and metadata for one tool from this server.

输入参数name必填include_schemainclude_examples

版本历史

8
  1. v1.1.6最新Nov 6, 2026
  2. v1.1.4Oct 29, 2026
  3. v1.1.3Oct 22, 2026
  4. v1.1.2Oct 14, 2026
  5. v1.1.1Oct 13, 2026
  6. v1.1.0Oct 10, 2026
  7. v1.0.5Sep 26, 2026
  8. v1.0.4Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分