邮件与日历管理服务器

一个为LLM工具(如Claude Desktop和LM Studio)提供Proton Mail日历和邮件访问的MCP服务器。

  • by Canuteson
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Canuteson/proton-mcp-server

使用说明

质子微控制器

MCP服务器,使LLM工具(包括Claude Desktop和LM Studio)能够通过Proton Bridge访问您的Proton Mail日历和电子邮件。

设置

1.克隆并安装

git clone https://github.com/YOUR_USERNAME/proton-mcp.git
cd proton-mcp
npm install
npm run build

2.获取您的Proton日历网址

在Proton日历中,转到 设置→ 其他日历→ 查看链接 对于您要公开的每个日历。每个URL都是一个秘密的ICS下载链接——把它当作密码。

3.安装和配置质子桥(用于电子邮件)

质子桥 是一个本地代理,通过标准IMAP和SMTP公开您的Proton Mail帐户。每当MCP服务器需要读取或发送电子邮件时,它都必须运行。

安装并登录Proton Bridge后,在Bridge应用程序中的以下位置找到IMAP凭据 设置→ 邮箱配置。您需要:

  • IMAP用户名 --您的完整Proton邮件地址(例如。 you@proton.me)
  • IMAP密码 --Bridge生成的密码(与您的Proton帐户密码不同)

大桥在当地运行 127.0.0.1:1143 (IMAP)和 127.0.0.1:1025 默认情况下为(SMTP);这些已经是MCP服务器的默认设置。

4.配置克劳德桌面

打开(或创建)您的Claude Desktop配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%/Claude/claude_desktop_config.json

添加以下内容,替换路径、日历URL和网桥凭据:

{
  "mcpServers": {
    "proton-mcp": {
      "command": "node",
      "args": ["/Full/path/to/project/proton-mcp/dist/index.js"],
      "env": {
        "PROTON_CALENDARS": "[{\"name\":\"Family\",\"url\":\"https://calendar.proton.me/api/calendar/v1/url/...\"},{\"name\":\"Work\",\"url\":\"https://calendar.proton.me/api/calendar/v1/url/...\"}]",
        "IMAP_USERNAME": "you@proton.me",
        "IMAP_PASSWORD": "your-bridge-generated-password"
      }
    }
  }
}

使用完整的绝对路径 dist/index.js 克隆仓库中的文件。

5.重新启动克劳德桌面

完全退出并重新启动Claude Desktop。这 proton-mcp 服务器将在启动时自动连接。


电子邮件配置参考

IMAP默认值是为Proton Bridge预先配置的。你只需要 IMAP_USERNAME 和 IMAP_PASSWORD 用于标准质子桥设置。所有其他设置都有工作默认值。

变量 默认值 描述
IMAP_USERNAME (必填) 您的邮件帐户用户名/电子邮件地址
IMAP_PASSWORD (必填) 您的密码(对于Proton Bridge:使用Bridge生成的密码,而不是您的Proton帐户密码)
IMAP_HOST 127.0.0.1 IMAP服务器主机名
IMAP_PORT 1143 IMAP服务器端口
IMAP_SECURITY STARTTLS 连接安全: STARTTLS, TLS,或 NONE
IMAP_REJECT_UNAUTHORIZED false 设置为 true 强制执行TLS证书验证(Proton Bridge使用自签名的本地证书,因此必须保持 false 桥)

SMTP配置(用于发送电子邮件)

默认情况下,SMTP使用与IMAP相同的凭据-- IMAP_USERNAME 和 IMAP_PASSWORD 是自动重用的,因此Proton Bridge不需要额外的配置。如果需要,您可以使用专用SMTP变量进行覆盖:

变量 默认值 描述
SMTP_USERNAME (回到 IMAP_USERNAME) SMTP用户名
SMTP_PASSWORD (回到 IMAP_PASSWORD) SMTP密码
SMTP_HOST 127.0.0.1 SMTP服务器主机名
SMTP_PORT 1025 SMTP服务器端口
SMTP_SECURITY STARTTLS 连接安全: STARTTLS, TLS,或 NONE
SMTP_REJECT_UNAUTHORIZED false 设置为 true 强制执行TLS证书验证

与其他IMAP提供商一起使用

要连接到标准IMAP服务器而不是Proton Bridge,请覆盖默认值:

