Sponsored by Deepsite.site

Airmcp

Created By
heznpc13 hours ago
AirMCP connects AI to the entire Apple ecosystem on macOS. 253 tools across 25 modules: Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, Podcasts, Weather, Pages, Numbers, Keynote, Location, Bluetooth, and Google Workspace. Features JXA + Swift dual-path automation, human-in-the-loop approval for destructive actions, and one-command setup via npx airmcp init. Works with Claude Desktop, Cursor, Windsurf, and any MCP client.
Overview

AirMCP

AirMCP

CI npm npm downloads License: MIT Node >= 18

MCP server for the entire Apple ecosystem — Notes, Reminders, Calendar, Contacts, Mail, Messages, Music, Finder, Safari, System, Photos, Shortcuts, Apple Intelligence, TV, Screen Capture, Maps, Podcasts, Weather, Pages, Numbers, Keynote, Location, and Bluetooth. Connect any AI to your Mac.

Available in multiple languages at the project landing page.

Features

  • 253 tools (25 modules) — Apple app CRUD + system control + Apple Intelligence + UI Automation + Screen Capture + Maps + Podcasts + Weather + iWork (Pages/Numbers/Keynote) + Google Workspace + dynamic shortcuts
  • 32 prompts — per-app workflows (notes, calendar, reminders, shortcuts) + cross-module + developer workflows + YAML skills
  • 11 MCP resources — Notes, Calendar, Reminders, Music, Mail, System live data URIs
  • JXA + Swift bridge — JXA for basic automation, EventKit/PhotoKit for advanced features
  • Recurring events/reminders — EventKit recurrence rules (macOS 26+ Swift bridge)
  • Photo import/delete — PhotoKit photo management (macOS 26+ Swift bridge)
  • Apple Intelligence — On-device summarize, rewrite, proofread (macOS 26+)
  • Native menubar app — SwiftUI companion with onboarding wizard, auto-start, log viewer, update notifications, permission setup
  • One-click setupsetup_permissions tool or menubar app to request all macOS permissions at once
  • Dual transport — stdio (default, safe local) + HTTP/SSE (--http) for remote agents and registries
  • Safety annotations — readOnly/destructive hints on all tools

Get Started (2 minutes)

1. Install Node.js

If you don't have Node.js, install it first:

# Using Homebrew (recommended)
brew install node

# Or download from https://nodejs.org (LTS version)

2. Run the Setup Wizard

npx airmcp init

This will:

  • Let you choose which Apple apps to connect (Notes, Calendar, Reminders, etc.)
  • Automatically configure your MCP client
  • Save your preferences to ~/.config/airmcp/config.json

3. Restart Your MCP Client

That's it! Your AI can now read your notes, manage reminders, check your calendar, and more.

Troubleshooting

npx airmcp doctor

Checks Node.js version, config files, MCP client setup, macOS permissions, and module status — all in one command.

Try It — Talk to Your Mac

Once connected, just ask your AI in natural language. Here are some things you can try:

Everyday

  • "Read my latest notes and summarize them"
  • "What's on my calendar today?"
  • "Show me overdue reminders and reschedule them to tomorrow"
  • "Play some jazz on Apple Music"

Productivity

  • "Draft a meeting agenda in Notes, then create calendar events for each topic"
  • "Find all emails from Alex about the project and create reminders for action items"
  • "Search my contacts for everyone at Acme Corp"

System Control

  • "Turn on dark mode, set volume to 50%, and lower brightness"
  • "Take a screenshot and save it to my Desktop"
  • "What apps are running right now? Quit anything I'm not using"

Research & Web

  • "Open the Apple developer docs in Safari and summarize the page"
  • "Search my Safari tabs for that article I was reading about Swift"

Power User

  • "Scan nearby Bluetooth devices"
  • "Get my current GPS coordinates and show the weather here"
  • "Record my screen for 10 seconds"
  • "Run my 'Morning Routine' shortcut"

Cross-App Workflows

  • "Check today's meetings, find related notes, and create a prep checklist in Reminders"
  • "Search my files for the Q1 report, read it, and draft a summary email to the team"

These are just starting points — with 253 tools across 25 Apple apps, the combinations are endless.


Client Setup

Works with any MCP-compatible client. Examples:

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "airmcp": {
      "command": "npx",
      "args": ["-y", "airmcp"]
    }
  }
}

