Skip to main content
Glama
lswith

imap-mcp-server

by lswith

imap-mcp

Quelloffen, kein Produkt. Dies ist ein generischer IMAP → MCP-Server, der auf Cloudflare Workers läuft. Er ist unter MIT veröffentlicht, damit der Code gelesen, kopiert und daraus gelernt werden kann – aber er ist für genau ein Postfach gebaut und wird dagegen betrieben: ein persönliches iCloud-Konto. Es gibt keine Support-Zusage: Issues werden nicht bearbeitet, Pull Requests sind nicht erwünscht, es gibt keine Releases, und nichts hier ist für die Nutzung durch andere versioniert. Wenn es für dich nützlich ist, forke es.

Es ist eher aus Design als aus Ehrgeiz generisch – Host, Port und Anmeldedaten sind Konfiguration, keine Konstanten –, sodass es gegen jeden IMAP-Server funktionieren sollte. Tatsächlich getestet wird nur iCloud.

Status: Gerüst. Noch ist nichts Funktionales implementiert. Beide Worker sind Platzhalter, die installieren, linten, typchecken, testen und einen Deploy-Dry-Run bestehen. Siehe Roadmap.

Was es tut

Indiziert ein Postfach in den Speicher von Cloudflare und stellt es dann einem MCP-Client als Such- und Abrufwerkzeuge bereit – sodass ein Modell Fragen zu fünfzehn Jahren E-Mail beantworten kann, ohne dass das Postfach selbst bei jeder Abfrage im Spiel ist.

   ┌────────────────────┐  IMAP over TLS   ┌──────────────┐
   │  imap-mcp-sync     │ ───────────────▶ │   mailbox    │
   │  packages/sync     │ ◀─────────────── │   (iCloud)   │
   │  cron, owns creds  │                  └──────────────┘
   └─────────┬──────────┘
             │ writes                    ▲ writes proxied over
             ▼                           │ a service binding
   ┌────────────────────┐                │
   │  D1 (+FTS5) and R2 │                │
   └─────────┬──────────┘                │
             │ reads                     │
             ▼                           │
   ┌────────────────────┐────────────────┘   ┌──────────────┐
   │  imap-mcp-server   │  Streamable HTTP   │  MCP client  │
   │  packages/mcp      │ ◀───────────────── │  behind CF   │
   │  stateless, no creds                    │  Access      │
   └────────────────────┘                    └──────────────┘

Zwei Worker, und die Trennung zwischen ihnen ist eher das Sicherheitsdesign als eine Verpackungsentscheidung:

  • packages/sync (imap-mcp-sync) ist der einzige Teil des Systems, der IMAP spricht. Es hält das app-spezifische Passwort – das bei iCloud vollen Postfachzugriff einschließlich SMTP-Senden gewährt –, sodass diese Anmeldedaten an genau einer Stelle existieren.

  • packages/mcp (imap-mcp-server) ist ein zustandsloser Leser. Er fragt den Index ab, niemals das Postfach, und leitet die wenigen Schreiboperationen über ein Service-Binding an den Sync-Worker zurück, anstatt eine eigene Verbindung zu öffnen.

Related MCP server: stalwart-mail-mcp

Schnellstart

pnpm install         # installs both packages
pnpm run lint        # biome check (lint + format)
pnpm run typecheck   # wrangler types + tsc --noEmit
pnpm run test        # vitest, inside workerd
pnpm run dead-code   # knip
pnpm run build       # wrangler deploy --dry-run, both workers

Pro Paket, aus packages/sync oder packages/mcp: pnpm run dev, pnpm run test:watch, pnpm run deploy.

Konfiguration

Dieses Repository ist öffentlich, daher werden keine deploymentspezifischen Werte eingecheckt – keine Cloudflare-Konto-ID, kein Zonen-Tag, keine Cloudflare-Access-Teamdomain oder Anwendungs-Audience (AUD), keine Postfachadresse. Keine der wrangler.jsonc-Dateien enthält eine account_id, und der MCP-Worker deklariert überhaupt keine Route.

