MCP Mac Apps Server
# 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](./voice_client.py) to control applications by voice! See [VOICE_SETUP.md](./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)
1. Make sure you have Python 3.7+ installed
2. Install dependencies:
```bash
pip install -r requirements.txt
```
3. Server is ready to use! No compilation required.
### TypeScript Version (Alternative)
1. Make sure you have Node.js (v18+) and npm installed
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
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`
```json
{
"mcpServers": {
"mac-apps": {
"command": "python3",
"args": ["/Users/olegzaichkin/Documents/MCP/src/server.py"]
}
}
}
```
Or for development using tsx:
```json
{
"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](./OLLAMA_SETUP.md)
- **LM Studio** - graphical interface for local LLMs
- **DeepSeek** - see [DEEPSEEK_SETUP.md](./DEEPSEEK_SETUP.md)
š **Detailed list of compatible LLMs and instructions**: [COMPATIBLE_LLM.md](./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 name
- `script` (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 URL
- `appName` (string) - application name
## Testing
To test the server:
```bash
node test-mcp-server.js
```
Or test manually:
```bash
npm run build
npm start
```
## Development
For development with auto-reload:
```bash
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
TDQS
Scored across 15 tools
The tool set suffers from significant ambiguity, as it mixes three unrelated domains (Mac app management, MongoDB operations, and Ollama AI) without clear separation. Tools like 'get_running_applications', 'open_application', and 'quit_application' overlap in purpose with 'run_applescript', which can automate similar actions, leading to potential misselection. The MongoDB tools are internally distinct but unrelated to the Mac app tools, creating confusion about the server's primary focus.
Naming conventions are mixed, with some consistency within subdomains but overall inconsistency. MongoDB tools follow a clear 'mongodb_verb_noun' pattern, and Ollama tools use 'ollama_verb_noun', but Mac app tools vary (e.g., 'get_running_applications', 'open_application', 'quit_application', 'run_applescript') without a unified prefix or structure. This makes the set readable but not predictably organized across the entire server.
With 15 tools, the count is borderline for the server's apparent scope, which seems to cover multiple unrelated domains. For a focused Mac apps server, 15 tools might be reasonable, but here it includes MongoDB and Ollama operations, making the set feel heavy and unfocused. The number is not extreme, but it suggests a lack of clear scoping, as the tools do not form a cohesive whole for a single purpose.
There are significant gaps in coverage for the inferred domains, indicating an incomplete surface. For Mac app management, basic operations like listing installed apps or managing app settings are missing. For MongoDB, while CRUD operations are present, advanced features like indexing or aggregation are absent. The Ollama tools are minimal, lacking model management or configuration options. This fragmentation leads to dead ends for agents trying to perform comprehensive tasks in any one area.