Home / MCP / applescript-mcp MCP Server
Provides a standardized MCP server interface to control macOS via AppleScript, enabling apps to manage calendar, clipboard, Finder, notifications, system controls and more.
Configuration
View docs{
"mcpServers": {
"applescript_mcp": {
"command": "node",
"args": [
"/path/to/applescript-mcp/dist/index.js"
],
"env": {
"DEBUG": "applescript-mcp*"
}
}
}
}This MCP Server lets you drive macOS actions through AppleScript from an LLM-enabled client. It provides a unified interface to control system features, manage files, handle notifications, and automate tasks, enabling powerful integrations with AI applications.
You connect your MCP client to the applescript-mcp server and issue tool requests that map to AppleScript-based actions on macOS. Each tool is organized into functional categories such as Calendar, Clipboard, Finder, Notifications, System, iTerm, Shortcuts, Mail, Messages, Notes, and Pages. You can sequence multiple tool calls to automate workflows, combine results from different categories, and incorporate user input or programmatic data into your scripts.
When you send a request, the server identifies the appropriate category and script, generates the AppleScript content, executes it via macOS, and returns the results to your client. If a script produces structured output, you receive it in a consistent MCP response so you can continue processing in your application.
Prerequisites you need before running the server are macOS 10.15 or later and Node.js 18 or later.
Follow these concrete steps to set up and run the server locally.
1. Clone or download the project and navigate to the project directory.
2. Install dependencies.
npm install3. Build the server.
npm run build4. Start the server locally using the runtime command shown in the configuration example.
node dist/index.js5. Optionally, launch the MCP Inspector for testing and debugging.
npx @modelcontextprotocol/inspector node path/to/server/index.jsYou can configure how the server is started by providing an MCP configuration that points to the local runtime. A typical stdio-based configuration runs the server via Node.js and references the built output.
{
"mcpServers": {
"applescript_mcp": {
"command": "node",
"args": ["/path/to/applescript-mcp/dist/index.js"]
}
}
}Debugging and logging are available via standard tooling. You can enable debug logs with an environment flag and observe detailed execution traces to troubleshoot AppleScript execution and MCP interactions.
If you want to see runtime behavior in real time, you can run the MCP Inspector to interact with the server through a web interface.
// Create a Pages document with plain text
create_document: { content: "Project Proposal\n\nThis document outlines the scope and timeline for the upcoming project." }Some features may require macOS permissions, such as Automation access, Full Disk Access, or Notification permissions. Ensure you grant the necessary permissions in System Settings so scripts can interact with applications and files.
Create a calendar event with a title and start/end times; optional calendar name.
List today's calendar events.
Copy content to the system clipboard.
Retrieve the current clipboard contents.
Clear the clipboard contents.
Return files currently selected in Finder.
Search for files by query and optional location.
Preview a file at a given path.
Show a system notification with a title and message, optional sound.
Toggle Do Not Disturb mode.
Set the system volume to a percentage value.
Return the currently active application.
Open a named application.
Close an application, optionally forcing it.
Toggle the macOS dark mode setting.
Paste clipboard contents into iTerm.
Execute a command in iTerm, with optional new window.
Run a macOS Shortcut by name with optional input.
List available shortcuts, with optional limit.
Compose a new email in the Mail app with recipient, subject, and body.
List emails from a mailbox with optional filters.
Retrieve a specific email by search criteria.
List available iMessage/SMS chats with optional participant details.
Get messages from Messages app with optional limit.
Search messages by text, sender, chat, or timeframe.
Open Messages with a pre-filled message or send it automatically.
Create a markdown-formatted note in Notes.
Create a note with raw HTML content in Notes.
List notes or notes within a specified folder.
Retrieve a note by title, optionally from a folder.
Search notes by query within an optional folder and limit.
Create a new Pages document from plain text content.