Files
mac_mcp/README.md
T
2026-05-26 21:54:57 -04:00

2.6 KiB

MacMini MCP

A local Model Context Protocol server that exposes selected macOS app actions to an AI harness. It uses Apple's scripting interfaces through /usr/bin/osascript and stays on the local machine.

Available tools

Tool Action
notes_list Search note titles and plaintext previews
notes_read Read a note by the ID returned by notes_list
notes_create Create a plaintext-backed note
calendar_list_calendars List calendars and write capability
calendar_list_events List events in an ISO-8601 time window
calendar_create_event Create an event on a named writable calendar
reminders_list_lists List reminder lists
reminders_list List reminders
reminders_create Create a reminder

There are no destructive tools in the initial server.

Setup

Requires macOS and Node.js 20 or newer.

npm install
npm run check
npm run service:install

The service endpoint is:

http://127.0.0.1:7331/mcp

Health check:

curl -s http://127.0.0.1:7331/health

launchd runs node --watch src/http.js, so edits to the server or imported modules cause it to restart automatically while the agent remains installed. After changing installed dependencies or service configuration, run:

npm install
npm run service:install

Operational commands:

npm run service:status
npm run service:restart
npm run service:uninstall

Service logs are stored in .logs/.

Harness configuration

For a harness that supports Streamable HTTP, configure the local MCP URL as http://127.0.0.1:7331/mcp.

For a harness that launches stdio servers, use:

{
  "mcpServers": {
    "macmini": {
      "command": "/Users/adolforeyna/.nvm/versions/node/v22.22.0/bin/node",
      "args": ["/Users/adolforeyna/Projects/MacMiniMCP/src/stdio.js"]
    }
  }
}

Permissions and security

On first use of a Notes, Calendar, or Reminders tool, macOS may ask for Automation access for Node. Permit only the applications you want the server to control under System Settings > Privacy & Security > Automation.

The HTTP service binds to 127.0.0.1 by default. To require bearer authentication even locally, create .env from .env.example and set MACMINI_MCP_TOKEN; clients must then send Authorization: Bearer <token>. Do not bind to a non-loopback address without enabling authentication and reviewing the tools first.

Development

npm run check
npm run dev

The MCP transport follows the official TypeScript SDK Streamable HTTP server approach: Model Context Protocol TypeScript SDK.