macOS Companion MCP Server
Provides tools for interacting with Apple's native macOS applications, including Calendar, Reminders, Notes, and iMessage.
Allows sending iMessages programmatically through the native macOS messaging service.
Offers system administration tools for macOS, including health audits, battery monitoring, storage scans, and process management.
Enables retrieval of open Safari tabs and browsing context.
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., "@macOS Companion MCP Serverrun a system health check"
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.
macOS MCP Server
Website: macos-mcp.builditwithai.xyz · npm: @surendranb/macos-companion-mcp · Studio: BuildItWithAI
What is this?
macOS MCP Server (npm package: @surendranb/macos-companion-mcp) is a local
Model Context Protocol server that gives AI agents read/write
access to your Mac. It exposes 40 MCP tools for Apple Calendar, Apple Notes, Apple Reminders,
Apple Mail, iMessage, Apple Music, Apple Podcasts, Safari, Siri Shortcuts, camera, microphone, and
system monitoring — all running locally over stdio, with no cloud, no API keys, no data
leaving your machine.
It is the most direct way to give an AI assistant hands on a Mac: agents can check your calendar before scheduling, summarize unread mail, create reminders, control music, fetch podcast transcripts, and run health checks on your system.
Works with: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Gemini CLI, OpenCode, and any other MCP-compatible client.
Related MCP server: Mac MCP
Why a local macOS MCP server
Web agents only see the internet. A local agent should be able to check your calendar before it schedules something, read your unread mail, glance at the battery before you leave the house, and pull the transcript of the podcast episode you're listening to. There's no public API for any of that — it's all AppleScript and CLI wrappers behind the curtain. This server bundles them into one clean MCP surface, so your agent talks to your Mac the way you do.
Install
Get started in 60 seconds:
npm install -g @surendranb/macos-companion-mcpOr run it on demand — add this to any MCP client's config:
{
"mcpServers": {
"macos": {
"command": "npx",
"args": ["-y", "@surendranb/macos-companion-mcp"]
}
}
}That's it. The server announces macOS MCP Server running on stdio and your client picks up all
40 tools automatically. It auto-detects the calling client (Claude Code, Cursor, Gemini CLI,
Windsurf, VS Code) and logs it in telemetry.
What you get — all 40 tools
Apple Calendar & Reminders (6)
tool | what it does |
| Lists your calendars |
| Events in a date range |
| Creates a new event |
| Active reminders from any list |
| New reminder with due date |
| Marks a reminder done |
Apple Mail & iMessage (3)
tool | what it does |
| Unread Mail.app messages with details |
| Sends mail from your account |
| Texts via the Messages app |
Apple Notes (4)
tool | what it does |
| All Apple Notes titles and IDs |
| Full note body by ID |
| New note in a folder |
| Appends content to a note |
Apple Music (5)
tool | what it does |
| Current track + playback position |
| Starts a playlist by name |
| Toggles playback |
| Next/previous track |
| Volume 0–100 |
Apple Podcasts (5)
tool | what it does |
| Episodes, filterable by release date and title |
| Opens an episode in the Podcasts app |
| Plays the episode and waits for its transcript |
| Full transcript from the local TTML cache |
| Pauses playback |
System monitoring & control (10)
tool | what it does |
| CPU, memory, thermal, hung processes |
| Processes with resource usage |
| Kills a process by PID or name |
| Restarts a launchd service |
| Cycle count, max capacity, condition |
| Disk usage statistics |
| Deep scan of home directory |
| Login items + LaunchAgents |
| Full health audit |
| Prunes caches + empties trash |
Utilities (4)
tool | what it does |
| Opens a URL in the default browser |
| Open Safari tabs with URLs |
| Siri Shortcuts on the system |
| Runs a shortcut with optional input |
Sensing (3)
tool | what it does |
| Photo via built-in camera (base64 JPEG) |
| Ambient noise level in dB |
| Records a WAV clip (up to 30s) |
Podcast transcripts — how it works
Apple Podcasts stores full episode transcripts locally as TTML files, but only after an episode has actually played. The verified end-to-end pipeline:
get_recent_podcast_episodes— query the local Podcasts library by date range / title. Note thetranscriptIdfor the episode you want.open_podcast_episode— searches the Podcasts UI and opens the episode page.play_podcast_episode— clicks the play pill and polls the TTML cache until the transcript file appears (usually 2–8 seconds).get_podcast_transcript— returns the full transcript. Already cached? It's instant.pause_podcast_episode— stops playback.
Transcripts live in ~/Library/Group Containers/243LU875E5.groups.com.apple.podcasts/.../TTML/.
The cache holds only the most recent ~8 episodes — replay an older one to re-download it.
Configuration & permissions
There's no configuration file. Just make sure macOS can reach the apps:
Mail / Calendar / Notes / Reminders / Messages — launch each app once so Apple's automation permissions are granted. The server warms apps at startup so the first call isn't a 30-second cold launch.
Camera / Microphone — System Settings → Privacy & Security → Camera/Microphone → allow Terminal (or whichever process runs the server).
Full Disk Access — needed only for system-level storage scans.
Architecture
Language: TypeScript, MCP 2.0 SDK (
@modelcontextprotocol/server)Transport: stdio only — no HTTP server, no network
Integration layer: AppleScript (
osascript), native CLIs (accli,imagesnap,launchctl,shortcuts), and direct reads of Apple's local databases (Podcasts)Layout: tool schemas and handlers in
src/index.ts; startup telemetry insrc/telemetry.tsPublishing: GitHub Actions (
release.yml) publishes to npm on release
Development
npm ci
npm run build # tsc → dist/
node dist/index.js # run the server on stdio
npm test # smoke suite: 19 end-to-end checks against a live serverFAQ
Is this safe? Does it send my data anywhere? It runs entirely locally over stdio. No cloud services, no API keys, no telemetry beyond an anonymous server-start event. All automation goes through Apple's own permission system.
Does it work on Apple Silicon / macOS Sequoia / Sonoma? Yes. It uses AppleScript and Apple's CLIs, which work across Intel and Apple Silicon Macs.
Why does the first calendar call feel slow? The server pre-warms Calendar, Mail, Notes, and Reminders at startup so permissions are in place and apps are not launched cold on first use.
Do I need to install anything else?
Only Node.js 18+. Camera tools use imagesnap (Homebrew) and audio tools use sox/ffmpeg if
you want those specific tools.
Is there an HTTP version? No — stdio only by design. It keeps everything local and is compatible with every MCP client.
Links
Website: https://macos-mcp.builditwithai.xyz
npm: https://www.npmjs.com/package/@surendranb/macos-companion-mcp
Studio: https://builditwithai.xyz
License
MIT — Surendran Balachandran, 2026. Built at BuildItWithAI Studio.
Prior art
This project builds on patterns from DesktopCommanderMCP (terminal + file MCP server) and the GA4 MCP distribution playbook.
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 Servers
- AlicenseBqualityBmaintenanceA macOS MCP server that provides AI agents with secure access to Calendar, Reminders, Notes, and Health data via native Apple APIs.Last updated3018MIT
- Alicense-qualityBmaintenanceA local macOS MCP server for AI Agents that exposes safe endpoints for shell commands, files, processes, macOS automation, browser control, and more.Last updated2MIT
- Alicense-qualityDmaintenanceMCP server that enables AI to fully control macOS — mouse, keyboard, terminal, screenshots, window management, UI element detection, and provides AI-optimized information reporting.Last updated23MIT
- Flicense-qualityBmaintenanceEnterprise-grade macOS MCP server that gives AI agents eyes, hands, and a terminal, enabling screen capture, mouse/keyboard control, shell commands, and file operations.Last updated
Related MCP Connectors
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
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/surendranb/macos-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server