Enables interaction with native Apple applications including Notes, Calendar, FaceTime, and Contacts through AppleScript automation
Provides comprehensive control over Apple Music including playback control, library search, playlist management, and library statistics
Integrates with GitHub Copilot Chat in VS Code to control macOS applications through natural language commands and chat participants
Bridges Claude Desktop with native macOS applications using AppleScript to control system functions and native app interactions
Offers complete Spotify control including playback management, track search, playlist operations, volume control, and playback mode toggles
macOS MCP Servers for Claude Desktop
A collection of Model Context Protocol (MCP) servers that enable Claude Desktop to interact with native macOS applications including Spotify, Apple Music, Notes, Calendar, FaceTime, and Contacts.
Overview
This project provides 6 MCP servers that bridge the gap between Claude Desktop and your macOS native applications, with full GitHub Copilot integration for VS Code users:
Spotify MCP Server: Control Spotify playback, search tracks, manage playlists
Apple Music MCP Server: Control Apple Music, browse library, manage playlists
Notes MCP Server: Create, read, search, and manage Apple Notes
Calendar MCP Server: View and create calendar events, manage schedules
FaceTime MCP Server: Initiate video/audio calls, manage call settings
Contacts MCP Server: Search, create, update, and manage contacts
🚀 NEW: GitHub Copilot Integration
In addition to Claude Desktop, you can now use these servers directly in VS Code through GitHub Copilot Chat! Ask Copilot to control your macOS apps using natural language.
Prerequisites
macOS (tested on macOS 13+)
Node.js 18+
Claude Desktop app
AppleScript permissions for the applications you want to control
Installation
For Claude Desktop
Clone the repository:
git clone <repository-url> cd project-2Install dependencies:
npm installBuild the TypeScript code:
npm run buildConfigure Claude Desktop:
Copy the provided
claude_desktop_config.json
to your Claude Desktop configuration directory:# On macOS, the config file should be placed at: cp claude_desktop_config.json ~/Library/Application\ Support/Claude/claude_desktop_config.jsonOr manually add the server configurations to your existing Claude Desktop config file.
For GitHub Copilot (VS Code)
Complete the Claude Desktop installation steps above first
Install the VS Code extension:
cd vscode-extension npm install npm run compileInstall the extension in VS Code:
# Package the extension (run from vscode-extension directory) cd vscode-extension npx vsce package # Install in VS Code code --install-extension macos-mcp-servers-vscode-1.0.0.vsixConfigure the extension:
Open VS Code settings (Cmd+,)
Search for "macOS MCP"
Set the project path to your compiled dist directory (e.g.,
/path/to/project-2/dist
)Or enable auto-detection if the project is in your workspace
Grant necessary permissions:
When you first use each server, macOS will prompt you to grant permissions for:
System Events (for keyboard shortcuts)
Individual apps (Spotify, Music, Notes, Calendar, FaceTime, Contacts)
Grant these permissions in System Preferences > Security & Privacy > Privacy.
Configuration
The claude_desktop_config.json
file contains the configuration for all 6 MCP servers. Make sure the paths point to your built JavaScript files:
Available Tools
Spotify MCP Server
get_current_track
- Get information about the currently playing trackplay_pause
- Toggle play/pausenext_track
/previous_track
- Skip tracksset_volume
- Control volume (0-100)search_tracks
- Search for tracksget_playlists
- List user playlistsplay_playlist
- Play a specific playlisttoggle_shuffle
/toggle_repeat
- Control playback modesset_position
- Seek to specific position in track
Apple Music MCP Server
get_current_track
- Get currently playing song infoplay_pause
- Toggle playbacknext_track
/previous_track
- Skip tracksset_volume
- Control volumesearch_library
- Search Apple Music librarysearch_artist
- Find artistsget_playlists
- List playlistsplay_playlist
- Play specific playlisttoggle_shuffle
/toggle_repeat
- Playback controlsget_library_stats
- Get library statistics
Notes MCP Server
create_note
- Create new note with title and contentget_note
- Retrieve specific note by titlesearch_notes
- Search notes by content or titleupdate_note
- Modify existing note contentdelete_note
- Remove a notelist_notes
- Get all notes with basic infoget_folders
- List note folderscreate_folder
- Create new note folder
Calendar MCP Server
get_today_events
- Show today's calendar eventsget_upcoming_events
- Show future events (next 7 days)create_event
- Create new calendar eventsearch_events
- Find events by title or contentget_event_details
- Get detailed event informationlist_calendars
- Show available calendarsget_events_for_date
- Get events for specific date
FaceTime MCP Server
start_facetime_call
- Start video call with contactstart_facetime_audio_call
- Start audio-only callcheck_facetime_status
- Check FaceTime availabilityend_current_call
- End active calltoggle_mute
- Mute/unmute microphonetoggle_video
- Turn camera on/off
Contacts MCP Server
search_contacts
- Find contacts by name, email, or phoneget_contact_details
- Get full contact informationcreate_contact
- Add new contactupdate_contact
- Modify contact informationdelete_contact
- Remove contactget_all_contacts
- List all contacts (limited to 50)get_contact_groups
- Show contact groupsget_recent_contacts
- Show recently added contacts
Usage Examples
Claude Desktop
Once configured, you can interact with your macOS apps through Claude Desktop:
"Play my workout playlist on Spotify"
"Create a note about today's meeting"
"What's on my calendar for tomorrow?"
"Start a FaceTime call with John"
"Find all contacts from Apple Inc"
"Pause the music and turn up the volume"
GitHub Copilot in VS Code
With the VS Code extension installed, you can use GitHub Copilot Chat with the @macos-mcp
participant:
Chat Commands
@macos-mcp play my favorite playlist on Spotify
@macos-mcp create a note called "Meeting Notes"
@macos-mcp what's on my calendar today?
@macos-mcp call mom on FaceTime
@macos-mcp search contacts for John
@macos-mcp pause the music
Command Palette
You can also use VS Code's Command Palette (Cmd+Shift+P) to access quick actions:
macOS MCP: Get Current Spotify Track
macOS MCP: Spotify Play/Pause
macOS MCP: Create Apple Note
macOS MCP: Get Today's Calendar Events
macOS MCP: Search Contacts
macOS MCP: Start FaceTime Call
Example Conversations
Music Control:
Notes and Calendar:
Development
Building the VS Code Extension
Packaging the Extension
Testing Individual Servers
You can test each server individually:
Adding New Features
Each server follows the same pattern:
Define Zod schemas for input validation
Implement tool handlers using AppleScript
Register tools with the MCP server
Handle errors gracefully
Troubleshooting
Common Issues
Permission Denied Errors
Ensure you've granted the necessary permissions in System Preferences
Try running the failing operation manually first
App Not Found Errors
Make sure the target application is installed
Verify the application name in the AppleScript
Claude Desktop Not Recognizing Servers
Check that the config file is in the correct location
Verify all file paths are absolute and correct
Restart Claude Desktop after configuration changes
VS Code Extension Not Working
Ensure the extension is properly installed and activated
Check the project path in extension settings
Verify the MCP servers are built in the dist directory
Restart VS Code after configuration changes
GitHub Copilot Chat Participant Not Available
Make sure you have GitHub Copilot subscription
Verify the extension is activated (check Extensions view)
Try reloading the VS Code window (Cmd+R)
Build Errors
Run
npm install
to ensure all dependencies are installedCheck TypeScript compilation with
npm run build
Debug Mode
For debugging Claude Desktop servers, you can run servers with additional logging:
For debugging the VS Code extension:
Open the extension development host (F5 in the extension folder)
Check the Output panel for "macOS MCP Servers" logs
Use Developer Tools (Help > Toggle Developer Tools) for detailed debugging
Security Considerations
These servers use AppleScript to control macOS applications
All operations require explicit user permission grants
No sensitive data is stored or transmitted
All interactions are local to your machine
Contributing
Fork the repository
Create a feature branch
Make your changes
Test thoroughly on macOS
Submit a pull request
License
This project is provided as-is for educational and personal use. Please respect the terms of service of the applications you're integrating with.
Support
If you encounter issues:
Check the troubleshooting section above
Verify your macOS permissions
Ensure all applications are properly installed
Check Claude Desktop logs for error details
Note: This project requires macOS and uses AppleScript for native app integration. It will not work on other operating systems.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables Claude Desktop and GitHub Copilot to interact with native macOS applications including Spotify, Apple Music, Notes, Calendar, FaceTime, and Contacts through natural language commands. Provides comprehensive control over music playback, note management, calendar events, video calls, and contact operations using AppleScript integration.