MCP Hub
Back to servers

contactsmcp

MCP server for macOS Contacts.app — contact management via AppleScript

Registrynpm163/wk
Updated
Apr 5, 2026

Quick Install

npx -y @aernoud/contactsmcp

macos-mcp

MCP servers for macOS native apps — gives Claude Code, Claude Desktop, and any MCP client native access to Mail, Numbers, and Contacts.

No API keys, no OAuth, no cloud services. Talks directly to macOS apps via AppleScript. Runs locally on your Mac.

Servers

Mail (mailappmcp) — 21 tools

Works with every email account configured in Mail.app — iCloud, Gmail, Outlook, Fastmail, you name it.

ToolDescription
list-mailboxesList all mailboxes across all accounts with unread counts
list-accountsList configured mail accounts with email addresses and type
list-signaturesList available email signatures
search-messagesSearch messages by subject or sender (empty query lists all)
read-messageRead the full content of a specific email
get-message-sourceGet raw RFC822 source of a message
list-attachmentsList attachments on a message with name, MIME type, size
save-attachmentSave email attachments to disk
compose-messageCreate a draft in Mail.app (does not send)
send-messageSend an email immediately (supports from and attachments)
reply-to-messageReply or reply-all to a message
forward-messageForward a message to new recipients
redirect-messageRedirect a message (preserves original sender)
move-messagesMove messages between mailboxes
delete-messagesDelete messages by Message-ID
mark-as-readMark messages as read
mark-as-junkMark/unmark messages as junk
flag-messageFlag/unflag messages with color support
set-message-colorSet background color of messages in the message list
check-for-new-mailTrigger a mail fetch for one or all accounts
extract-email-addressParse "John Doe <jdoe@example.com>" into name and address

Numbers (numbersmcp) — 29 tools

Works with any open Numbers spreadsheet.

ToolDescription
list-spreadsheetsList all open Numbers documents
create-documentCreate a new Numbers document
list-sheetsList sheets and tables in a document
get-active-sheetGet the currently active sheet
read-rangeRead cell values from a range (e.g. "A1:C10")
read-tableRead an entire table as structured data
write-cellWrite a value to a specific cell
write-rangeWrite multiple values to a range
clear-rangeClear contents and formatting of a cell range
get-formulaGet the formula from a cell
set-formulaSet a formula on a cell
add-rowAppend a row to a table
delete-rowDelete a row from a table
add-columnAdd a column to a table
delete-columnDelete a column from a table
resize-row-columnSet row height or column width
add-sheetAdd a new sheet to a document
delete-sheetDelete a sheet from a document
rename-sheetRename a sheet
add-tableAdd a new table to a sheet
delete-tableDelete a table from a sheet
rename-tableRename a table
sort-tableSort a table by a column
transpose-tableSwap rows and columns of a table
merge-cellsMerge a range of cells
unmerge-cellsUnmerge previously merged cells
set-cell-formatSet cell format (number, currency, date, percentage, etc.)
set-cell-styleSet font, color, background, bold, italic, alignment
export-documentExport to PDF, Excel, or CSV

Contacts (contactsmcp) — 15 tools

Works with the system address book — all accounts synced to Contacts.app.

ToolDescription
search-contactsSearch contacts by name, email, or phone
search-by-modification-dateFind contacts modified after a given date
read-contactGet full contact details
get-my-cardGet the user's own contact card
get-vcardExport a contact as vCard 3.0 text
create-contactCreate a new contact
update-contactUpdate contact fields
delete-contactDelete a contact
list-groupsList all contact groups
create-groupCreate a new contact group
rename-groupRename a contact group
delete-groupDelete a contact group
add-to-groupAdd a contact to a group
remove-from-groupRemove a contact from a group
list-group-membersList all contacts in a group

Requirements

  • macOS (uses AppleScript — won't work on Linux/Windows)
  • Node.js 18+

Install

From npm

npm install -g mailappmcp    # Mail server
npm install -g numbersmcp    # Numbers server
npm install -g contactsmcp   # Contacts server

From source

git clone https://github.com/aernouddekker/macos-mcp.git
cd macos-mcp
npm install
npm run build

Configure

Claude Code

Add to ~/.claude/settings.json or your project's .mcp.json:

{
  "mcpServers": {
    "mailappmcp": {
      "command": "npx",
      "args": ["-y", "mailappmcp"]
    },
    "numbersmcp": {
      "command": "npx",
      "args": ["-y", "numbersmcp"]
    },
    "contactsmcp": {
      "command": "npx",
      "args": ["-y", "contactsmcp"]
    }
  }
}

Claude Desktop / Cowork

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mailappmcp": {
      "command": "npx",
      "args": ["-y", "mailappmcp"]
    },
    "numbersmcp": {
      "command": "npx",
      "args": ["-y", "numbersmcp"]
    },
    "contactsmcp": {
      "command": "npx",
      "args": ["-y", "contactsmcp"]
    }
  }
}

How it works

Each server runs locally over stdio. Tools build AppleScript strings, execute them via osascript, and parse the structured output back into JSON for the MCP response. A shared package (@mailappmcp/shared) provides the AppleScript runner, string escaping, and delimiter-based parsing.

Safety

  • compose-message opens a visible draft — you review before sending
  • send-message is a separate, explicit action
  • reply-to-message and forward-message default to draft mode (sendImmediately: false)
  • delete-messages moves to Trash (standard Mail.app behavior)

Known limitations

  • content contains searches in AppleScript can be slow on large mailboxes — Mail server searches subject and sender by default
  • osascript has a 30-second timeout per call
  • Apps must be running (or will be auto-launched by AppleScript)
  • Numbers tools require an open document

License

MIT

Reviews

No reviews yet

Sign in to write a review