IMCP
A macOS app that provides an MCP server to your Messages, Contacts, Reminders and more
Install / Use
/learn @mattt/IMCPQuality Score
Category
Development & EngineeringSupported Platforms
README
iMCP is a macOS app for connecting your digital life with AI. It works with [Claude Desktop][claude-app] and a [growing list of clients][mcp-clients] that support the [Model Context Protocol (MCP)][mcp].
Capabilities
<table> <tr> <th> <img src="Assets/calendar.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Calendar</strong></td> <td>View and manage calendar events, including creating new events with customizable settings like recurrence, alarms, and availability status.</td> </tr> <tr> <th> <img src="Assets/contacts.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Contacts</strong></td> <td>Access contact information about yourself and search your contacts by name, phone number, or email address.</td> </tr> <tr> <th> <img src="Assets/location.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Location</strong></td> <td>Access current location data and convert between addresses and geographic coordinates.</td> </tr> <tr> <th> <img src="Assets/maps.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Maps</strong></td> <td>Provides location services including place search, directions, points of interest lookup, travel time estimation, and static map image generation.</td> </tr> <tr> <th> <img src="Assets/messages.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Messages</strong></td> <td>Access message history with specific participants within customizable date ranges.</td> </tr> <tr> <th> <img src="Assets/reminders.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Reminders</strong></td> <td>View and create reminders with customizable due dates, priorities, and alerts across different reminder lists.</td> </tr> <tr> <th> <img src="Assets/weather.svg" width="48" height="48" alt="" role="presentation"/> </th> <td><strong>Weather</strong></td> <td>Access current weather conditions including temperature, wind speed, and weather conditions for any location.</td> </tr> </table>Getting Started
Download and open the app
First, download the iMCP app (requires macOS 15.3 or later).
Or, if you have Homebrew installed, you can run the following command:
brew install --cask mattt/tap/iMCP
<img align="right" width="344" src="/Assets/imcp-screenshot-first-launch.png" alt="Screenshot of iMCP on first launch" />
When you open the app, you'll see a <img style="display: inline" width="20" height="16" src="/Assets/icon.svg" /> icon in your menu bar.
Clicking on this icon reveals the iMCP menu, which displays all available services. Initially, all services will appear in gray, indicating they're inactive.
The blue toggle switch at the top indicates that the MCP server is running and ready to connect with MCP-compatible clients.
<br clear="all"> <img align="right" width="372" src="/Assets/imcp-screenshot-grant-permission.png" alt="Screenshot of macOS permission dialog" />Activate services
To activate a service, click on its icon.
The system will prompt you with a permission dialog.
For example, when activating Calendar access, you'll see a dialog asking "iMCP" Would Like Full Access to Your Calendar.
Click <kbd>Allow Full Access</kbd> to continue.
<br clear="all"> <img align="right" width="344" src="/Assets/imcp-screenshot-all-services-active.png" alt="Screenshot of iMCP with all services enabled" />[!IMPORTANT] iMCP does not collect or store any of your data. Clients like Claude Desktop do send your data off device as part of tool calls.
Once activated, each service icons goes from gray to their distinctive colors — red for Calendar, green for Messages, blue for Location, and so on.
Repeat 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.
<!-- <br clear="all"> --> <!-- <img align="right" width="344" src="/Assets/imcp-screenshot-configure-claude-desktop.png" /> --> <br clear="all">Connect to Claude Desktop
If you don't have Claude Desktop installed, you can download it here.
Open Claude Desktop and go to "Settings... (<kbd>⌘</kbd><kbd>,</kbd>)".
Click on "Developer" in the sidebar of the Settings pane,
and then click on "Edit Config".
This will create a configuration file at
~/Library/Application Support/Claude/claude_desktop_config.json.
To connect iMCP to Claude Desktop, click <img style="display: inline" width="20" height="16" src="/Assets/icon.svg" /> > "Configure Claude Desktop".
This will add or update the MCP server configuration to use the
imcp-server executable bundled in the application.
Other MCP server configurations in the file will be preserved.
Click <img style="display: inline" width="20" height="16" src="/Assets/icon.svg" />
> "Copy server command to clipboard".
Then open claude_desktop_config.json in your editor
and enter the following:
{
"mcpServers": {
"iMCP": {
"command": "{paste iMCP server command}"
}
}
}
</details>
<img align="right" width="372" src="/Assets/imcp-screenshot-approve-connection.png" />
Call iMCP tools from Claude Desktop
Quit and reopen the Claude Desktop app. You'll be prompted to approve the connection.
<br clear="all">After 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.
<p align="center"> <img width="694" src="/Assets/claude-desktop-screenshot-tools-enabled.png" alt="Screenshot of Claude Desktop with tools enabled" /> </p>Now you can ask Claude questions that require access to your personal data, such as:
"How's the weather where I am?"
Claude 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.
<p align="center"> <img width="738" src="/Assets/claude-desktop-screenshot-message.png" alt="Screenshot of Claude response to user message 'How's the weather where I am?'" /> </p>Connect to [Claude Code][claude-code]
To add iMCP globally after installing the app:
claude mcp add --scope user iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server
<details>
<summary>Or import from Claude Desktop</summary>
If you've already configured Claude Desktop, you can import its MCP servers:
claude mcp add-from-claude-desktop
</details>
Connect to [Cursor][cursor]
Open this deep link to automatically install the iMCP server:
<a href="https://cursor.com/en-US/install-mcp?name=iMCP&config=eyJjb21tYW5kIjoiL0FwcGxpY2F0aW9ucy9pTUNQLmFwcC9Db250ZW50cy9NYWNPUy9pbWNwLXNlcnZlciAifQ%3D%3D"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://cursor.com/deeplink/mcp-install-dark.svg"> <source media="(prefers-color-scheme: light)" srcset="https://cursor.com/deeplink/mcp-install-light.svg"> <img alt="Install MCP Server" src="https://cursor.com/deeplink/mcp-install-light.svg"> </picture> </a>Connect to [Amp][amp]
To add iMCP globally (available in all projects):
amp mcp add iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server
[!NOTE] When a client first connects, iMCP will show an approval dialog. Click "Allow" and check "Always trust this client" to avoid repeated prompts.
Technical Details
App & CLI
iMCP is a macOS app that bundles a command-line executable, imcp-server.
iMCP.appprovides UI for configuring services and — most importantly — a means of interacting with macOS system permissions, so that it can access Contacts, Calendar, and other information.imcp-serverprovides an MCP server that uses standard input/output for communication ([stdio transport][mcp-transports]).
The app and CLI communicate with each other on the local network
using [Bonjour][bonjour] for automatic discovery.
Both advertise a service with type "_mcp._tcp" and domain "local".
Requests from MCP clients are read by the CLI from stdin
and relayed to the app;
responses from the app are received by the CLI and written to stdout.
See StdioProxy
for implementation details.
For this project, we created what became [the official Swift SDK][swift-sdk] for Model Context Protocol servers and clients. The app uses this package to handle proxied requests from MCP clients.
iMessage Database Access
Apple doesn't provide public APIs for accessing your messages.
However, the Messages app on macOS stores data in a SQLite database located at
~/Library/Messages/chat.db.
iMCP runs in [App Sandbox][app-sandbox],
which limits its access to user data and system resources.
When you go to enable the Messages service,
you'll be prompted to open the chat.db file through the standard file picker.
When you do, macOS adds that file to the app's sandbox.
[NSOpenPanel][nsopenpanel] is magic like that.
But opening the iMessage database is just half the battle.
Over the past few years,
Apple has moved away from storing messages in plain text
and instead toward a proprietary typedstream format.
For this project, we created [Madrid][madrid]: a Swift package for reading your iMessa
Related Skills
node-connect
337.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
Hook Development
83.1kThis skill should be used when the user asks to "create a hook", "add a PreToolUse/PostToolUse/Stop hook", "validate tool use", "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}", "set up event-driven automation", "block dangerous commands", or mentions hook events (PreToolUse, PostToolUse, Stop, SubagentStop, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification). Provides comprehensive guidance for creating and implementing Claude Code plugin hooks with focus on advanced prompt-based hooks API.
MCP Integration
83.1kThis skill should be used when the user asks to "add MCP server", "integrate MCP", "configure MCP in plugin", "use .mcp.json", "set up Model Context Protocol", "connect external service", mentions "${CLAUDE_PLUGIN_ROOT} with MCP", or discusses MCP server types (SSE, stdio, HTTP, WebSocket). Provides comprehensive guidance for integrating Model Context Protocol servers into Claude Code plugins for external tool and service integration.
