MCP Mac Apps Server
MCP server for managing macOS applications through LLM. Allows launching applications, managing them via AppleScript, and getting information about running applications.
🎤 Voice Control: Use voice_client.py to control applications by voice! See VOICE_SETUP.md
Features
- 🚀 Launch Applications - open any applications on Mac
- 📋 List Running Applications - get list of active applications
- 🤖 AppleScript Automation - execute commands in applications
- ❌ Close Applications - quit applications
- 📂 Open Files - open files in specific applications
Installation
Python Version (Recommended)
-
Make sure you have Python 3.7+ installed
-
Install dependencies:
pip install -r requirements.txt
- Server is ready to use! No compilation required.
TypeScript Version (Alternative)
-
Make sure you have Node.js (v18+) and npm installed
-
Install dependencies:
npm install
- Build the project:
npm run build
Configuration for Use with MCP Clients
Claude Desktop
Add configuration to the MCP client settings file. For Claude Desktop this is usually the MCP configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"mac-apps": {
"command": "python3",
"args": ["/Users/olegzaichkin/Documents/MCP/src/server.py"]
}
}
}
Or for development using tsx:
{
"mcpServers": {
"mac-apps": {
"command": "npm",
"args": ["run", "dev"],
"cwd": "/Users/olegzaichkin/Documents/MCP"
}
}
}
Other LLMs and Clients
Available options:
- Claude Desktop (recommended) - full MCP support
- Ollama ✅ - local models (installed, models loaded) - see OLLAMA_SETUP.md
- LM Studio - graphical interface for local LLMs
- DeepSeek - see DEEPSEEK_SETUP.md
📖 Detailed list of compatible LLMs and instructions: COMPATIBLE_LLM.md
Usage
After configuration, the LLM will be able to use the following tools:
1. Open Application
Open Safari
2. Get List of Applications
What applications are currently running?
3. Execute AppleScript
In Safari, open a new tab
4. Close Application
Close Calculator
5. Open File
Open file ~/Documents/example.txt in TextEdit
Available Tools
open_application
Opens an application by name.
Parameters:
appName(string) - application name (e.g., "Safari", "Calculator")
get_running_applications
Returns a list of all running applications.
run_applescript
Executes an AppleScript command in the specified application.
Parameters:
appName(string) - application namescript(string) - AppleScript command
AppleScript Examples:
- Safari:
make new document- create a new tab - Finder:
open folder "Documents"- open a folder - TextEdit:
make new document- create a new document
quit_application
Closes the specified application.
Parameters:
appName(string) - application name to close
open_file_with_app
Opens a file or URL in the specified application.
Parameters:
path(string) - path to file or URLappName(string) - application name
Testing
To test the server:
node test-mcp-server.js
Or test manually:
npm run build
npm start
Development
For development with auto-reload:
npm run dev
Security
⚠️ Warning: This server allows executing commands on your system. Use it only with trusted LLM clients and in a secure environment.
For macOS, you may need permission to control other applications:
- System Settings → Privacy & Security → Automation
- Allow access for Terminal/Node.js
License
MIT
