@mindstone/mcp-server-apple-shortcuts
v0.2.1
Published
MCP server for Apple Shortcuts via the macOS shortcuts CLI
Readme
Apple Shortcuts MCP Server
An MCP server that exposes Apple Shortcuts functionality to Rebel via the macOS shortcuts CLI.
One-click install
After clicking the button, your host will prompt you to fill: APPLE_SHORTCUTS_TIMEOUT_MS.
{
"mcpServers": {
"Apple Shortcuts": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-apple-shortcuts"
],
"env": {
"APPLE_SHORTCUTS_TIMEOUT_MS": "120000"
}
}
}
}Status
- Version: 0.2.1 · npm
- Auth: None (
server.json) - Tools: 3 (shortcuts)
- Surface: local-cli
- Machine-readable:
STATUS.json
Prerequisites
- macOS with the Shortcuts app installed
- Node.js 18+
Setup
cd ~/mcp-servers/apple-shortcuts
npm install
npm run buildNo credentials or environment variables are required.
Tools
apple_shortcuts_list
List all available shortcuts, optionally filtered by folder.
| Argument | Type | Required | Description |
|---|---|---|---|
| folder_name | string | No | Folder to list from. Use "none" for shortcuts not in any folder. |
| show_identifiers | boolean | No | Include internal identifiers (default: false) |
apple_shortcuts_run
Run a named shortcut with optional text input.
| Argument | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Exact name or identifier of the shortcut |
| input | string | No | Text content to send to the shortcut as its Magic Variable input. Provide the literal text — the connector stores it in a private, mode-0o600 temporary file (under os.tmpdir()) and forwards that location to the macOS shortcuts CLI for you. The temporary file is removed once the shortcut returns. Do NOT supply a filename here. |
apple_shortcuts_view
Open a named shortcut in the Shortcuts app editor on the Mac, so you can visually review what it does before running it. The definition opens in the Shortcuts GUI — this tool does not return the definition as text.
| Argument | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Exact name or identifier of the shortcut to open |
Configuration
No credentials are required. One optional environment variable tunes runtime behavior:
| Variable | Default | Description |
|---|---|---|
| APPLE_SHORTCUTS_TIMEOUT_MS | 120000 | Maximum time in milliseconds a shortcuts CLI invocation may run before the connector terminates it (SIGTERM, then SIGKILL after a 5s grace period). Raise this for shortcuts that legitimately take longer than two minutes. |
Output trust model
Shortcut names (apple_shortcuts_list) and shortcut stdout (apple_shortcuts_run, apple_shortcuts_view) are user-authored text returned by the local shortcuts CLI. The connector wraps all such output in <untrusted-content source="apple-shortcuts:..."> envelopes so the model treats it as data, not instructions. Shortcut names echoed back in apple_shortcuts_run / apple_shortcuts_view confirmation, error, and timeout messages are enveloped the same way — a name is attacker-controllable text once it appears in the list output.
Register in Rebel
Add the connector in Settings → Connectors with:
- Command:
node - Args:
["<absolute path to>/mcp-servers/apple-shortcuts/dist/index.js"](e.g.~/mcp-servers/apple-shortcuts/dist/index.jsexpanded to an absolute path)
Caveats
- macOS only — the
shortcutsCLI is not available on other platforms. - Shortcuts that open GUI dialogs or prompt for confirmation cannot answer from the command line; they are terminated after
APPLE_SHORTCUTS_TIMEOUT_MS(default 120s) instead of blocking forever. If termination cannot be confirmed (signal delivery fails or the process never exits after SIGKILL), the timeout error says the process may still be running rather than claiming it was stopped. - Captured stdout/stderr per invocation is bounded (1,000,000 characters per stream); output beyond the bound is dropped and marked with a truncation notice, so a shortcut emitting unbounded output cannot exhaust memory.
- Running a shortcut has the same system permissions as the logged-in user — a shortcut can send messages, delete files, make purchases, control devices, or call remote APIs.
apple_shortcuts_runis annotateddestructiveHint: trueso hosts require explicit user approval before running one.
