How mattt/imcp works
iMCP exposes personal-data and device capabilities as MCP tools through a macOS menu-bar app. An MCP client launches the bundled stdio server; it discovers the app over Bonjour and proxies the client connection to the app’s MCP server. The app requests approval, dispatches enabled tool calls to service implementations, and returns results to the client. Users enable services and tools in the app, which also supports configuring Claude Desktop. Service capabilities are taken from the README; unsampled service implementations are represented by their listed source paths, without inferring their internal API wiring.
Main entry points: Service.swift Service tools · ServerController.swift Server controller · MCPService.swift MCP service · StdioProxy.swift Stdio proxy
Components 29
Client bridge
- Server entry
CLI/main.swift - MCP service
CLI/MCPService.swift - Bonjour discovery
CLI/BonjourDiscovery.swift - Stdio proxy
CLI/StdioProxy.swift
App server
- Server controller
App/Controllers/ServerController.swift - MCP server
App/Controllers/ServerController.swift - Service tools
App/Models/Service.swift - Tool model
App/Models/Tool.swift - Tool values
App/Models/Value.swift
Personal services
- Calendar events
App/Services/Calendar.swift - Contacts
App/Services/Contacts.swift - Location
App/Services/Location.swift - Maps and routes
App/Services/Maps.swift - Messages
App/Services/Messages.swift - Call history
App/Services/Phone.swift - Reminders
App/Services/Reminders.swift - Shortcuts
App/Services/Shortcuts.swift - Utilities
App/Services/Utilities.swift - Weather
App/Services/Weather.swift - Screen capture
App/Services/Capture.swift
App controls
- iMCP app
App/App.swift - Menu controls
App/Views/ContentView.swift - Service toggles
App/Views/ServiceToggleView.swift - Service settings
App/Views/ServicesSettingsView.swift - Connection approval
App/Views/ConnectionApprovalView.swift - Claude configuration
App/Integrations/ClaudeDesktop.swift
Other components
- MCP client
- Apple services
- Claude Desktop
Connections 28
- MCP client → Server entry: launches stdio
- Server entry → MCP service: runs
- MCP service → Bonjour discovery: discovers app
- MCP service → Stdio proxy: starts proxy
- Stdio proxy → MCP client: bridges stdio
- Stdio proxy → MCP server: forwards MCP
- iMCP app → Server controller: creates
- Server controller → MCP server: manages
- MCP server → Connection approval: requests approval
- Menu controls → Server controller: controls
- Service toggles → Server controller: enables services
- Service settings → Server controller: updates tools
- Server controller → Service tools: dispatches tools
- Service tools → Tool model: defines tools
- MCP server → Tool values: handles arguments
- Service tools → Calendar events: calls tools
- Service tools → Contacts: calls tools
- Service tools → Location: calls tools
- Service tools → Maps and routes: calls tools
- Service tools → Messages: calls tools
- Service tools → Call history: calls tools
- Service tools → Reminders: calls tools
- Service tools → Shortcuts: calls tools
- Service tools → Utilities: calls tools
- Service tools → Weather: calls tools
- Service tools → Screen capture: calls tools
- Calendar events → Apple services: uses system APIs
- Claude configuration → Claude Desktop: updates config