Skip to main content
Glama
mcp-for-apple-mail

mcp-for-apple-mail

by shaack

mcp-for-apple-mail

Ein kleiner MCP-Server (Model Context Protocol), der Apple Mail auf dem Mac per AppleScript kapselt. Er hilft, Rechnungs-PDFs aus dem Posteingang zu finden und gezielt abzulegen, ohne Zugangsdaten zu hinterlegen: Apple Mail hat eine vollständige AppleScript-Schnittstelle und die Konten sind bereits eingerichtet.

Was ist ein MCP-Server?

MCP (Model Context Protocol) ist ein offener Standard, über den KI-Anwendungen (der Host, etwa Claude Desktop oder Claude Code) mit externen Werkzeugen und Daten sprechen. Ein Server stellt Fähigkeiten bereit und weiß selbst nichts von KI. Drei Arten:

  • Tools — Aktionen, die das Modell aufrufen kann (hier: suchen, speichern).

  • Resources — Daten zum Lesen (hier nicht genutzt).

  • Prompts — Vorlagen (hier nicht genutzt).

Kommunikation läuft über JSON-RPC 2.0, hier per stdio (lokaler Prozess).

Related MCP server: apple-mail-mcp

Tools

Tool

Zweck

list_mailboxes

Alle Konten und Mailboxen als <Konto>:<Mailbox> auflisten

search_messages

Nach Absender-Stichworten und/oder nur geflaggten Nachrichten im Zeitfenster suchen, mit Anhangnamen und Flaggen-Markierung (⚑)

save_attachment

Ersten passenden PDF-Anhang (Name enthält Schlüssel, endet auf .pdf) speichern

get_message_body

Klartext-Inhalt der ersten passenden Nachricht lesen (für Belege ohne PDF)

flag_message

Fahne an genau einer Nachricht setzen/entfernen, optional mit Farbe; bei mehrdeutigem Schlüssel passiert nichts

Installation

npm install

Kein Build-Schritt: reines ESM-JavaScript, läuft direkt mit Node (>= 18).

Konfiguration

Die zu durchsuchenden Mailboxen stehen in einer lokalen config.json, die nicht eingecheckt wird (in .gitignore). Vorlage kopieren und die eigenen Konten eintragen:

cp config.example.json config.json

Format je Eintrag <Konto>:<Mailbox>. Die exakten Namen liefert das Tool list_mailboxes. Fehlt die config.json, greifen generische Platzhalter.

Alternativ übergibt der Aufrufer die Mailboxen je Tool direkt im mailboxes-Parameter.

Lokal testen

Mit dem MCP Inspector zum Durchklicken der Tools:

npm run inspect

Oder direkt starten (wartet dann auf JSON-RPC über stdin):

npm start

Beim ersten echten Lauf fragt macOS nach Automatisierungs-Zugriff auf Mail. Einmal erlauben.

In Claude Code registrieren

claude mcp add apple-mail -- node /absolute/path/to/mcp-for-apple-mail/src/index.js

In Claude Desktop registrieren

In ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "apple-mail": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-for-apple-mail/src/index.js"]
    }
  }
}

Beispielablauf

  1. list_mailboxes, um die exakten Konto- und Mailboxnamen zu sehen.

  2. search_messages mit vendors: ["hosting", "software-vendor"] und fromDate: "2026-04-01", um zu sehen, welche Rechnungen als PDF vorliegen (Treffer zeigen die Anhangnamen in ATT{...}).

  3. Pro Treffer save_attachment mit subjKey, attKey und destPath, z. B. nach dem Schema YYYY-MM/YYYY-MM-DD <Anbieter> <Beleg>.pdf.

Grenzen

  • Nur macOS mit Apple Mail.

  • Anbieter mit reinem Portal liefern per Mail kein PDF und müssen weiter manuell geladen werden.

  • Steht die Rechnungsnummer nur im Anhang, nicht im Betreff, erst mit search_messages prüfen, wo der Schlüssel steht.

