MCP Notmuch Sendmail

MCP Notmuch Sendmail

一个邮件助手服务器,将 Claude Desktop 连接到 notmuch 邮件数据库,允许用户搜索邮件、查看邮件线程、撰写新邮件以及使用 Markdown 格式回复对话。

通信
数据库
本地
Python
访问服务器

README

MCP Notmuch Sendmail

状态:运行良好,日常使用中,未发现任何已知错误。

让 Claude 成为你的邮件助手!MCP Notmuch Sendmail 将 Claude Desktop 连接到你的 notmuch 邮件数据库,使其能够:

  • 搜索和浏览你的邮件线程
  • 以清晰的文本格式查看对话
  • 使用 markdown 编写新邮件
  • 回复邮件线程时智能地去除重复引用的内容
  • 使用 LaTeX 风格创建精美的邮件
  • 通过运行配置的脚本同步你的邮件数据库

使用 html2text 进行 HTML 邮件渲染,使用 markdown-it 编写带有内联图像的富 HTML 邮件。

MCP Notmuch Sendmail in action

要求

  • 一个正常工作的 notmuch 数据库设置
  • 一个配置好的 sendmail 命令用于发送邮件
  • Python 3.10+

API

工具

  • find_email_thread

    • 在 notmuch 数据库中查找邮件线程
    • 输入:notmuch_search_query (字符串)
    • 返回以制表符分隔的线程列表,格式如下:
    thread_id    date    subject    authors
    
  • view_email_thread

    • 查看邮件线程的所有消息
    • 输入:thread_id (字符串)
    • 返回文本格式的对话,并进行 HTML->文本转换
    FROM: sender@example.com
    DATE: 2024-01-25
    Message content...
    - - -
    FROM: another@example.com
    DATE: 2024-01-24
    Earlier message...
    
  • compose_new_email

    • 从 markdown 编写新的邮件草稿。如果设置了 SENDMAIL_EMAIL_SIGNATURE_HTML,将自动添加签名。
    • 输入:
      • subject (字符串): 邮件主题
      • body_as_markdown (字符串): 邮件正文,使用 markdown 格式
      • to (列表): 收件人邮件地址
      • cc (列表, 可选): 抄送收件人
      • bcc (列表, 可选): 密送收件人
    • 创建草稿文件并返回路径:
    Created drafts:
    - drafts/draft.md (edit this)
    - drafts/draft.html (preview)
    
  • compose_email_reply

    • 回复现有的邮件线程。如果设置了 SENDMAIL_EMAIL_SIGNATURE_HTML,将自动添加签名。
    • 输入:
      • thread_id (字符串): 要回复的线程 ID
      • subject (字符串): 邮件主题
      • body_as_markdown (字符串): 邮件正文,使用 markdown 格式
      • to (列表): 收件人邮件地址
      • cc (列表, 可选): 抄送收件人
      • bcc (列表, 可选): 密送收件人
    • 创建草稿文件并返回路径:
    Created drafts:
    - drafts/draft.md (edit this)
    - drafts/draft.html (preview)
    
  • send_email

    • 发送已编写的邮件草稿
    • 无需输入
    • 返回成功/错误消息
  • sync_emails

    • 通过运行配置的脚本同步邮件
    • 无需输入
    • 返回脚本的输出,包括 stdout 和 stderr
    • 仅在配置了 NOTMUCH_SYNC_SCRIPT 时可用

与 Claude Desktop 一起使用

添加到你的 claude_desktop_config.json

{
  "mcpServers": {
    "email": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-notmuch-sendmail", "run", "server.py"],
      "env": {
        "NOTMUCH_DATABASE_PATH": "/path/to/your/notmuch/db",
        "NOTMUCH_REPLY_SEPARATORS": "Pipe|Separated|Phrases",
        "SENDMAIL_FROM_EMAIL": "your.email@example.com",
        "SENDMAIL_EMAIL_SIGNATURE_HTML": "<p>Optional HTML signature</p>",
        "NOTMUCH_SYNC_SCRIPT": "/path/to/your/sync/script.sh",
        "LOG_FILE_PATH": "/path/to/log/file.log"
      }
    }
  }
}

