Skip to main content
Glama
lswith

imap-mcp-server

by lswith

imap-mcp

소스 공개, 제품 아님. 이것은 Cloudflare Workers에서 실행되는 일반적인 IMAP → MCP 서버입니다. 코드를 읽고, 복사하고, 배울 수 있도록 MIT로 공개되었지만 — 정확히 하나의 사서함, 즉 개인 iCloud 계정을 위해 만들어졌고 그에 맞춰 실행됩니다. 지원 약속은 없습니다: 이슈는 분류되지 않으며, 풀 리퀘스트는 요청되지 않고, 릴리스도 없으며, 여기의 어떤 것도 다른 사람의 사용을 위해 버전 관리되지 않습니다. 유용하다면 포크하세요.

야심보다는 설계상 일반적입니다 — 호스트, 포트, 자격 증명은 상수가 아닌 구성이므로 — 모든 IMAP 서버에서 작동해야 합니다. 실제로 테스트된 것은 iCloud뿐입니다.

상태: 스캐폴드. 아직 기능적인 것은 구현되지 않았습니다. 두 워커 모두 설치, 린트, 타입체크, 테스트, 배포 드라이런을 통과하는 자리 표시자입니다. 로드맵을 참조하세요.

하는 일

사서함을 Cloudflare의 스토리지에 인덱싱한 다음, MCP 클라이언트에 검색 및 검색 도구로 제공합니다 — 그래서 모델은 매 쿼리마다 사서함 자체를 거치지 않고 15년치 메일에 대해 질문에 답할 수 있습니다.

   ┌────────────────────┐  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      │
   └────────────────────┘                    └──────────────┘

두 개의 워커, 그리고 그 사이의 분할은 패키징 선택이 아니라 보안 설계입니다:

  • packages/sync (imap-mcp-sync)는 IMAP을 사용하는 시스템의 유일한 부분입니다. 앱 전용 비밀번호를 보유합니다 — iCloud에서 이 비밀번호는 SMTP 전송을 포함한 전체 사서함 접근 권한을 부여하므로 — 그 자격 증명은 정확히 한 곳에 존재합니다.

  • packages/mcp (imap-mcp-server)는 상태 없는 읽기 전용입니다. 인덱스를 쿼리하며 사서함에는 절대 접근하지 않고, 몇 가지 쓰기 작업을 서비스 바인딩을 통해 동기화 워커로 프록시합니다. 자체 연결을 열지 않습니다.

Related MCP server: gmail-mcp

빠른 시작

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

패키지별로, packages/sync 또는 packages/mcp에서: pnpm run dev, pnpm run test:watch, pnpm run deploy.

구성

이 저장소는 공개되어 있으므로 배포별 값은 커밋되지 않습니다 — Cloudflare 계정 ID, 영역 태그, Cloudflare Access 팀 도메인 또는 애플리케이션 대상(AUD), 사서함 주소가 없습니다. 두 wrangler.jsonc 모두 account_id를 포함하지 않으며, MCP 워커는 라우트를 전혀 선언하지 않습니다.

제공해야 할 모든 것은 .env.example에 이름과 설명이 있습니다. .env로 복사하고 채우세요. 요약하면:

무엇

어디로 가는지

CLOUDFLARE_ACCOUNT_ID

환경; wrangler가 직접 읽습니다

MCP 워커의 라우트 / 영역

packages/mcp/wrangler.jsonc에 추가하는 routes 항목

ACCESS_TEAM_DOMAIN, ACCESS_AUD

packages/mcp/wrangler.jsonc의 vars

IMAP_HOST, IMAP_PORT, IMAP_USER

packages/sync/wrangler.jsonc의 vars

IMAP_PASSWORD

wrangler secret put, 동기화 워커 전용 — 절대 vars 항목 아님

로컬에서는 비밀번호가 패키지별 gitignored .dev.vars에 들어갑니다; 각각 복사할 .dev.vars.example이 있습니다.

두 워커 모두 기본적으로 도달 불가

workers_dev와 preview_urls는 두 wrangler.jsonc 파일 모두에서 false이며, MCP 워커는 라우트를 선언하지 않습니다. 따라서 새 배포는 인터넷에서 도달할 수 없습니다. 이것은 의도적입니다: 폴더 경계가 없으므로 MCP 엔드포인트는 기능적으로 전체 사서함에 대한 읽기 접근이므로, Cloudflare Access가 앞에 있기 전에는 도달 가능해져서는 안 됩니다. workers_dev: false가 없으면 워커는 라우트나 Access 정책이 무엇이든 <name>.<account>.workers.dev에서 활성화됩니다.

처음부터 배포하는 전체 가이드 — 비밀번호, Access 설정, 바인딩, 마이그레이션, 백필 — 는 아직 작성되지 않았습니다; 시스템의 나머지와 함께 제공됩니다.

로드맵

이 저장소의 이슈로 추적됩니다:

#2

저장소 스캐폴드 — 이것

#3

내부 인터페이스 뒤에 IMAP 클라이언트 벤더링

#4

D1 스키마 및 마이그레이션

#5

트레이서: 하나의 폴더를 D1로 동기화

#6

동기화 경로를 위한 큐 팬아웃

#7

MCP 서버 및 search_messages

#8

증분 동기화: 워터마크 및 UIDVALIDITY

#9

텍스트 추출과 함께 R2로 첨부 파일

#10

Access Managed OAuth로 MCP 엔드포인트 게이트

#11

get_message 및 get_thread

#12

감사 로그와 함께 서비스 바인딩을 통한 쓰기 도구

#13

전체 백필 및 설정 가이드

스파이크는 전체 아키텍처가 의존했던 유일한 질문을 해결했습니다 — Cloudflare Worker가 iCloud에 IMAP을 말할 수 있는가? 가능합니다: 포트 993에서 TLS 및 LOGIN이 755ms, 폴더 나열, 메시지 가져오기 및 MIME 디코딩, 초안 추가 및 플래그 지정. 따라서 동기화 경로는 Worker이고 컨테이너로 이동하는 것은 없습니다. 설계를 제약하는 발견 사항 — CONDSTORE 순서, iCloud에 MOVE 없음, 콘텐츠에 SEARCH 사용 불가 — 은 영향을 받는 티켓에 기록되어 있습니다.

라이선스

MIT — LICENSE 참조.

Related MCP Connectors

Related MCP Servers

  • 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.
    129 npm
    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
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables searching, reading full conversations, and sending email across multiple IMAP/SMTP mailboxes from any MCP client, with multi-user support and per-user API tokens.
    MIT