Lizenz

MIT

Available Tools

5 tools
flag_messageNachricht flaggenA

Setzt oder entfernt die Fahne an GENAU EINER Nachricht, optional mit Farbe (flagIndex 0-6: rot, orange, gelb, grün, blau, lila, grau). Passt der Schlüssel auf mehrere Nachrichten, wird nichts geändert und die Mehrdeutigkeit gemeldet (Schlüssel verengen). Praktisch, um eine verarbeitete Rechnung zu markieren. Mindestens subjKey oder senderKey angeben. Verändert die Nachricht.

Inputs: flagged, subjKey, flagIndex, mailboxes, +1 more.

get_message_bodyMailtext lesenA

Liefert den Klartext-Inhalt der ersten passenden Nachricht samt Kopf (From, Subject, Date). Für Belege, die nur im Mailtext stehen und kein PDF anhängen. Mindestens subjKey oder senderKey angeben.

Inputs: subjKey, maxChars, mailboxes, senderKey.

list_mailboxesMailboxen auflistenA

Listet alle Apple-Mail-Konten und Mailboxen als ":"-Zeilen. Damit findet man die exakten Namen für den mailboxes-Parameter der anderen Tools.

Inputs: no named parameters.

save_attachmentAnhang speichernA

Speichert den ersten passenden PDF-Anhang einer über den Betreff gefundenen Nachricht. Ein Anhang passt nur, wenn sein Name attKey enthält und auf .pdf endet (sortiert AGB, Werbe-PDFs, XML und Bilder aus). Der Zielordner wird angelegt.

Inputs: attKey (required), subjKey (required), destPath (required), mailboxes.

search_messagesNachrichten suchenA

Sucht Nachrichten in einem Zeitfenster und listet Treffer samt Anhangnamen (ATT{...}) und Flaggen-Markierung (⚑). So sieht man sofort, was als PDF vorliegt. Filtert nach Absender-Stichworten und/oder nur geflaggten Nachrichten; ohne einen der beiden Filter käme alles zurück. Dedupliziert über die message id.

Inputs: fromDate (required), days, vendors, mailboxes, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 5 tools

    Disambiguation4/5

    Most tools are clearly distinct in purpose: save_attachment extracts files, get_message_body reads text, flag_message toggles flags, list_mailboxes enumerates folders, search_messages queries. The main potential confusion is between get_message_body and save_attachment since both target 'the first matching message' and both depend on subjKey/senderKey, but their outputs differ enough that overlap is limited.

    Naming Consistency3/5

    All names follow a verb_noun snake_case convention (save_attachment, get_message_body, flag_message, list_mailboxes, search_messages), which is fairly consistent. The verbs vary in tone (save, get, flag, list, search) without a strong single pattern, but overall the naming is readable and predictable.

    Tool Count4/5

    Five tools is on the smaller side but appropriate for a narrowly-scoped mail-processing server aimed at handling invoices/attachments. Each tool serves a distinct, useful purpose and the count feels justified for the stated domain rather than overly thin.

    Completeness3/5

    The tools cover the core workflow of finding messages, reading bodies, extracting attachments, and flagging, which is reasonable. However, there are notable gaps: no way to move messages between mailboxes, delete messages, search by content within attachments beyond the first PDF, or handle multiple-attachment messages. The set is oriented around a narrow 'process invoices/receipts' workflow rather than general mail management.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP server that gives Claude and other MCP hosts full access to Mail.app on macOS — search, read, send, reply, flag, move, and more across all accounts configured in Mail.app.
      24
      70 npm
      1
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      This MCP server allows AI assistants to read, send, search, and manage emails in Apple Mail on macOS. It uses AppleScript to interact with the Mail app locally.
      53
      3,339 npm
      111
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server that gives AI assistants comprehensive access to Apple Mail accounts, enabling email discovery, reading, flag management, and server-side message retrieval.
      MIT