{"slug": "imcp", "title": "iMCP", "summary": "IMCP, a macOS app requiring macOS 15.3 or later, connects Apple services such as Calendar, Contacts, Messages, and Weather to AI clients through the Model Context Protocol (MCP), starting with Claude Desktop. The app exposes 12 tools and is installable via Homebrew with the command `brew install --cask mattt/tap/iMCP`; iMCP states it does not collect or store user data, though clients like Claude Desktop send data off device as part of tool calls.", "body_md": "iMCP is a macOS app for connecting your digital life with AI.\nIt works with [Claude Desktop](https://claude.ai/download)\nand a [growing list of clients](https://modelcontextprotocol.io/clients) that support the\n[Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction).\n\n|   | **Calendar** | View and manage calendar events, including creating new events with customizable settings like recurrence, alarms, and availability status. | \n|---|---|---|\n|   | **Contacts** | Access contact information about yourself and search your contacts by name, phone number, or email address. | \n|   | **Location** | Access current location data and convert between addresses and geographic coordinates. | \n|   | **Maps** | Provides location services including place search, directions, points of interest lookup, travel time estimation, and static map image generation. | \n|   | **Messages** | Access message history with specific participants within customizable date ranges. | \n|   | **Phone** | View call history synced from your iPhone, filter calls by participant, date, or call type, and start calls with system confirmation. | \n|   | **Reminders** | View and create reminders with customizable due dates, priorities, and alerts across different reminder lists. | \n|   | **Shortcuts** | List and run shortcuts on your Mac, with optional text input. | \n|   | **Weather** | Access current weather conditions including temperature, wind speed, and weather conditions for any location. | \n\nFirst, [download the iMCP app](https://iMCP.app/download)\n(requires macOS 15.3 or later).\n\nOr, if you have [Homebrew](https://brew.sh) installed,\nyou can run the following command:\n\n```\nbrew install --cask mattt/tap/iMCP\n```\n\nWhen you open the app,\nyou'll see a\n[icon in your menu bar.](https://github.com/mattt/iMCP/blob/main/Assets/icon.svg)\n\nClicking on this icon reveals the iMCP menu, which displays all available services. Initially, all services will appear in gray, indicating they're inactive.\n\nThe blue toggle switch at the top indicates that the MCP server is running and ready to connect with MCP-compatible clients.\n\nTo activate a service, click on its icon.\nThe system will prompt you with a permission dialog.\nFor example, when activating Calendar access, you'll see a dialog asking `\"iMCP\" Would Like Full Access to Your Calendar`.\nClick `Allow Full Access` to continue.\n\nImportant\n\niMCP **does not** collect or store any of your data.\nClients like Claude Desktop *do* send\nyour data off device as part of tool calls.\n\nOnce activated, each service icons goes from gray to their distinctive colors — red for Calendar, green for Messages, blue for Location, and so on.\n\nRepeat this process for all of the capabilities you'd like to enable. These permissions follow Apple's standard security model, giving you complete control over what information iMCP can access.\n\nIf you don't have Claude Desktop installed,\nyou can [download it here](https://claude.ai/download).\n\nOpen Claude Desktop and go to \"Settings... (`⌘``,`)\".\nClick on \"Developer\" in the sidebar of the Settings pane,\nand then click on \"Edit Config\".\nThis will create a configuration file at\n`~/Library/Application Support/Claude/claude_desktop_config.json`.\n\nTo connect iMCP to Claude Desktop,\nclick \n[> \"Configure Claude Desktop\".](https://github.com/mattt/iMCP/blob/main/Assets/icon.svg)\n\nThis will add or update the MCP server configuration to use the\n`imcp-server` executable bundled in the application.\nOther MCP server configurations in the file will be preserved.\n\n## You can also configure Claude Desktop manually\n\nClick \n[> \"Copy server command to clipboard\".\nThen open](https://github.com/mattt/iMCP/blob/main/Assets/icon.svg) `claude_desktop_config.json` in your editor\nand enter the following:\n\n```\n{\n  \"mcpServers\": {\n    \"iMCP\": {\n      \"command\": \"{paste iMCP server command}\"\n    }\n  }\n}\n```\n\nQuit and reopen the Claude Desktop app. You'll be prompted to approve the connection.\n\nAfter approving the connection, you should now see 🔨12 in the bottom right corner of your chat box. Click on that to see a list of all the tools made available to Claude by iMCP.\n\nNow you can ask Claude questions that require access to your personal data, such as:\n\n\"How's the weather where I am?\"\n\nClaude will use the appropriate tools to retrieve this information, providing you with accurate, personalized responses without requiring you to manually share this data during your conversation.\n\n### Connect to [Claude Code](https://claude.com/product/claude-code)\n\nTo add iMCP globally after installing the app:\n\n```\nclaude mcp add --scope user iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server\n```\n\n## Or import from Claude Desktop\n\nIf you've already configured Claude Desktop, you can import its MCP servers:\n\n```\nclaude mcp add-from-claude-desktop\n```\n\n### Connect to [Cursor](https://cursor.com)\n\nOpen this deep link to automatically install the iMCP server:\n\n### Connect to [Amp](https://ampcode.com)\n\nTo add iMCP globally (available in all projects):\n\n```\namp mcp add iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server\n```\n\nNote\n\nWhen a client first connects, iMCP will show an approval dialog. Click \"Allow\" and check \"Always trust this client\" to avoid repeated prompts.\n\niMCP is a macOS app that bundles a command-line executable, `imcp-server`.\n\n- [`iMCP.app`](https://github.com/mattt/iMCP/blob/main/App) provides UI for configuring services and — most importantly —\na means of interacting with macOS system permissions,\nso that it can access Contacts, Calendar, and other information.\n- [`imcp-server`](https://github.com/mattt/iMCP/blob/main/CLI) provides an MCP server that\nuses standard input/output for communication\n([stdio transport](https://modelcontextprotocol.io/docs/concepts/architecture#transport-layer) ).\n\nThe app and CLI communicate with each other on the local network\nusing [Bonjour](https://developer.apple.com/bonjour/) for automatic discovery.\nBoth advertise a service with type \"_mcp._tcp\" and domain \"local\".\nRequests from MCP clients are read by the CLI from `stdin`\nand relayed to the app;\nresponses from the app are received by the CLI and written to `stdout`.\nSee [`StdioProxy`](https://github.com/mattt/iMCP/blob/8cf9d250286288b06bf5d3dda78f5905ad0d7729/CLI/main.swift#L47)\nfor implementation details.\n\nFor this project, we created what became\n[the official Swift SDK](https://github.com/modelcontextprotocol/swift-sdk)\nfor Model Context Protocol servers and clients.\nThe app uses this package to handle proxied requests from MCP clients.\n\nApple doesn't provide public APIs for accessing your messages.\nHowever, the Messages app on macOS stores data in a SQLite database located at\n`~/Library/Messages/chat.db`.\n\niMCP runs in [App Sandbox](https://developer.apple.com/documentation/security/app-sandbox),\nwhich limits its access to user data and system resources.\nWhen you go to enable the Messages service,\nyou'll be prompted to select your `~/Library/Messages` folder through the standard file picker.\nWhen you do, macOS adds that folder to the app's sandbox.\n[`NSOpenPanel`](https://developer.apple.com/documentation/appkit/nsopenpanel) is magic like that.\nThe folder matters: `chat.db` is a WAL-mode database,\nand Messages writes every new message to `chat.db-wal` next to it first,\nonly folding the log into `chat.db` at a checkpoint every few MB —\noften hours later.\nA grant on `chat.db` alone (what earlier versions asked for)\nleaves that log unreadable, so the newest messages were missing until then.\nIf you granted `chat.db` with an earlier version, Messages keeps working from the last checkpoint;\nswitch Messages off and on in the iMCP menu to grant the folder instead.\n\nBut opening the iMessage database is just half the battle.\nOver the past few years,\nApple has moved away from storing messages in plain text\nand instead toward a proprietary `typedstream` format.\n\nFor this project, we created [Madrid](https://github.com/mattt/Madrid):\na Swift package for reading your iMessage database.\nIt includes a Swift implementation for decoding Apple's `typedstream` format,\nadapted from Christopher Sardegna's [imessage-exporter](https://github.com/ReagentX/imessage-exporter) project\nand [blog post about reverse-engineering `typedstream`](https://chrissardegna.com/blog/reverse-engineering-apples-typedstream-format/).\n\nCall history synced from your iPhone lives in a SQLite database at\n`~/Library/Application Support/CallHistoryDB/CallHistory.storedata`.\nRecent calls sit in its write-ahead log next to the store file,\nso the Phone service asks you to open the `CallHistoryDB` folder\nrather than the file alone.\n\nThe tools provided by iMCP return results as\n[JSON-LD](https://json-ld.org) documents.\nFor example,\nthe `fetchContacts` tool uses the [Contacts framework](https://developer.apple.com/documentation/contacts),\nwhich represents people and organizations with the [`CNContact`](https://developer.apple.com/documentation/contacts/cncontact) type.\nHere's how an object of that type is encoded as JSON-LD:\n\n```\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"Person\",\n  \"name\": \"Mattt\",\n  \"url\": \"https://mat.tt\"\n}\n```\n\n[Schema.org](https://schema.org) provides standard vocabularies for\npeople, postal addresses, events, and many other objects we want to represent.\nAnd JSON-LD is a convenient encoding format for\nhumans, AI, and conventional software alike.\n\nFor this project, we created [Ontology](https://github.com/mattt/Ontology):\na Swift package for working with structured data.\nIt includes convenience initializers for types from Apple frameworks,\nsuch as those returned by iMCP tools.\n\n`imcp-server` finds the iMCP app with Bonjour,\nso it needs permission to access the local network.\n`imcp-server` has its own entry in\nSystem Settings > Privacy & Security > Local Network,\nseparate from iMCP and from the app that runs it, such as your terminal.\nIf that entry is turned off,\n`imcp-server` can't find the app\nand reports that Bonjour service discovery timed out.\n\nTo debug interactions between iMCP and clients,\nyou can use the [inspector tool](https://github.com/modelcontextprotocol/inspector)\n(requires Node.js):\n\n1. \nClick 2. \nOpen a terminal and run the following commands: \n\n```\n# Download and run inspector package on imcp-server\nnpx @modelcontextprotocol/inspector [paste-copied-command]\n\n# Open inspector web app running locally\nopen http://127.0.0.1:6274\n```\n\nInspector lets you see all requests and responses between the client and the iMCP server, which is helpful for understanding how the protocol works.\n\n[Companion](https://github.com/mattt/Companion) is a utility for testing and debugging your MCP servers\n(requires macOS 15 or later).\nIt gives you an easy way to browse and interact with\na server's prompts, resources, and tools.\nHere's how to connect it to iMCP:\n\n1. Click 2. [Download](https://github.com/mattt/Companion/releases/latest/download/Companion.zip) and open the Companion app\n3. Click the `+` button in the toolbar to add an MCP server\n4. Fill out the form:\n  - Enter \"iMCP\" as the name\n  - Select \"STDIO\" as the transport\n  - Paste the copied iMCP server command\n  - Click \"Add Server\"\n\n- [Justin Spahr-Summers](https://jspahrsummers.com/) ([@jspahrsummers](https://github.com/jspahrsummers) ),\nDavid Soria Parra\n([@dsp-ant](https://github.com/dsp-ant) ), and\nAshwin Bhat\n([@ashwin-ant](https://github.com/ashwin-ant) )\nfor their work on MCP.\n- [Christopher Sardegna](https://chrissardegna.com) ([@ReagentX](https://github.com/ReagentX) )\nfor reverse-engineering the`typedstream` format\nused by the Messages app.\n\nThis project is available under the MIT license. See the LICENSE file for more info.\n\niMessage® is a registered trademark of Apple Inc. This project is not affiliated with, endorsed, or sponsored by Apple Inc.", "url": "https://wpnews.pro/news/imcp", "canonical_source": "https://github.com/mattt/iMCP", "published_at": "2026-10-10 16:32:09+00:00", "updated_at": "2026-10-10 16:47:33.855087+00:00", "lang": "en", "topics": ["ai-agents", "agent-protocols", "ai-tools", "ai-products"], "entities": ["iMCP", "Claude Desktop", "Model Context Protocol", "macOS", "Homebrew", "Apple"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/imcp", "markdown": "https://wpnews.pro/news/imcp.md", "text": "https://wpnews.pro/news/imcp.txt", "jsonld": "https://wpnews.pro/news/imcp.jsonld"}}