Claude Code

claude mcp add airmcp -- npx -y airmcp

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "airmcp": {
      "command": "npx",
      "args": ["-y", "airmcp"]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "airmcp": {
      "command": "npx",
      "args": ["-y", "airmcp"]
    }
  }
}

Other MCP Clients

Any client that supports the MCP stdio transport can use AirMCP. Use npx -y airmcp as the server command.

Local Development

git clone https://github.com/heznpc/AirMCP.git
cd AirMCP
npm install
npm run build
node dist/index.js

A native SwiftUI companion app for server status monitoring and permission setup.

cd app && swift build -c release
# Binary: app/.build/release/AirMCPApp

Features: onboarding wizard, auto-start on login, log viewer, update notifications, server status, one-click permission setup, MCP client config clipboard copy.

HTTP Mode

HTTP server mode for remote agents, registries, and multi-client setups:

npx airmcp --http --port 3847
  • Endpoint: POST/GET/DELETE /mcp
  • Transport: Streamable HTTP + SSE (MCP spec 2024-11-05)
  • Session management via Mcp-Session-Id header
  • Default port: 3847

Useful for running a Mac Mini as an "always-on AI hub."

Tools

Notes (12 tools)

ToolDescriptionType
list_notesList all notes with title, folder, datesread
search_notesSearch by keyword in title and bodyread
read_noteRead full content by IDread
create_noteCreate a note with HTML bodywrite
update_noteReplace entire bodydestructive
delete_noteDelete (moved to Recently Deleted)destructive
move_noteMove to another folderdestructive
list_foldersList folders with note countsread
create_folderCreate a new folderwrite
scan_notesBulk scan with metadata and previewread
compare_notesCompare 2-5 notes side by sideread
bulk_move_notesMove multiple notes at oncedestructive

Reminders (11 tools)

ToolDescriptionType
list_reminder_listsList all lists with countsread
list_remindersFilter by list/completedread
read_reminderFull details by IDread
create_reminderCreate with due date/prioritywrite
update_reminderUpdate propertiesdestructive
complete_reminderMark complete/incompletewrite
delete_reminderDelete permanentlydestructive
search_remindersSearch by keyword in name/bodyread
create_reminder_listCreate a new reminder listwrite
delete_reminder_listDelete a reminder listdestructive
create_recurring_reminderCreate with recurrence rule (Swift/EventKit)write

Calendar (10 tools)

ToolDescriptionType
list_calendarsList calendars with name/colorread
list_eventsEvents in date range with paginationread
read_eventFull details with attendeesread
create_eventCreate with location/descriptionwrite
update_eventUpdate propertiesdestructive
delete_eventDelete permanentlydestructive
search_eventsKeyword search in date rangeread
get_upcoming_eventsNext N events from nowread
today_eventsAll events for todayread
create_recurring_eventCreate with recurrence rule (Swift/EventKit)write

Contacts (10 tools)

ToolDescriptionType
list_contactsList with email/phone, paginationread
search_contactsSearch by name, email, phone, or orgread
read_contactFull details (emails, phones, addresses)read
create_contactCreate with email/phone/orgwrite
update_contactUpdate propertiesdestructive
delete_contactDelete permanentlydestructive
list_groupsList contact groupsread
add_contact_emailAdd email to existing contactwrite
add_contact_phoneAdd phone to existing contactwrite
list_group_membersList contacts in a groupread

Mail (11 tools)

ToolDescriptionType
list_mailboxesList mailboxes with unread countsread
list_messagesRecent messages in a mailboxread
read_messageFull message contentread
search_messagesSearch by subject/senderread
mark_message_readMark read/unreadwrite
flag_messageFlag/unflag a messagewrite
get_unread_countTotal unread across all mailboxesread
move_messageMove message to another mailboxdestructive
list_accountsList all mail accountsread
send_mailCompose and send an emailwrite
reply_mailReply to an email messagewrite

Music (17 tools)