环境变量:

  • NOTMUCH_DATABASE_PATH: 你的 notmuch 数据库的路径 (必需)
  • NOTMUCH_REPLY_SEPARATORS: 以管道符分隔的文本标记列表 - 保留邮件内容直到以任何这些标记开头的第一个行,删除引用的回复 (必需)
  • SENDMAIL_FROM_EMAIL: 你的邮件地址,用于 From: 字段 (必需)
  • SENDMAIL_EMAIL_SIGNATURE_HTML: 要附加到邮件的 HTML 签名 (可选)
  • NOTMUCH_SYNC_SCRIPT: 用于同步邮件的脚本路径 (可选)
  • LOG_FILE_PATH: 日志文件的路径 (可选)

安装

  1. 克隆仓库:
git clone https://github.com/runekaagaard/mcp-notmuch-sendmail.git
  1. 确保你已安装 uv
# 如果你还没有安装 uv
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 将邮件配置添加到 claude_desktop_config.json (见上文)

回复分隔符

NOTMUCH_REPLY_SEPARATORS 环境变量控制邮件回复检测。查看线程时,每个邮件的内容都会在以任何配置的分隔符开头的第一个行处被截断。这有效地删除了引用的回复,同时保留了新内容。

以下是针对不同语言的推荐分隔符模式:

English

On|wrote:|From:|Sent:|To:|Subject:|Date:|Cc:|Best regards|Kind Regards|Thanks,|Thank you,|Best,|All the best|regards,|Sent from my|Get Outlook for|CAUTION:|Disclaimer:|Warning:|Confidential:|CONFIDENTIALITY:|---------- Original Message ----------

German

Am.*schrieb|Von:|Gesendet|An:|Betreff:|Datum:|Cc:|Organisation:|Mit freundlichen Grüßen|Beste Grüße|Viele Grüße|Hinweis:|Achtung:|Gesendet von

French

Le.*a écrit|De |Envoyé |À |Objet |Cc |cordialement|salutations|bonne réception|bonne journée|Envoyé depuis

Dutch

Op.*schreef:|Van:|Verzonden|Aan:|Onderwerp:|Datum:|Cc:|Met vriendelijke groet|Hartelijke groeten|Bedankt,|Dank u,|Verzonden vanaf

Italian

Il.*ha scritto:|Da:|Inviato|A:|Oggetto:|Data:|Cc:|Cordiali saluti|Inviato da

注意:使用 | (管道符) 分隔模式。这些是从常见邮件客户端派生的简化模式 - 你可能需要根据你的具体需求进行调整。

贡献

热烈欢迎贡献!无论是错误报告、功能请求、文档改进还是代码贡献 - 所有输入都很有价值。请随意:

  • 打开一个 issue 来报告错误或建议功能
  • 提交包含改进的 pull request
  • 增强文档或分享你的使用示例
  • 提出问题并分享你的经验

目标是使 Claude 的邮件管理更加出色,你的见解和贡献有助于实现这一目标。

致谢

该项目建立在他人出色的工作之上:

许可证

Mozilla Public License Version 2.0

推荐服务器

Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Excel MCP Server

Excel MCP Server

一个模型上下文协议服务器,使 AI 助手能够读取和写入 Microsoft Excel 文件,支持诸如 xlsx、xlsm、xltx 和 xltm 等格式。

精选
本地
Go
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
DuckDuckGo MCP Server

DuckDuckGo MCP Server

一个模型上下文协议 (MCP) 服务器,通过 DuckDuckGo 提供网页搜索功能,并具有内容获取和解析的附加功能。

精选
Python
Supabase MCP Server

Supabase MCP Server

一个模型上下文协议(MCP)服务器,它提供对 Supabase 管理 API 的编程访问。该服务器允许 AI 模型和其他客户端通过标准化的接口来管理 Supabase 项目和组织。

精选
JavaScript
YouTube Transcript MCP Server

YouTube Transcript MCP Server

这个服务器用于获取指定 YouTube 视频 URL 的字幕,从而可以与 Goose CLI 或 Goose Desktop 集成,进行字幕提取和处理。

精选
Python
MCP Server Trello

MCP Server Trello

通过 Trello API 促进与 Trello 看板的交互,提供速率限制、类型安全、输入验证和错误处理等功能,以实现对卡片、列表和看板活动的无缝管理。

精选
TypeScript