Connect Your Digital Life to AI
macOS app connecting Calendar, Contacts, Location, Maps, Messages, Reminders, and Weather to Claude Desktop.
1.4.1Add to Favorites
Why it matters
Integrate your macOS digital life with AI models. Access and manage data from your calendar, contacts, messages, and more through a unified protocol.
Outcomes
What it gets done
Access and manage calendar events.
Search and retrieve contact information.
Query message history and location data.
Fetch current weather conditions.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-imcp | bash Capabilities
Tools your agent gets
Access contact information and search contacts by name, phone number, or email address
View and manage calendar events with customizable parameters such as recurrence and notifications
Access current location data and convert between addresses and geographic coordinates
Search for places, get directions, and estimate travel time
Access message history with specific participants in customizable time ranges
View and create reminders with customizable due dates, priorities, and notifications
Access current weather conditions including temperature, wind speed, and conditions for any location
Overview
iMCP
A macOS menu-bar app that exposes personal data - Calendar, Contacts, Location, Maps, Messages, Reminders, and Weather - as MCP tools for AI clients like Claude Desktop. Each service requires its own macOS permission grant, and iMCP itself does not collect or store any data. Use when you want Claude Desktop, Claude Code, Cursor, or Amp to answer questions grounded in your real macOS calendar, contacts, location, messages, reminders, or weather.
What it does
iMCP is a macOS app that connects your digital life - Calendar, Contacts, Location, Maps, Messages, Reminders, and Weather - to AI clients that support the Model Context Protocol, including Claude Desktop, Claude Code, Cursor, and Amp. It runs as a menu-bar app that exposes a local MCP server (bundled as the imcp-server CLI executable) for those clients to call.
When to use - and when NOT to
Use it when you want an AI client like Claude Desktop to answer questions grounded in your actual personal data on macOS - your calendar events, contacts, current location, nearby places and directions, message history with specific people, reminders, or local weather - without manually copying that data into the conversation. Each capability (service) must be activated individually through macOS's standard permission dialogs, so you control exactly what iMCP can access; iMCP itself does not collect or store any of your data, though clients like Claude Desktop do send data off-device as part of their tool calls. Requires macOS 15.3 or later.
Capabilities
Seven services, exposing 12 tools total once connected to a client, each activated separately: Calendar (view and manage events, including creating new ones with recurrence, alarms, and availability status), Contacts (access your own contact info and search contacts by name, phone, or email), Location (current location plus address-to-coordinate conversion), Maps (place search, directions, points of interest, travel-time estimation, and static map image generation), Messages (message history with specific participants within a date range, read from the local chat.db SQLite database via a custom typedstream-format decoder - since iMCP runs inside macOS's App Sandbox, enabling this service requires an extra step of granting file access to chat.db through the system file picker, unlike the standard permission dialogs the other services use), Reminders (view and create reminders with due dates, priorities, alerts, and lists), and Weather (current conditions, temperature, and wind speed for any location). Tool results are returned as JSON-LD documents using schema.org vocabularies - for example, a contact is returned as a schema.org Person.
How to install
Download the app from iMCP.app, or install via Homebrew:
brew install --cask mattt/tap/iMCP
Then activate each desired service by clicking its icon in the menu bar and granting the macOS permission dialog. To connect to Claude Desktop, use the app's "Configure Claude Desktop" menu action (which updates claude_desktop_config.json automatically) or add the server manually; to connect to Claude Code, run claude mcp add --scope user iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server (or claude mcp add-from-claude-desktop to import existing config); Cursor has a one-click deep-link installer, and Amp uses amp mcp add iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server. The app and CLI communicate over the local network via Bonjour service discovery. For debugging, use the MCP Inspector (npx @modelcontextprotocol/inspector) or the Companion app. The project is MIT-licensed.
Who it's for
macOS users of Claude Desktop, Claude Code, Cursor, or Amp who want their AI assistant to answer personal questions - how's the weather where I am, what's on the calendar, who a contact is - grounded in real device data under explicit, per-service macOS permission control, rather than manually relaying that information themselves.
Source 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
|
|
Calendar | View and manage calendar events, including creating new events with customizable settings like recurrence, alarms, and availability status. |
|---|---|---|
|
|
Contacts | Access contact information about yourself and search your contacts by name, phone number, or email address. |
|
|
Location | Access current location data and convert between addresses and geographic coordinates. |
|
|
Maps | Provides location services including place search, directions, points of interest lookup, travel time estimation, and static map image generation. |
|
|
Messages | Access message history with specific participants within customizable date ranges. |
|
|
Reminders | View and create reminders with customizable due dates, priorities, and alerts across different reminder lists. |
|
|
Weather | Access current weather conditions including temperature, wind speed, and weather conditions for any location. |
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
When you open the app,
you'll see a
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.
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 Allow Full Access to continue.
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.
Connect to Claude Desktop
If you don't have Claude Desktop installed,
you can download it here.
Open Claude Desktop and go to "Settings... (⌘,)".
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
> "Configure Claude Desktop".
This will add or update the MCP server configuration to use theimcp-server executable bundled in the application.
Other MCP server configurations in the file will be preserved.
You can also configure Claude Desktop manually
Click
> "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}"
}
}
}
Call iMCP tools from Claude Desktop
Quit and reopen the Claude Desktop app.
You'll be prompted to approve the connection.
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.
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.
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
Or import from Claude Desktop
If you've already configured Claude Desktop, you can import its MCP servers:
claude mcp add-from-claude-desktop
Connect to [Cursor][cursor]
Open this deep link to automatically install the iMCP server:
Connect to [Amp][amp]
To add iMCP globally (available in all projects):
amp mcp add iMCP -- /Applications/iMCP.app/Contents/MacOS/imcp-server
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 iMessage database.
It includes a Swift implementation for decoding Apple's typedstream format,
adapted from Christopher Sardegna's [imessage-exporter] project
and [blog post about reverse-engineering typedstream][typedstream-blog-post].
JSON-LD for Tool Results
The tools provided by iMCP return results as
[JSON-LD][json-ld] documents.
For example,
the fetchContacts tool uses the [Contacts framework][contacts-framework],
which represents people and organizations with the [CNContact][cncontact] type.
Here's how an object of that type is encoded as JSON-LD:
{
"@context": "https://schema.org",
"@type": "Person",
"name": "Mattt",
"url": "https://mat.tt"
}
[Schema.org][schema.org] provides standard vocabularies for
people, postal addresses, events, and many other objects we want to represent.
And JSON-LD is a convenient encoding format for
humans, AI, and conventional software alike.
For this project, we created [Ontology][ontology]:
a Swift package for working with structured data.
It includes convenience initializers for types from Apple frameworks,
such as those returned by iMCP tools.
Debugging
Using the MCP Inspector
To debug interactions between iMCP and clients,
you can use the inspector tool
(requires Node.js):
Click
> "Copy server command to clipboard"
Open a terminal and run the following commands:
# Download and run inspector package on imcp-server npx @modelcontextprotocol/inspector [paste-copied-command] # Open inspector web app running locally open http://127.0.0.1:6274
Inspector lets you see all requests and responses between the client and the iMCP server,
which is helpful for understanding how the protocol works.
Using Companion
[Companion][companion] is a utility for testing and debugging your MCP servers
(requires macOS 15 or later).
It gives you an easy way to browse and interact with
a server's prompts, resources, and tools.
Here's how to connect it to iMCP:
- Click
> "Copy server command to clipboard"
- [Download][companion-download] and open the Companion app
- Click the + button in the toolbar to add an MCP server
- Fill out the form:
- Enter "iMCP" as the name
- Select "STDIO" as the transport
- Paste the copied iMCP server command
- Click "Add Server"
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.