ToolDescriptionType
list_playlistsList playlists with track countsread
list_tracksTracks in a playlistread
now_playingCurrent track and playback stateread
playback_controlPlay, pause, next, previouswrite
search_tracksSearch by name/artist/albumread
play_trackPlay a specific track by namewrite
play_playlistStart playing a playlistwrite
get_track_infoDetailed track metadataread
set_shuffleSet shuffle and repeat modewrite
create_playlistCreate a new playlistwrite
add_to_playlistAdd a track to a playlistwrite
remove_from_playlistRemove a track from a playlistdestructive
delete_playlistDelete an existing playlistdestructive
get_ratingGet rating, favorited, and disliked statusread
set_ratingSet star rating (0-100) for a trackwrite
set_favoritedMark or unmark a track as favoritedwrite
set_dislikedMark or unmark a track as dislikedwrite

Finder (8 tools)

ToolDescriptionType
search_filesSpotlight file searchread
get_file_infoFile info (size, dates, tags)read
set_file_tagsSet Finder tagsdestructive
recent_filesRecently modified filesread
list_directoryList files in directoryread
move_fileMove/rename filedestructive
trash_fileMove to Trashdestructive
create_directoryCreate new directorywrite

Safari (12 tools)

ToolDescriptionType
list_tabsList tabs across all windowsread
read_page_contentRead page text contentread
get_current_tabCurrent active tab URL/titleread
open_urlOpen URL in Safariwrite
close_tabClose a specific tabdestructive
activate_tabSwitch to a specific tabwrite
run_javascriptExecute JavaScript in tabwrite
search_tabsSearch tabs by title/URLread
list_bookmarksList all bookmarks across foldersread
add_bookmarkAdd a bookmark to Safariwrite
list_reading_listList Reading List itemsread
add_to_reading_listAdd URL to Reading Listwrite

System (27 tools)

ToolDescriptionType
get_clipboardRead clipboard contentread
set_clipboardWrite to clipboardwrite
get_volumeGet system volumeread
set_volumeSet system volumewrite
toggle_dark_modeToggle dark/light modewrite
get_frontmost_appGet frontmost applicationread
list_running_appsList running applicationsread
get_screen_infoDisplay informationread
show_notificationShow system notificationwrite
capture_screenshotCapture screenshot (full/window/selection)write
get_wifi_statusWiFi connection status and signalread
toggle_wifiTurn WiFi on or offwrite
list_bluetooth_devicesList paired Bluetooth devicesread
get_battery_statusBattery percentage, charging, time remainingread
get_brightnessGet display brightness levelread
set_brightnessSet display brightness levelwrite
toggle_focus_modeToggle Do Not Disturb on or offwrite
system_sleepPut system to sleepwrite
prevent_sleepKeep system awake for N secondswrite
system_powerShutdown or restart the systemdestructive
launch_appLaunch/activate an applicationwrite
quit_appQuit a running applicationdestructive
is_app_runningCheck if an application is runningread
list_all_windowsList all windows across all appsread
move_windowMove a window to specific coordinateswrite
resize_windowResize a windowwrite
minimize_windowMinimize or restore a windowwrite

Photos (9 tools)

ToolDescriptionType
list_albumsList albumsread
list_photosList photos in albumread
search_photosSearch photos by keywordread
get_photo_infoPhoto metadata detailsread
list_favoritesList favorite photosread
create_albumCreate new albumwrite
add_to_albumAdd photo to albumwrite
import_photoImport photo from file (Swift/PhotoKit)write
delete_photosDelete photos by ID (Swift/PhotoKit)destructive

Messages (6 tools)

ToolDescriptionType
list_chatsRecent conversations with participantsread
read_chatChat details (participants, last update)read
search_chatsSearch by name/participant/handleread
send_messageSend iMessage/SMS textwrite
send_fileSend file via iMessage/SMSwrite
list_participantsList chat participantsread

Shortcuts (10 tools)

ToolDescriptionType
list_shortcutsList available shortcutsread
run_shortcutRun shortcut by namewrite
search_shortcutsSearch shortcuts by nameread
get_shortcut_detailShortcut details/actionsread
create_shortcutCreate a new shortcut via UI automationwrite
delete_shortcutDelete shortcut by name (macOS 13+)destructive
export_shortcutExport shortcut to .shortcut filewrite
import_shortcutImport shortcut from .shortcut filewrite
edit_shortcutOpen shortcut in Shortcuts app for editingwrite
duplicate_shortcutDuplicate an existing shortcutwrite

UI Automation (10 tools)

