JMAP邮件管理服务器

基于Rust的MCP服务器,通过stdio/JSON-RPC提供JMAP邮件操作,支持搜索、管理和发送邮件。

  • by rhalldearn
  • Rust
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 rhalldearn/rdh-jmap-mcp

使用说明

JMAP MCP服务器

基于Rust的MCP服务器,通过stdio/JSON-RPC公开JMAP电子邮件操作。掉落 它可以通过任何MCP感知工具进行搜索、管理和发送邮件 JMAP兼容提供程序。

亮点

  • 邮件搜索、检索、线程、移动、删除和关键字更新
  • 具有层次结构感知的邮箱发现
  • 电子邮件的撰写和提交(包括全部回复)
  • 使用JSON模式元数据进行功能驱动的工具注册
  • 单静态二进制;JMAP服务器之外没有运行时依赖关系

快速开始

  1. 安装 防锈工具链 (建议1.75+)。

  2. 构建二进制文件:

    cargo build --release
    
  3. 将MCP客户端指向生成的可执行文件,例如:

    {
      "mcpServers": {
        "fastmail": {
          "type": "stdio",
          "command": "/home/richard/Projects/rdh-jmap-mcp/target/release/rdh-jmap-mcp",
          "env": {
            "JMAP_SESSION_URL": "https://api.fastmail.com/jmap/session",
            "JMAP_BEARER_TOKEN": "API_TOKEN"
          }
        }
      }
    }
    

配置

变量 必需 目的
JMAP_SESSION_URL 是 会话发现端点(通常 /.well-known/jmap)
JMAP_BEARER_TOKEN 是 用于API访问的OAuth/Bearrer令牌
JMAP_ACCOUNT_ID 否 显式帐户选择(省略时自动检测)

服务器检查所通告的功能。写入操作消失 只读帐户和提交工具需要 urn:ietf:params:jmap:submission.

可用工具

search_emails, get_emails, get_threads, get_mailboxes, mark_emails, move_emails, delete_emails, send_email,以及 reply_to_email每个工具都是 通过向MCP客户端显示的JSON模式进行描述,包括参数 类型、边界和可选字段。

建筑

  • tokio 用于异步stdio和HTTP
  • reqwest 用于JMAP呼叫
  • schemars 用于JSON模式生成
  • 反映JMAP故障详细信息的严格错误传播

发展

cargo run    # start in debug mode
cargo test   # run the Rust test suite

安全说明

  • 在发出请求之前验证工具输入
  • 仅从环境变量中使用凭据
  • 避免记录令牌或敏感有效载荷
  • 遵守JMAP安全指南

兼容性

用Stalwart测试;设计用于与Cyrus IMAP、Fastmail、Apache James、, 以及任何其他符合JMAP的实现。

贡献

分叉仓库、分支、实现、测试并打开一个获得MIT许可的PR。

参考文献