"env": {
  "IMAP_USERNAME": "you@example.com",
  "IMAP_PASSWORD": "your-password",
  "IMAP_HOST": "imap.example.com",
  "IMAP_PORT": "993",
  "IMAP_SECURITY": "TLS",
  "IMAP_REJECT_UNAUTHORIZED": "true"
}

通用提供程序设置:

提供程序 主机 端口 安全
Gmail imap.gmail.com 993 TLS
Outlook/Hotmail outlook.office365.com 993 TLS
快速邮件 imap.fastmail.com 993 TLS
质子桥(当地) 127.0.0.1 1143 STARTTLS (默认)

使用LM Studio(Qwen3、Llama 3.3等)

无需对服务器进行任何更改——MCP与模型无关。LM Studio使用与Claude Desktop相同的配置格式,只是文件不同。

要求: LM Studio 0.3.17或更高版本。

1.选择支持工具调用的型号

并非所有本地模型都能可靠地处理工具调用。这些工作得很好:

  • Qwen3 (任何尺寸)——强烈支持工具调用,推荐
  • Llama 3.3 70B --良好的工具调用支持

在继续之前,请在LM Studio中下载您喜欢的模型。

2.编辑 mcp.json

打开LM Studio,转到 程序 在右侧边栏中的选项卡中,然后单击 编辑mcp.json.添加 proton-mcp 条目(相同 command/args/env 形状为Claude桌面配置):

{
  "mcpServers": {
    "proton-mcp": {
      "command": "node",
      "args": ["/Full/path/to/project/proton-mcp/dist/index.js"],
      "env": {
        "PROTON_CALENDARS": "[{\"name\":\"Family\",\"url\":\"https://calendar.proton.me/api/calendar/v1/url/...\"},{\"name\":\"Work\",\"url\":\"https://calendar.proton.me/api/calendar/v1/url/...\"}]",
        "IMAP_USERNAME": "you@proton.me",
        "IMAP_PASSWORD": "your-bridge-generated-password"
      }
    }
  }
}

LM Studio自动重新加载 mcp.json 在拯救。该文件位于:

  • macOS/Linux: ~/.lmstudio/mcp.json
  • 视窗: %USERPROFILE%\.lmstudio\mcp.json

3.可靠调用工具的提示

  • 设置模型 温度降至0.1 或更低——更高的值会导致工具调用JSON格式错误
  • 集 上下文长度至少为4096
  • LM Studio将在首次调用工具时显示确认对话框;你可以选择始终允许它

用法

日历

问这样的问题:

  • “我有什么日历?”
  • “本周我的工作日历上有什么?”
  • “显示未来两周的所有家庭活动”

电子邮件

问这样的问题:

  • “我今天收到了哪些电子邮件?”
  • “显示收件箱中的未读邮件”
  • “查找来自的电子邮件alice@example.com本周”
  • “阅读最后一封电子邮件的全部内容”
  • “发送电子邮件至bob@example.com主题为“你好”
  • “将该电子邮件移动到我的存档文件夹”
  • “删除该消息”

工具参考

list_calendars / get_events (通过 calendar 工具)

操作 必需参数 可选参数
list_calendars — —
get_events calendar_name start_date, end_date (ISO 8601)

read_mail

操作 必需参数 可选参数
list_folders — —
list_messages — folder, since, before, from, subject, unread_only, limit
get_message uid folder, include_body

send_mail

参数 必填 描述
to yes 收件人,逗号分隔
subject 是 主题行
body 是 纯文本正文
cc 没有 CC收件人
bcc 没有 BCC收件人
reply_to 否 回复地址

move_mail

参数 必填 描述
uid yes 邮件的IMAP UID(使用 read_mail → list_messages 查找UID)
destination yes 目标文件夹路径(使用 read_mail → list_folders 查看选项)
folder no 源文件夹,默认为 INBOX

delete_mail

永久删除邮件--此操作无法撤消。

参数 必填 描述
uid yes 要删除的邮件的IMAP UID
folder no 包含邮件的文件夹,默认为 INBOX

日历环境变量格式

选项1-JSON数组(推荐):

PROTON_CALENDARS='[{"name":"Family","url":"https://..."},{"name":"Work","url":"https://..."}]'

选项2——每个日历的单个变量:

CALENDAR_FAMILY_URL=https://...
CALENDAR_WORK_URL=https://...

对于选项2 CALENDAR_<NAME>_URL 变量是自动发现的 NAME 用作日历名称(下划线转换为空格)。