ToolDescriptionType
ui_open_appOpen app and read accessibility summaryread
ui_clickClick element by coordinates or textwrite
ui_typeType text into focused fieldwrite
ui_press_keySend key combinationswrite
ui_scrollScroll in directionwrite
ui_readRead app accessibility treeread
ui_accessibility_queryQuery UI elements by role/title/value/identifierread
ui_perform_actionFind element by locator + perform AX actionwrite
ui_traverseBFS traverse with PID targeting + visible filterread
ui_diffCompare UI state before/after an actionread

Apple Intelligence (8 tools)

Requires macOS 26+ with Apple Silicon.

ToolDescriptionType
summarize_textOn-device text summarizationread
rewrite_textRewrite with specified toneread
proofread_textGrammar/spelling correctionread
generate_textGenerate text with custom instructions via on-device AIread
generate_structuredGenerate structured JSON output with schemaread
tag_contentContent classification/tagging with confidenceread
ai_chatNamed multi-turn on-device AI sessionread
ai_statusCheck Foundation Model availabilityread

TV (6 tools)

ToolDescriptionType
tv_list_playlistsList Apple TV playlists (library)read
tv_list_tracksList movies/episodes in playlistread
tv_now_playingCurrently playing contentread
tv_playback_controlPlay/pause/next/previous controlwrite
tv_searchSearch movies/TV showsread
tv_playPlay movie/episode by namewrite

Screen Capture (5 tools)

ToolDescriptionType
capture_screenCapture full screen screenshot (returns PNG image)read
capture_windowCapture a specific app windowread
capture_areaCapture a screen region by coordinatesread
list_windowsList all visible windows with position/sizeread
record_screenRecord screen for 1-60 seconds (.mov)write

Maps (8 tools)

ToolDescriptionType
search_locationSearch for a place in Apple Mapswrite
get_directionsGet directions between two locationswrite
drop_pinDrop a pin at specific coordinateswrite
open_addressOpen a specific address in Apple Mapswrite
search_nearbySearch for places near a locationwrite
share_locationGenerate a shareable Apple Maps linkread
geocodeConvert place name/address to coordinatesread
reverse_geocodeConvert coordinates to place name/addressread

Podcasts (6 tools)

ToolDescriptionType
list_podcast_showsList subscribed podcast showsread
list_podcast_episodesList episodes for a showread
podcast_now_playingCurrently playing podcast episoderead
podcast_playback_controlPlay, pause, next, previouswrite
play_podcast_episodePlay a specific episode by namewrite
search_podcast_episodesSearch episodes by keywordread

Weather (3 tools)

ToolDescriptionType
get_current_weatherGet current weather by coordinatesread
get_daily_forecastGet multi-day forecast by coordinatesread
get_hourly_forecastGet hourly forecast by coordinatesread

Location (2 tools)

ToolDescriptionType
get_current_locationGet device's current GPS coordinatesread
get_location_permissionCheck Location Services authorization statusread

Bluetooth (4 tools)

ToolDescriptionType
get_bluetooth_stateCheck Bluetooth power stateread
scan_bluetoothScan for nearby BLE devicesread
connect_bluetoothConnect to a BLE device by UUIDwrite
disconnect_bluetoothDisconnect a BLE devicewrite

Google Workspace (16 tools)

Requires: npm install -g @googleworkspace/cli && gws auth setup

ToolDescriptionType
gws_statusCheck GWS CLI availabilityread
gws_gmail_listList Gmail messages with queryread
gws_gmail_readRead Gmail message by IDread
gws_gmail_sendSend email via Gmailwrite
gws_drive_listList Google Drive filesread
gws_drive_readGet Drive file metadataread
gws_drive_searchFull-text search across Driveread
gws_sheets_readRead Google Sheet valuesread
gws_sheets_writeWrite to Google Sheetwrite
gws_calendar_listList Google Calendar eventsread
gws_calendar_createCreate Google Calendar eventwrite
gws_docs_readRead Google Doc contentread
gws_tasks_listList Google Tasksread
gws_tasks_createCreate Google Taskwrite
gws_people_searchSearch Google Contactsread
gws_rawExecute any GWS CLI commandwrite

Resources

MCP resources provide live data from Apple apps via URI.

