Files
mac_mcp/README.md
T
2026-06-03 14:40:49 -04:00

4.2 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 notes; returns titles and metadata unless previews are explicitly requested
notes_read Read a note by the ID returned by notes_list
notes_create Create a plaintext-backed note
calendar_list_calendars List calendar indexes, names, and write capability
calendar_list_events List events in an ISO-8601 time window from the focused Home calendar
calendar_create_event Create an event in the focused Home calendar
reminders_list_lists List reminder lists
reminders_list List reminders
reminders_create Create a reminder
contacts_search Search contact names and organizations without disclosing contact methods
contacts_read Read phone and email details for one selected contact
contacts_create Create a contact with optional email and phone details
deco_get_config_status Show Deco connection config without revealing the password
deco_get_overview Read TP-Link Deco overview stats and firmware
deco_list_clients List online Deco clients and current traffic speeds
deco_get_ipv4_status Read WAN/LAN IPv4 status
deco_get_firmware Read Deco model and firmware version

There are no destructive tools in the initial server.

Calendar names can repeat across accounts. This server is focused on the event-rich Home calendar discovered during setup (calendarIndex: 2) and verifies the selected index is still named Home before operating on it. Calendar selector parameters remain available as advanced overrides.

Setup

Requires macOS and Node.js 20 or newer.

npm install
npm run python:install
npm run check
npm run service:install

The service defaults to a same-Mac endpoint:

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 trusted local-network harness such as a Raspberry Pi, set MACMINI_MCP_HOST in .env to the Mac's LAN IP and set a strong MACMINI_MCP_TOKEN. Then configure the remote MCP client with:

URL: http://<mac-lan-ip>:7331/mcp
Authorization: Bearer <MACMINI_MCP_TOKEN>

Restart after changing .env:

npm run service:restart

For TP-Link Deco tools, install Python dependencies with npm run python:install, then set DECO_HOST, DECO_USERNAME, DECO_PASSWORD, and optionally DECO_VERIFY_SSL=false in .env.

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, Reminders, or Contacts 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. When configured to bind to a LAN address, it refuses to start without MACMINI_MCP_TOKEN; clients must send Authorization: Bearer <token>. This is HTTP bearer authentication on your local network, not encrypted transport. Use it only on a trusted LAN or put it behind a private encrypted network such as a VPN.

Development

npm run check
npm run dev

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