使用说明
电子邮件MCP服务器(折扣分叉)
叉子 代码未来主义者/电子邮件mcp 添加以下内容:
- Webhook有效载荷包括
uid,folder,hasAttachments--使消费者能够通过以下方式获取完整的电子邮件内容get_email收到警报后(上游PR#18)安装:
npx -y @diskd-ai/email-mcp stdio
MCP(模型上下文协议)服务器,通过IMAP和SMTP提供全面的电子邮件功能。
使AI助手能够跨多个帐户阅读、搜索、发送、管理、安排和分析电子邮件。通过支持OAuth2的MCP协议公开47个工具、7个提示和6个资源 (实验)、电子邮件调度、日历提取、分析、支持提供商的标签管理、具有人工智能分流功能的实时IMAP IDLE监视器、可定制的预设和静态规则,以及有指导的设置向导。
亮点
| 功能 | 电子邮件mcp | 典型的mcp电子邮件 |
|---|---|---|
| 多账户 | ✅ | ❌ |
| 发送/回复/转发 | ✅ | ✅ |
| 草稿和模板 | ✅ | ❌ |
| 标签和批量操作 | ✅ 提供者知道 | ❌ |
| 安排未来的电子邮件 | ✅ | ❌ |
| 实时IMAP空闲监视器 | ✅ | ❌ |
| 人工智能分类与预设 | ✅ | ❌ |
| 桌面和webhook警报 | ✅ | ❌ |
| 日历(ICS)提取 | ✅ | ❌ |
| 电子邮件分析 | ✅ | ❌ |
| OAuth2(Gmail/M365) | ✅ 实验性的 | ❌ |
| 引导安装向导 | ✅ 自动检测 | ❌ |
目录
安全
- 所有连接都使用TLS/STARTTLS加密
- 密码从不被记录;审计跟踪记录没有凭据的操作
- 令牌桶速率限制器防止滥用(每个帐户可配置)
- 用于Gmail和Microsoft 365的OAuth2 XOAUTH2身份验证 (实验)
- 附件下载上限为5MB,采用base64编码
背景
大多数MCP电子邮件实现只提供基本的读取/发送。该服务器旨在成为AI助手的全功能电子邮件客户端,涵盖整个生命周期:阅读、撰写、管理、调度和分析电子邮件——所有这些都来自一个MCP服务器。
关键设计决策:
- XDG兼容配置 --汤姆在
~/.config/email-mcp/config.toml - 多账户 --同时跨多个IMAP/SMTP帐户操作
- 分层服务 --业务逻辑与MCP布线解耦,以实现可测试性
- 提供商自动检测 --Gmail、Outlook、雅虎、iCloud、Fastmail、ProtonMail、Zoho、GMX
安装
需要Node.js≥22。
# Run directly (no install needed)
npx @diskd-ai/email-mcp setup
# or
pnpm dlx @diskd-ai/email-mcp setup
# Or install globally
npm install -g @diskd-ai/email-mcp
# or
pnpm add -g @diskd-ai/email-mcp
码头工人
不需要Node.js,只需要Docker。
# Latest stable release
docker pull ghcr.io/codefuturist/email-mcp:latest
# Pin to an exact version (immutable)
docker pull ghcr.io/codefuturist/email-mcp:0.2.3
# Auto-update patches within a minor version
docker pull ghcr.io/codefuturist/email-mcp:0.2
# Track a major version (won't cross breaking-change boundary)
docker pull ghcr.io/codefuturist/email-mcp:0
# Pin to an exact git commit (immutable, CI traceability)
docker pull ghcr.io/codefuturist/email-mcp:sha-abc1234
# Or build from source
docker build -t ghcr.io/codefuturist/email-mcp .
标签惯例: 标签跟随裸semver(没有
v前缀),符合Docker生态系统标准(例如。node:24,nginx:1.25).这latest标签仅在稳定版本上更新,从不在预版本上更新。
注: 服务器使用stdio传输。必须先在主机上创建配置 (通过
npx @diskd-ai/email-mcp setup或手动)并安装到容器中。
用法
设置
# Add an email account interactively (recommended)
email-mcp account add
# Or use the legacy alias
email-mcp setup
# Or create a template config manually
email-mcp config init
安装向导会自动检测服务器设置、测试连接、保存配置并输出MCP客户端配置代码段。
测试连接
email-mcp test # all accounts
email-mcp test personal # specific account
配置您的MCP客户端
建议使用指导安装程序 (自动检测克劳德桌面、VS代码、光标、Windsurf):
email-mcp install
或者使用下面的代码片段手动添加。
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
VS Code (GitHub Copilot)
选项1——扩展库(最简单):
- 打开“扩展”视图(⇧⌘X / Ctrl+Shift+X)
- 搜索
@mcp email-mcp - 点击 安装 (用户范围)或右键单击→ 在工作区中安装
选项2——工作区配置 (.vscode/mcp.json,致力于源代码控制):
{
"servers": {
"email": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
选项3--用户配置 (settings.json,适用于所有工作区):
打开命令选项板→ 首选项:打开用户设置(JSON) 并添加:
{
"mcp": {
"servers": {
"email": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
}
Cursor
编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
Windsurf
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
Zed
编辑 ~/.config/zed/settings.json:
{
"context_servers": {
"email": {
"command": {
"path": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"]
}
}
}
}
Mistral Vibe
添加 ~/.vibe/config.toml:
[[mcp_servers]]
name = "email-mcp"
transport = "stdio"
command = "npx"
args = ["-y", "@diskd-ai/email-mcp", "stdio"]
要直接传递凭据而不是使用配置文件,请使用 env 字段:
[[mcp_servers]]
name = "email-mcp"
transport = "stdio"
command = "npx"
args = ["-y", "@diskd-ai/email-mcp", "stdio"]
env = { "EMAIL_ACCOUNTS" = "<your-accounts-json>" }
MCP工具暴露为 email-mcp_<tool_name> (例如。 email-mcp_list_emails).编辑配置后重新启动Vibe。
Docker (any MCP client)
在容器中运行服务器——以只读方式挂载配置目录:
docker run --rm -i \
-v ~/.config/email-mcp:/home/node/.config/email-mcp:ro \
ghcr.io/codefuturist/email-mcp
对于MCP客户端配置(例如Claude Desktop):
{
"mcpServers": {
"email": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "~/.config/email-mcp:/home/node/.config/email-mcp:ro",
"ghcr.io/codefuturist/email-mcp"
]
}
}
}
Single-account via environment variables (no config file needed)
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "@diskd-ai/email-mcp", "stdio"],
"env": {
"MCP_EMAIL_ADDRESS": "you@gmail.com",
"MCP_EMAIL_PASSWORD": "your-app-password",
"MCP_EMAIL_IMAP_HOST": "imap.gmail.com",
"MCP_EMAIL_SMTP_HOST": "smtp.gmail.com"
}
}
}
}
CLI命令
email-mcp [command]
Commands:
stdio Run as MCP server over stdio (default)
account list List all configured accounts
account add Add a new email account interactively
account edit [name] Edit an existing account
account delete [name] Remove an account
setup Alias for 'account add'
test Test connections for all or a specific account
install Register email-mcp with MCP clients interactively
install status Show registration status for detected clients
install remove Unregister email-mcp from MCP clients
config show Show config (passwords masked)
config edit Edit global settings (rate limit, read-only)
config path Print config file path
config init Create template config
scheduler check Process pending scheduled emails
scheduler list Show all scheduled emails
scheduler install Install OS-level scheduler (launchd/crontab)
scheduler uninstall Remove OS-level scheduler
scheduler status Show scheduler installation status
help Show help
配置
位于 $XDG_CONFIG_HOME/email-mcp/config.toml (默认值: ~/.config/email-mcp/config.toml).
[settings]
rate_limit = 10 # max emails per minute per account
[[accounts]]
name = "personal"
email = "you@gmail.com"
full_name = "Your Name"
password = "your-app-password"
[accounts.imap]
host = "imap.gmail.com"
port = 993
tls = true
[accounts.smtp]
host = "smtp.gmail.com"
port = 465
tls = true
starttls = false
verify_ssl = true
[accounts.smtp.pool]
enabled = true
max_connections = 1
max_messages = 100
OAuth2 (实验)
注: OAuth2支持是实验性的。令牌刷新和特定于提供商的流可能需要在您的环境中进行额外的测试。
[[accounts]]
name = "work"
email = "you@company.com"
full_name = "Your Name"
[accounts.oauth2]
provider = "google" # or "microsoft"
client_id = "your-client-id"
client_secret = "your-client-secret"
refresh_token = "your-refresh-token"
[accounts.imap]
host = "imap.gmail.com"
port = 993
tls = true
[accounts.smtp]
host = "smtp.gmail.com"
port = 465
tls = true
[accounts.smtp.pool]
enabled = true
max_connections = 1
max_messages = 100
环境变量
对于单帐户设置(覆盖配置文件):
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_EMAIL_ADDRESS |
必需的 | 电子邮件地址 |
MCP_EMAIL_PASSWORD |
必需的 | 密码或应用程序密码 |
MCP_EMAIL_IMAP_HOST |
必需的 | IMAP服务器主机名 |
MCP_EMAIL_SMTP_HOST |
必需的 | SMTP服务器主机名 |
MCP_EMAIL_ACCOUNT_NAME |
default |
账户名称 |
MCP_EMAIL_FULL_NAME |
-- | 显示名称 |
MCP_EMAIL_USERNAME |
电子邮件 | 登录用户名 |
MCP_EMAIL_IMAP_PORT |
993 |
IMAP端口 |
MCP_EMAIL_IMAP_TLS |
true |
IMAP-TLS |
MCP_EMAIL_SMTP_PORT |
465 |
SMTP端口 |
MCP_EMAIL_SMTP_TLS |
true |
SMTP TLS |
MCP_EMAIL_SMTP_STARTTLS |
false |
SMTP启动 |
MCP_EMAIL_SMTP_VERIFY_SSL |
true |
验证SSL证书 |
MCP_EMAIL_SMTP_POOL_ENABLED |
true |
启用SMTP传输池 |
MCP_EMAIL_SMTP_POOL_MAX_CONNECTIONS |
1 |
最大共享SMTP连接数 |
MCP_EMAIL_SMTP_POOL_MAX_MESSAGES |
100 |
每个池连接的最大消息数 |
MCP_EMAIL_RATE_LIMIT |
10 |
每分钟最大发送次数 |
电子邮件日程安排
调度器通过分层架构实现了未来的电子邮件交付:
- MCP自动检查 --在服务器启动时以及MCP服务器运行时每60秒处理一次队列
- 命令行界面 —
email-mcp scheduler check用于手动或基于cron的处理 - 操作系统级守护进程 —
email-mcp scheduler install设置launchd(macOS)或crontab(Linux)每分钟运行一次,独立于MCP服务器
重要提示——必须安装守护进程才能可靠地传递。 没有它,只有当人工智能客户端处于活动连接状态时,定时电子邮件才会发出。 您的机器还需要在预定时间运行;如果它睡着了或者 关闭后,守护进程将在下次唤醒/启动时处理过期的电子邮件。发送失败 已重试至 3次 在被标记之前
failed.
设置守护进程
# Install (macOS launchd / Linux crontab — runs every minute)
email-mcp scheduler install
# Verify it's running
email-mcp scheduler status
# View pending / sent / failed scheduled emails
email-mcp scheduler list
# Trigger a manual check immediately
email-mcp scheduler check
# Remove the daemon
email-mcp scheduler uninstall
计划电子邮件以JSON文件存储在 ~/.local/state/email-mcp/scheduled/ 基于状态的锁定。每个条目跟踪尝试次数(最多3次)和最后一个错误,因此您可以使用 scheduler list.
实时观察者和AI挂钩
IMAP IDLE监视器使用持久IDLE连接(与工具连接分开)实时监视配置的邮箱。当新电子邮件到达时:
- 静态规则 --图案匹配从/到/主题→ 立即应用标签、标志或标记(无人工智能)
- 人工智能分诊 --剩余的电子邮件通过MCP采样进行分析,并带有可定制的预设提示
- 通知模式 --如果禁用AI分诊,则返回日志记录
在中配置 config.toml:
[settings.watcher]
enabled = true
folders = ["INBOX"]
idle_timeout = 1740 # 29 minutes (IMAP spec max is 30)
[settings.hooks]
on_new_email = "triage" # "triage" | "notify" | "none"
preset = "inbox-zero" # "inbox-zero" | "gtd" | "priority-focus" | "notification-only" | "custom"
auto_label = true # apply AI-suggested labels
auto_flag = true # flag urgent emails
batch_delay = 5 # seconds to batch before triage
# User context — appended to preset's AI prompt
custom_instructions = """
I'm a software engineer. Emails from @mycompany.com are always high priority.
Newsletters I read: TL;DR, Hacker Newsletter.
"""
# Static rules — run BEFORE AI, skip AI if matched
[[settings.hooks.rules]]
name = "GitHub Notifications"
match = { from = "*@github.com" }
actions = { labels = ["Dev"], mark_read = true }
[[settings.hooks.rules]]
name = "Newsletter Archive"
match = { from = "*@substack.com|*@buttondown.email" }
actions = { labels = ["Newsletter"] }
[[settings.hooks.rules]]
name = "VIP Contacts"
match = { from = "ceo@company.com|cto@company.com" }
actions = { flag = true, labels = ["VIP"] }
预设
| 预设 | 焦点 | 建议标签 |
|---|---|---|
inbox-zero |
激进的分类+归档 | 通讯、通知、更新、财务、社交、促销 |
gtd |
完成事情的上下文 | @行动,@等待,@参考,@有一天,@委托 |
priority-focus |
简单优先级分类(默认) | (无--只有优先级+标志) |
notification-only |
无需人工智能分类,只需记录 | (无) |
custom |
用户定义完整系统提示 | 用户定义 |
静态规则
静态规则使用glob样式模式(*@github.com)与 | 作为OR分隔符(*@github.com|*@gitlab.com).比赛中的所有条件均为AND。第一条比赛规则获胜。
可用操作: labels (字符串数组), flag (布尔值), mark_read (布尔值), alert (boolean--强制桌面通知)。
警报
基于紧急程度的多渠道通知路由——即使你不看聊天,也要注意重要的电子邮件。所有频道都是 选择加入 默认情况下禁用。
| 优先级 | 桌面 | 声音 | MCP日志级别 | Webhook |
|---|---|---|---|---|
urgent |
✅ 横幅 | 🔊 警报 | alert |
✅ |
high |
✅ 横幅 | 🔇 无声 | warning |
✅ |
normal |
❌ | ❌ | info |
❌ |
low |
❌ | ❌ | debug |
❌ |
[settings.hooks.alerts]
desktop = true # OS-level notifications (macOS/Linux/Windows)
sound = true # play sound for urgent emails
urgency_threshold = "high" # minimum priority to trigger desktop alert
webhook_url = "https://ntfy.sh/my-email-alerts" # optional: Slack, Discord, ntfy.sh, etc.
webhook_events = ["urgent", "high"]
支持的平台: macOS(通知中心通过 osascript),Linux(notify-send),Windows(PowerShell吐司)。零npm依赖——使用本机操作系统命令。
按平台设置通知:
macOS
桌面通知使用 osascript (内置)。运行MCP服务器的终端应用程序需要通知权限:
- 打开 系统设置→ 通知和焦点
- 查找您的终端应用程序(终端、iTerm2、VS代码、光标等)
- 启用 允许通知 并选择 横幅 或 警报
- 确保 聚焦 /请勿打扰未阻止通知
使用 check_notification_setup 诊断和 test_notification 以验证。
Linux
需要 notify-send 从 libnotify对于声音警报, paplay 还需要:
# Ubuntu / Debian
sudo apt install libnotify-bin pulseaudio-utils
# Fedora
sudo dnf install libnotify pulseaudio-utils
# Arch
sudo pacman -S libnotify
桌面通知需要一个正在运行的显示服务器(X11/Wayland)——它们在无头/SSH会话中无法工作。
Windows
使用PowerShell吐司通知(内置):
- 打开 设置→ 系统→ 通知
- 确保 通知 已打开
- 集 辅助聚焦 允许通知
- 如果使用Windows终端,请确保其通知已启用
AI可配置: AI可以在运行时检查、测试和配置通知:
check_notification_setup--诊断平台支持并显示设置说明test_notification--发送测试通知以验证一切正常configure_alerts--启用/禁用桌面、声音、阈值、webhook(可选持久配置文件)
Webhook有效载荷:
{
"event": "email.urgent",
"account": "work",
"sender": { "name": "John CEO", "address": "ceo@company.com" },
"subject": "Q4 Review Due Today",
"priority": "urgent",
"labels": ["VIP"],
"rule": "VIP Contacts",
"timestamp": "2026-02-18T11:30:00Z"
}
静态规则可以强制桌面通知 alert = true,无论紧急阈值如何:
[[settings.hooks.rules]]
name = "VIP Contacts"
match = { from = "ceo@company.com" }
actions = { flag = true, alert = true, labels = ["VIP"] }
特征:
- 自动重新连接 --指数回退(1s→ 60s) 关于连接失败
- 批处理 --在可配置的延迟内分组到达,以减少人工智能呼叫
- 速率限制 --每分钟最多10次采样呼叫
- 优雅降级 --如果客户端不支持采样,则回退到通知模式
- 资源订阅 --推
notifications/resources/updated用于未读计数
API
工具(47)
阅读(14)
| 工具 | 说明 |
|---|---|
list_accounts |
列出所有已配置的电子邮件帐户 |
list_mailboxes |
列出具有未读计数和特殊使用标记的文件夹 |
list_emails |
带有日期、发件人、主题和标志过滤器的分页电子邮件列表 |
get_email |
阅读带有附件元数据的完整电子邮件内容 |
get_emails |
在一次通话中获取多封电子邮件的完整内容(最多20封) |
get_email_status |
在不获取正文的情况下获取电子邮件的读取/标记/标签状态 |
search_emails |
按关键字搜索主题、发件人和正文 |
download_attachment |
按文件名下载电子邮件附件 |
find_email_folder |
发现电子邮件所在的真实文件夹(解析虚拟文件夹) |
extract_contacts |
从最近的电子邮件标题中提取唯一联系人 |
get_thread |
通过引用/回复重建对话线索 |
list_templates |
列出可用的电子邮件模板 |
get_email_stats |
电子邮件分析——数量、主要发件人、每日趋势 |
check_health |
连接健康、延迟、配额和IMAP功能 |
写作(9)
| 工具 | 说明 |
|---|---|
send_email |
发送新电子邮件(纯文本或HTML、CC/BCC) |
reply_email |
使用正确的螺纹进行回复(在回复中,参考) |
forward_email |
转发引用的原始内容 |
save_draft |
将电子邮件草稿保存到“草稿”文件夹 |
send_draft |
发送现有草稿并从草稿中删除 |
apply_template |
应用带有变量替换的模板 |
schedule_email |
安排一封电子邮件以备将来送达 |
list_scheduled |
按状态列出已安排的电子邮件 |
cancel_scheduled |
取消待定的计划电子邮件 |
管理(7)
| 工具 | 说明 |
|---|---|
move_email |
在文件夹之间移动电子邮件 |
delete_email |
移至回收站或永久删除 |
mark_email |
标记为已读/未读,标记/取消标记 |
bulk_action |
对多达100封电子邮件进行批量操作 |
create_mailbox |
创建新的邮箱文件夹 |
rename_mailbox |
重命名现有邮箱文件夹 |
delete_mailbox |
永久删除邮箱和内容 |
标签(5)
| 工具 | 说明 |
|---|---|
list_labels |
发现可用标签(自动检测提供商策略) |
add_label |
为电子邮件添加标签(ProtonMail文件夹、Gmail X-GM-LABELS或IMAP关键字) |
remove_label |
从电子邮件中删除标签 |
create_label |
创建新标签 |
delete_label |
删除标签 |
观察者和警报(6)
| 工具 | 说明 |
|---|---|
get_watcher_status |
显示IMAP空闲连接、正在监视的文件夹和上次看到的UID |
list_presets |
列出可用的AI分类预设,包括描述和建议标签 |
get_hooks_config |
显示当前挂钩配置——预设、规则和自定义说明 |
configure_alerts |
在运行时更新警报/通知设置 |
check_notification_setup |
诊断桌面通知支持并提供设置说明 |
test_notification |
发送测试通知以验证是否配置了操作系统权限 |
日历和提醒(6)
| 工具 | 说明 |
|---|---|
extract_calendar |
从电子邮件中提取ICS/iCalendar事件 |
analyze_email_for_scheduling |
分析电子邮件以检测事件和值得提醒的内容 |
add_to_calendar |
将电子邮件事件添加到本地日历(macOS/Linux) |
create_reminder |
通过电子邮件在macOS Reminders.app中创建提醒 |
list_calendars |
列出所有可用的本地日历 |
check_calendar_permissions |
检查本地日历是否可访问 |
提示(7)
| 提示 | 描述 |
|---|---|
triage_inbox |
使用建议操作对未读电子邮件进行分类和优先级排序 |
summarize_thread |
总结电子邮件对话线索 |
compose_reply |
起草对电子邮件的上下文感知回复 |
draft_from_context |
根据提供的上下文和说明撰写新电子邮件 |
extract_action_items |
从电子邮件线程中提取可操作的任务 |
summarize_meetings |
从电子邮件中总结即将发生的日历事件 |
cleanup_inbox |
建议存档、删除或取消订阅电子邮件 |
资源(6)
| 资源 | URI | 描述 |
|---|---|---|
| 账户 | email://accounts |
已配置帐户列表 |
| 邮箱 | email://{account}/mailboxes |
帐户的文件夹树 |
| 未读 | email://{account}/unread |
未读电子邮件摘要 |
| 模板 | email://templates |
可用的电子邮件模板 |
| 统计数据 | email://{account}/stats |
电子邮件统计快照 |
| 已安排 | email://scheduled |
待定的预定电子邮件 |
提供商自动检测
| 提供商 | 域名 |
|---|---|
| Gmail | Gmail.com |
| Outlook/Hotmail | Outlook.com、Hotmail.com、live.com |
| 雅虎邮箱 | Yahoo.com,ymail.com |
| iCloud | iCloud.com、me.com、mac.com |
| 快速邮件 | Fastmail.com |
| ProtonMail桥 | proton.me,ProtonMail.com |
| Zoho邮件 | Zoho.com |
| GMX | GMX.com、GMX.de、GMX.net |
建筑
src/
├── main.ts — Entry point and subcommand routing
├── server.ts — MCP server factory
├── logging.ts — MCP protocol logging bridge
├── cli/ — Interactive CLI commands
│ ├── account-commands.ts — Account CRUD (list, add, edit, delete)
│ ├── setup.ts — Legacy setup alias → account add
│ ├── test.ts — Connection tester
│ ├── config-commands.ts — Config management (show, edit, path, init)
│ ├── install-commands.ts — MCP client registration (install, status, remove)
│ ├── providers.ts — Provider auto-detection + OAuth2 endpoints (experimental)
│ └── scheduler.ts — Scheduler CLI
├── config/ — Configuration layer
│ ├── xdg.ts — XDG Base Directory paths
│ ├── schema.ts — Zod validation schemas
│ └── loader.ts — Config loader (TOML + env vars)
├── connections/
│ └── manager.ts — Lazy persistent IMAP/SMTP with OAuth2 (experimental)
├── services/ — Business logic
│ ├── imap.service.ts — IMAP operations
│ ├── label-strategy.ts — Provider-aware label strategy (ProtonMail/Gmail/IMAP keywords)
│ ├── smtp.service.ts — SMTP operations
│ ├── template.service.ts — Email template engine
│ ├── oauth.service.ts — OAuth2 token management (experimental)
│ ├── calendar.service.ts — ICS/iCalendar parsing
│ ├── scheduler.service.ts — Email scheduling queue
│ ├── watcher.service.ts — IMAP IDLE real-time watcher with auto-reconnect
│ ├── hooks.service.ts — AI triage via MCP sampling + static rules + auto-labeling/flagging
│ ├── notifier.service.ts — Multi-channel notification dispatcher (desktop/sound/webhook)
│ ├── presets.ts — Built-in hook presets (inbox-zero, gtd, priority-focus, etc.)
│ └── event-bus.ts — Typed EventEmitter for internal email events
├── tools/ — MCP tool definitions (42)
├── prompts/ — MCP prompt definitions (7)
├── resources/ — MCP resource definitions (6)
├── safety/ — Audit trail and rate limiter
└── types/ — Shared TypeScript types
维护者
贡献
PR已接受。请遵守 标准自述文件 在编辑此自述文件时,请参考规范。
# Development workflow
pnpm install
pnpm typecheck # type check
pnpm check # lint and format
pnpm build # build
pnpm start # run