URIDescription
notes://recent10 most recent notes
notes://recent/{count}Recent notes (custom count, max 50)
calendar://todayToday's calendar events
calendar://upcomingNext 7 days of calendar events
reminders://dueOverdue reminders
reminders://todayToday's due reminders (incomplete only)
music://now-playingCurrently playing Apple Music track
system://clipboardmacOS clipboard content
mail://unreadUnread mail count across all mailboxes
context://snapshotUnified context from all active apps
context://snapshot/{depth}Configurable depth context (brief/standard/full)

Prompts

Per-App

  • organize-notes — Classify notes by topic, create folders, move
  • find-duplicates — Find similar notes, compare, suggest cleanup
  • weekly-review — Summarize past week's notes
  • organize-reminders — Scan, identify overdue/completed, cleanup
  • daily-review — Today's due reminders with priorities
  • schedule-review — Upcoming events, conflicts, optimizations
  • meeting-prep — Event details + related notes for meeting prep

Cross-Module

  • daily-briefing — Today's events + due reminders + recent notes
  • weekly-digest — Past N days: events + notes + reminders combined
  • meeting-notes-to-reminders — Extract action items from meeting notes, create reminders
  • event-follow-up — Create follow-up note and reminders after a meeting
  • research-with-safari — Safari research + save results to Notes
  • focus-session — Calendar + Reminders + Music focus session
  • file-organizer — Finder file organization + Notes logging

Developer Workflows

  • dev-session — Scan project, check specs, research docs, create session notes
  • debug-loop — Capture errors from Safari/clipboard, locate code, log bugs, create fix tasks
  • screen-capture-flow — Screenshot → Photos import → annotation notes
  • app-release-prep — Calendar schedule + Notes changelog + Reminders checklist
  • idea-to-task — Break idea into tasks → Reminders + Calendar time blocks
  • build-log — Analyze build output, log errors or celebrate success

Shortcuts

  • shortcut-automation — Discover and chain Siri Shortcuts for automation
  • shortcut-discovery — Find relevant shortcuts for a task
  • shortcut-troubleshooting — Debug and fix broken shortcuts

Developer Agent Pipeline

AirMCP's developer prompts connect Apple apps into autonomous agent workflows. Each prompt orchestrates tools across multiple modules — AI reads the actual filesystem, Notes, Calendar, and Reminders for context, then records structured results.

┌─────────────────────────────────────────────────────────────────┐
│                     dev-session                                 │
│  Finder (scan) → Notes (specs) → Safari (docs) → Notes (log)   │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                     debug-loop                                  │
│  Safari (JS errors) → Clipboard → Finder (locate) →            │
│  Notes (bug log) → Reminders (fix tasks)                        │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                     idea-to-task                                 │
│  Notes (idea) → AI (decompose) → Reminders (tasks) →           │
│  Calendar (time blocks)                                         │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
│                     build-log                                   │
│  Finder (output) → Clipboard (log) →                            │
│  ┌ Fail → Notes (error log) → Reminders (fix tasks)             │
│  └ Pass → Notification → Music (celebrate) → Notes (success)    │
└─────────────────────────────────────────────────────────────────┘

Designed for AI coding agents (Claude Code, Cursor, Copilot, etc.) to invoke via MCP prompts, turning your Mac into a context-aware development environment.

Module Presets

By default, new installations start with 5 core modules (Notes, Reminders, Calendar, Shortcuts, System) to keep things simple. You can enable more anytime:

# Re-run the setup wizard to change modules
npx airmcp init

# Or enable all modules at once
npx airmcp --full

Or edit ~/.config/airmcp/config.json directly:

{
  "disabledModules": ["messages", "intelligence"]
}

CLI Commands

CommandDescription
npx airmcp initInteractive setup wizard
npx airmcp doctorDiagnose installation issues
npx airmcpStart MCP server (stdio, default)
npx airmcp --fullStart with all 25 modules enabled
npx airmcp --httpStart as HTTP server (port 3847)

Configuration

Environment Variables

