When using apple-mcp as an MCP server in Rowboat, all AppleScript-based tools (Mail, Calendar, Reminders, Contacts, Messages) return "No email accounts found" / fail silently — even when Apple Mail is open and configured with an iCloud account.
Root Cause
macOS grants Automation permissions per app bundle. When Rowboat spawns apple-mcp as a child process (stdio MCP), that subprocess inherits Rowboat's permission context — and Rowboat's app bundle does not have the com.apple.security.automation.apple-events entitlement, so macOS blocks it from controlling Mail, Calendar, etc.
This is confirmed by the fact that running apple-mcp directly from Terminal works perfectly, but not when spawned by Rowboat.
Workarounds attempted (all failed due to the same root cause):
- Spawning via /bin/bash -c
- Pointing directly at the Node binary
- Using mcp-proxy as an HTTP bridge with --shell
Fix
Add the com.apple.security.automation.apple-events entitlement to Rowboat's app bundle. This is a one-line addition to the entitlements .plist file:
<key>com.apple.security.automation.apple-events</key>
<true/>
This will allow Rowboat to trigger the standard macOS permission prompt ("Rowboat wants to control Mail") the first time it tries, after which it works like any other app.
When using apple-mcp as an MCP server in Rowboat, all AppleScript-based tools (Mail, Calendar, Reminders, Contacts, Messages) return "No email accounts found" / fail silently — even when Apple Mail is open and configured with an iCloud account.
Root Cause
macOS grants Automation permissions per app bundle. When Rowboat spawns apple-mcp as a child process (stdio MCP), that subprocess inherits Rowboat's permission context — and Rowboat's app bundle does not have the com.apple.security.automation.apple-events entitlement, so macOS blocks it from controlling Mail, Calendar, etc.
This is confirmed by the fact that running apple-mcp directly from Terminal works perfectly, but not when spawned by Rowboat.
Workarounds attempted (all failed due to the same root cause):
Fix
Add the com.apple.security.automation.apple-events entitlement to Rowboat's app bundle. This is a one-line addition to the entitlements .plist file:
This will allow Rowboat to trigger the standard macOS permission prompt ("Rowboat wants to control Mail") the first time it tries, after which it works like any other app.