Alles, was du angeben musst, ist in .env.example benannt und erklärt. Kopiere es in .env und fülle es aus. Kurz:

Was

Wohin

CLOUDFLARE_ACCOUNT_ID

deine Umgebung; wrangler liest es direkt

Route / Zone für den MCP-Worker

einen routes-Eintrag, den du zu packages/mcp/wrangler.jsonc hinzufügst

ACCESS_TEAM_DOMAIN, ACCESS_AUD

vars in packages/mcp/wrangler.jsonc

IMAP_HOST, IMAP_PORT, IMAP_USER

vars in packages/sync/wrangler.jsonc

IMAP_PASSWORD

wrangler secret put, nur Sync-Worker – niemals ein vars-Eintrag

Lokal kommen Geheimnisse in eine gitignorierte .dev.vars pro Paket; jedes hat eine .dev.vars.example zum Kopieren.

Beide Worker sind standardmäßig nicht erreichbar

workers_dev und preview_urls sind in beiden wrangler.jsonc-Dateien auf false gesetzt, und der MCP-Worker deklariert keine Route. Ein frischer Deploy ist daher aus dem Internet nicht erreichbar. Das ist beabsichtigt: Ohne Ordnerbegrenzung ist der MCP-Endpunkt funktional ein Lesezugriff auf ein ganzes Postfach, daher darf er nicht erreichbar werden, bevor Cloudflare Access davor steht. Ohne workers_dev: false ist ein Worker unter <name>.<account>.workers.dev live, egal welche Routen oder Access-Richtlinien existieren.

Ein vollständiger Deploy-von-Grund-auf-Leitfaden – Geheimnisse, Access-Einrichtung, Bindings, Migrationen und das Backfill – ist noch nicht geschrieben; er kommt mit dem Rest des Systems.

Roadmap

Verfolgt als Issues in diesem Repo:

#2

Repo-Gerüst – dieses

#3

Den IMAP-Client hinter einer internen Schnittstelle einbinden

#4

D1-Schema und Migrationen

#5

Tracer: einen Ordner in D1 synchronisieren

#6

Queue-Fan-out für den Sync-Pfad

#7

MCP-Server und search_messages

#8

Inkrementelle Synchronisierung: Wasserzeichen und UIDVALIDITY

#9

Anhänge nach R2, mit Textextraktion

#10

Den MCP-Endpunkt mit Access Managed OAuth absichern

#11

get_message und get_thread

#12

Schreibwerkzeuge über ein Service-Binding, mit einem Audit-Log

#13

Vollständiges Backfill und Einrichtungsleitfaden

Ein Spike hat die eine Frage geklärt, von der die gesamte Architektur abhing – kann ein Cloudflare Worker überhaupt IMAP mit iCloud sprechen? Ja: TLS und LOGIN auf Port 993 in 755 ms, Ordner aufgelistet, Nachrichten abgerufen und MIME-dekodiert, ein Entwurf angehängt und markiert. Der Sync-Pfad ist also ein Worker, und nichts wandert in einen Container. Die Erkenntnisse, die das Design einschränken – CONDSTORE-Reihenfolge, kein MOVE bei iCloud, SEARCH für Inhalte unbrauchbar – sind in die Tickets geschrieben, die sie betreffen.

Lizenz

MIT – siehe LICENSE.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects multiple IMAP and SMTP mailboxes to MCP clients like ChatGPT without exposing credentials, enabling email search and thread retrieval via natural language.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Connects AI agents to self-hosted Stalwart mail servers via a Cloudflare Worker and JMAP, enabling mailbox search, reading, listing, and two-step draft-and-send email operations through MCP.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables interaction with Gmail through MCP, supporting search, read, send, reply, forward, draft management, labels, and multiple accounts, deployed on Cloudflare Workers.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables connecting Gmail to MCP clients, allowing search, read, send, reply-all, forward, attachments, drafts, labels, and thread management across multiple Google accounts at once via a self-hosted Cloudflare Worker.
    MIT

View all related MCP servers

Related MCP Connectors

  • Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.

  • Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.

  • Cloudflare Workers MCP server: email-validator

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lswith/imap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server