VariableDefaultDescription
AIRMCP_INCLUDE_SHAREDfalseInclude shared notes/folders
AIRMCP_ALLOW_SEND_MESSAGESfalseAllow sending iMessages (opt-in)
AIRMCP_ALLOW_SEND_MAILfalseAllow sending emails (opt-in)
AIRMCP_FULLfalseEnable all modules (ignores preset)
AIRMCP_DISABLE_{MODULE}Disable a specific module (e.g. AIRMCP_DISABLE_MUSIC=true)
GEMINI_API_KEYGoogle Gemini API key for cloud embeddings (optional)
AIRMCP_EMBEDDING_MODELtext-embedding-004Gemini embedding model name
AIRMCP_EMBEDDING_DIM768Embedding dimension (768/1024/2048/3072)
AIRMCP_EMBEDDING_PROVIDERautoForce provider: gemini, swift, hybrid, none
AIRMCP_HTTP_TOKENBearer token for HTTP mode authentication

Config File

~/.config/airmcp/config.json:

{
  "disabledModules": ["messages", "intelligence"],
  "includeShared": false,
  "allowSendMessages": false,
  "allowSendMail": false,
  "hitl": {
    "level": "destructive-only",
    "timeout": 30
  }
}

Human-in-the-Loop (HITL)

Require manual approval before destructive operations:

{
  "hitl": {
    "level": "destructive-only",
    "timeout": 30
  }
}

Levels: off, destructive-only, all-writes, all

Semantic Search (Optional)

On-device cross-app semantic search powered by Apple's NLContextualEmbedding. Find related notes, events, reminders, and emails by meaning — not just keywords.

npm run swift-build  # Build the Swift bridge first

Then use the tools:

  1. semantic_index — Index data from enabled Apple apps into a local vector store
  2. semantic_search — Search by meaning across all indexed data
  3. find_related — Find items related to a specific note/event/reminder
  4. semantic_status — Check index status

Supports Korean, English, Japanese, Chinese with automatic language detection. Optionally set GEMINI_API_KEY for higher-quality Google Gemini embeddings.

Swift Bridge (Optional)

For semantic search, recurring events/reminders (EventKit), photo import/delete (PhotoKit), and Apple Intelligence — requires macOS 26+:

npm run swift-build

Requirements

  • macOS
  • Node.js >= 18
  • Per-app automation permissions (prompted on first run) — use setup_permissions tool to request all at once
  • Apple Intelligence: macOS 26+ with Apple Silicon

Limitations

Modules with OS requirements (e.g., Intelligence requires macOS 26+) are automatically disabled at startup on older systems via runtime OS detection.

Architecture & Security

  • JXA/AppleScript dependency — Core automation relies on Apple's scripting dictionaries. While these have been stable for 10+ years, macOS updates can theoretically break individual modules. Circuit breaker (3 failures → 60s auto-disable) isolates failures. UI Automation tools (6 tools) are inherently more brittle and separated into their own module.
  • Read data exposure — Destructive operations require HITL approval, but read operations (mail, messages, contacts) are not rate-limited. When connected to cloud LLMs, sensitive data passes through the LLM provider. Mitigations: PII scrubbing in logs, pagination limits, sensitive modules (mail, messages) require explicit opt-in.
  • IPC overhead — Multi-process path (Client → Node.js → osascript/Swift CLI → macOS app). Each JXA call adds ~50ms overhead. Pagination prevents bulk data transfers. Swift bridge path bypasses JXA for EventKit/PhotoKit operations.
  • Scope — 253 tools across 25 modules follow 5 repeating patterns (JXA CRUD, Swift bridge, HTTP API, System Events, CLI wrapper), keeping maintenance proportional to pattern count, not tool count.

Location & Bluetooth

  • Location requires macOS Location Services permission (first use triggers system dialog).
  • Bluetooth scanning discovers BLE (Low Energy) devices only. Classic Bluetooth devices are listed via list_bluetooth_devices in the System module.
  • Bluetooth connect/disconnect operates within the server process lifecycle.

Notes

  • Move copies and deletes (new ID, reset dates, lost attachments). Update replaces entire body — read first to preserve content.
  • Password-protected notes cannot be read.

Reminders / Calendar

  • JXA recurrence is read-only — use create_recurring_event/create_recurring_reminder (Swift/EventKit).
  • Calendar attendees are read-only.

Contacts

  • Custom fields not accessible.

Mail

  • Content truncated to 5000 chars by default (maxLength parameter adjustable).

Messages

  • Individual message content (chat history) not accessible via JXA.
  • Send requires recipient to be a registered buddy in Messages.

Music

  • Smart playlists are read-only.
  • Queue manipulation not available.

