MCP 邮件服务器
使用说明内容(Markdown格式)
MCP 邮件服务器使用说明
-
项目简介
- 这是一个基于 Model Context Protocol(MCP)的服务器实现,使用 Quarkus 框架,将常用的邮箱操作封装为可通过 MCP 客户端调用的 Tools,支持多账号管理、文件夹管理、邮件读取/查询/发送、草稿保存、垃圾邮件处理、以及三方协作时的 triage/梳理工具等。
- 目标是为 LLM 客户端提供统一、可扩展的邮箱上下文服务,使其能够在对话中获取邮箱信息、执行外部操作,并将结果以一致的上下文形式返回给模型进行分析与推理。
-
主要功能点
- 账户与文件夹管理:listAccounts、listFolders、createFolder、listFolderTree、getSpamFolder、setSpamFolder、getDraftsFolder、setDraftsFolder
- 邮件读取与查看:listEmails、readEmail、getUnreadCount、getNextUnreadEmail
- 邮件操作:moveEmail、moveEmails、batchMoveEmails、moveToSpam、deleteEmail、markEmail、markEmails、flagEmail、setEmailFlags
- 邮件撰写与草稿:sendEmail、replyEmail、forwardEmail、forwardEmailWithComment、saveDraft
- 高级梳理与摘要:triageCompact、triageEmails、triageEmails、summarizeEmailsCompact、summarizeEmails
- 安全与提示:对邮件内容标注为未信任数据,避免将邮件内容用于指令执行等风险场景
-
安装步骤
- 安装 Java 21 及以上版本
- 使用 Maven 构建项目(若有源码):mvn package
- 启动服务器:通过运行打包后的 uber-jar,确保工作目录中能够正确加载 Quarkus 配置与环境变量。示例为将打包后的 mcp-email-server-<version>-runner.jar 运行起来,服务器会监听 MCP 客户端的请求并进行处理
- 配置环境变量:通过环境变量传入账户信息(IMAP/SMTP 主机、端口、用户名、密码等),支持配置多个账户(如 work、gmail 等)
-
服务器配置(给 MCP 客户端使用的配置信息) MCP 客户端需要配置一个启动项来连接该 MCP 服务器。配置示例(JSON 格式,包含服务器名称、启动命令、参数和环境变量,具体参数根据仓库提供的实现来启动服务器): { "mcpServers": { "email": { "command": "java", "args": [ "-Dquarkus.mcp.server.stdio.enabled=true", "-Dquarkus.config.locations=.", "-jar", "mcp-email-server-<version>-runner.jar" ], "env": { "EMAIL_ACCOUNTS_WORK_IMAP_HOST": "imap.example.com", "EMAIL_ACCOUNTS_WORK_IMAP_USERNAME": "[email protected]", "EMAIL_ACCOUNTS_WORK_IMAP_PASSWORD": "your-imap-password", "EMAIL_ACCOUNTS_WORK_IMAP_PORT": "993", "EMAIL_ACCOUNTS_WORK_IMAP_SSL": "true", "EMAIL_ACCOUNTS_WORK_SMTP_HOST": "smtp.example.com", "EMAIL_ACCOUNTS_WORK_SMTP_USERNAME": "[email protected]", "EMAIL_ACCOUNTS_WORK_SMTP_PASSWORD": "your-smtp-password", "EMAIL_ACCOUNTS_GMAIL_IMAP_HOST": "imap.gmail.com", "EMAIL_ACCOUNTS_GMAIL_IMAP_USERNAME": "[email protected]", "EMAIL_ACCOUNTS_GMAIL_IMAP_PASSWORD": "your-gmail-app-password", "EMAIL_ACCOUNTS_GMAIL_IMAP_PORT": "993", "EMAIL_ACCOUNTS_GMAIL_IMAP_SSL": "true", "EMAIL_ACCOUNTS_GMAIL_SMTP_HOST": "smtp.gmail.com", "EMAIL_ACCOUNTS_GMAIL_SMTP_USERNAME": "[email protected]", "EMAIL_ACCOUNTS_GMAIL_SMTP_PASSWORD": "your-gmail-app-password", "EMAIL_ACCOUNTS_GMAIL_SMTP_PORT": "587", "EMAIL_ACCOUNTS_GMAIL_SMTP_STARTTLS": "true" } } } }
说明要点
- server name 对应 MCP 客户端使用的服务器标识,此处为 email
- command 与 args 指定启动 MCP 服务器的命令及参数,确保开启 stdio 通道等选项以符合 MCP 客户端的通信要求
- env 部分用于传入多账户的认证信息与连接参数,确保服务器能够连接到各自的邮箱账户
- MCP 客户端仅需要配置上述信息来启动与 MCP 服务器的会话,并不需要关心服务器实现的具体细节
-
基本使用方法
- 启动 MCP 邮件服务器,确保环境变量中的账户信息正确配置
- 在你的 MCP 客户端(如 Claude Desktop/Code 与相应集成)中,将服务器名称设置为 email,使用上述命令和参数启动
- 调用工具时,LLM 模型可以通过 MCP 接口调用诸如 listAccounts、listEmails、sendEmail 等工具来获取上下文数据并执行邮箱操作
- 注意风险提示:邮件内容中的未信任数据应被当作外部数据处理,避免将其作为指令执行来源,避免不安全的操作
-
基本注意事项
- 该实现支持多账号,所有账号信息通过环境变量传入
- 邮件读取与操作均通过 IMAP/SMTP 实现,涉及到实际邮箱的访问,请确保权限与账号配置正确
- 邮件内容可能包含未信任数据,请在 LLM 使用时进行合适的上下文过滤与安全控制