电子邮件客户端 MCP
多账户电子邮件 MCP 服务器, 有可靠的 IMAP 到 mailbox 同步为 Drive 备份 messagesStore (单位:千美元)@diskd-ai/sdk) (中文(简体) ). 读取工具点击 IMAP 直播; 监视器在间隔( QQ 60s) 时将每个配置的账户映射到工作空间商店中.
地址: end:comm/email-client-mcp。 。 。 .
安装
npx -y @diskd-ai/email-client-mcp stdio
服务器在stdio上讲模型背景协议. JSON-RPC在stdout;日志为stderr.
工具
从 IMAP 中获取全部读取工具( HODY. PEEK, 从未默默翻转) \Seen:
list_accounts-- 列出已配置的账户( 只配置; 没有 IMAP) .list_mailbox_folder-- 账户文件夹, 有可选的未读数和特殊用途旗帜 .find_mailbox_folder-- 解析包含给定信件的正则文件夹- ID( 以前使用)move_emailgmail 虚拟设备).list_emails-- 标有过滤器的元数据列表(未读取、标出、调取/调取/标的自此).get_email-- UID 的单条消息. 格式 :raw, (中文(简体) ),text(HTML剥去),stripped(也减少引用的答复+签名).markRead=true选入.get_emails- 散装变型get_email(最多20个).move_email-- IMAP 在文件夹之间移动 。 拒绝虚拟信箱(如:.[Gmail]/All Mail) (中文(简体) ).set_email_attributes--set read/unread and slang/unflag state for IMAP messages,再补齐 Drive 镜像.bulk_action- 说吧mark_read | mark_unread | flag | unflag | move | delete超过100UID.get_watcher_status同步监视器的内幕快照.
监视器可靠性
监视器将 IMAP 同步到工作空间 messagesStore 在每一个滴答。 变量 :
lastSyncedUid预付款 仅限 在成功之后upsertBatch。 。 。 .externalId = "${UIDVALIDITY}:${UID}"因此,一个UIDVALIDITY翻滚 从来没有与前一代相撞.- 文件夹上的UIDVALIDITIY不匹配触发了干净的滴出+再同步.
- 每个账户的飞行锁:一个相重叠的勾选被跳过,从未排队.
- 文件夹元数据是持久的检查点——从那里重新开始恢复,从不从记忆状态恢复.
- 在 IMAP 中被删除的文件夹会在一勾选尾端从 Drive 中刷出 .
- 滑动- 窗口旗调和
flag_reconcile_window每勾选一个UID. - 在 IMAP 中移动或消失的驱动信件 .
滴答间隔被夹到 QQ 60s .
配置
默认路径 : ~/.config/email-client-mcp/config.toml (通过 EMAIL_CLIENT_MCP_CONFIG) (中文(简体) ). 当由mcp-hub部署时,文件由 diskd-ai/email-client-mcp 保险库装配器.
[sdk]
api_key = "..."
base_url = "https://apis.example/"
# workspace_id falls back to MCP_HUB_WORKSPACE_ID env when omitted.
[watcher]
enabled = true
interval_ms = 60000
flag_reconcile_window = 500
# folders = ["INBOX", "Sent"] # optional allowlist; empty = all
[[accounts]]
name = "work"
email = "[email protected]"
full_name = "You"
password = "..."
[accounts.imap]
host = "imap.example.com"
port = 993
tls = true
verify_ssl = false
Gmail OAuth 账户替换 password 字段为 [accounts.oauth2] 块 :
[[accounts]]
name = "gmail-work"
email = "[email protected]"
full_name = "You"
[accounts.oauth2]
provider = "google"
client_id = "..."
client_secret = "..."
refresh_token = "..."
[accounts.imap]
host = "imap.gmail.com"
port = 993
tls = true
verify_ssl = false
发展
bun install
bun run typecheck
bun run lint
bun run test # vitest unit tests
bun run build # tsc -> dist/
bun run start # node dist/server.js stdio (needs config TOML)
bun run dev # tsx src/server.ts stdio (live reload)
# stdio smoke test (initialize + tools/list + tool calls):
node scripts/smoke.mjs
释放
自动打印通过 .github/workflows/release.yml数字 :
- 标记驱动 (首选):
npm version patch && git push --follow-tags从主v*.*.*标记触发了输入检查、提示、测试、构建和npm publish对. - 一击: 在 GitHub 动作 UI 中运行 释放 工作流程与
bump = patch | minor | major工作颠倒package.json、承诺、标签、推动和出版 -- -- 都是一份工作.
两个路径运行 bun install --frozen-lockfile, (中文(简体) ), bun run typecheck, (中文(简体) ), bun run lint, (中文(简体) ), bun run test,以及 bun run build 在发布前,启用出处证明.
需要重传密钥 :
| 秘诀 | 目的 |
|---|---|
NPM_TOKEN | npmjs.com 颗粒符号,范围 @diskd-ai/*, (中文(简体) ), 副通道 2FA 启用 . |
许可证
LGPL-3.0-或-后传. 见 LICENSE。 。 。 .