Finder

  • Tags use Spotlight (mdfind), performance varies with index state.

Safari

  • Reading page content requires "Allow JavaScript from Apple Events" in Safari Developer menu.
  • macOS 26+: Bookmark and Reading List tools (list_bookmarks, list_reading_list, add_bookmark) use Bookmarks.plist instead of JXA (Apple removed bookmark scripting). Requires Full Disk Access for your terminal in System Settings > Privacy & Security. add_bookmark is not supported on macOS 26+.

Podcasts

  • macOS 26+: All Podcasts tools are non-functional. Apple removed the Podcasts scripting dictionary in macOS 26 (Tahoe). The circuit breaker will auto-disable the module after 3 failures.

Photos

  • JXA: album creation and photo addition only, no import/delete.
  • Swift bridge (macOS 26+): full import/delete via PhotoKit.

Pages / Numbers / Keynote

  • macOS 26+: Apple renamed iWork apps (e.g. "Pages" → "Pages Creator Studio"). AirMCP uses bundle IDs internally so this is handled transparently.
  • Requires the corresponding iWork app to be open for document operations.

Apple Intelligence

  • Requires macOS 26 (Tahoe) + Apple Silicon.
  • Build bridge binary with npm run swift-build.

Roadmap

v2.1 (Current)

  • Gemini Embedding upgrade — Apple Intelligence의 Gemini 채택에 맞춰 text-embedding-004로 업그레이드. on-device Swift bridge + cloud Gemini 하이브리드 provider 지원. Apple이 Foundation Models에 Gemini를 도입하면서 AirMCP도 동일 생태계로 확장 — on-device 처리와 클라우드 임베딩을 자동 전환
  • Google Workspace — Gmail, Drive, Sheets, Calendar, Docs, Tasks, People via @googleworkspace/cli
  • Dynamic module loading — New modules = 1 line in MANIFEST (no import boilerplate)
  • Centralized constants — All API URLs, timeouts, buffer sizes in src/shared/constants.ts with env var overrides

v2.0

  • CoreLocation — Native GPS coordinates via Swift/CLLocationManager
  • CoreBluetooth — BLE device scanning, state, connect/disconnect via Swift/CBCentralManager
  • App Management — Launch, quit, check app status
  • Window Management — List, move, resize, minimize windows across all apps
  • Geocoding — Forward/reverse geocoding via Open-Meteo and Nominatim APIs
  • Security hardening — Sensitive modules (mail, messages) opt-in by default, architecture limitations documented

Platform Constraints (macOS 26+)

  • Safari bookmarks/reading list — Apple removed JXA bookmark scripting classes in macOS 26. The plist fallback (~/Library/Safari/Bookmarks.plist) requires Full Disk Access, which TCC blocks for MCP server processes. Investigating Shortcuts-based or WebExtension bridge approaches.
  • Safari add_bookmark — Legacy JXA make new bookmark no longer supported in macOS 26. No programmatic alternative available yet.
  • Podcasts — Apple removed the Podcasts JXA scripting dictionary entirely in macOS 26. All 6 Podcasts tools return errors. Investigating Shortcuts bridge or Media framework alternatives.

Future

  • OAuth 2.1 + PKCE — HTTP transport authentication for remote deployments
  • GUI .app distribution — Code Signing + Notarization, Homebrew Cask
  • Marketplace listings — mcp.so, Smithery, and other MCP directories
  • iOS / visionOS exploration (v3.0+)

Contributing

See CONTRIBUTING.md for development setup, code style, and PR guidelines.

First-time contributors: look for issues labeled good first issue.

Community

License

MIT

Server Config

{
  "mcpServers": {
    "airmcp": {
      "command": "npx",
      "args": [
        "-y",
        "airmcp"
      ]
    }
  }
}
Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
Playwright McpPlaywright MCP server
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
DeepChatYour AI Partner on Desktop
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
CursorThe AI Code Editor
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Tavily Mcp
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
ChatWiseThe second fastest AI chatbot™
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
WindsurfThe new purpose-built IDE to harness magic
Y GuiA web-based graphical interface for AI chat interactions with support for multiple AI models and MCP (Model Context Protocol) servers.
Amap Maps高德地图官方 MCP Server
Serper MCP ServerA Serper MCP Server
RedisA Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools.