JMAP服务器集成工具

一个通过JMAP协议与JMAP服务器交互的模型上下文协议(MCP)服务器,支持电子邮件、日历和联系人管理。

  • by vaderyang
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 vaderyang/jmap_mcp_server

使用说明

JMAP MCP-JMAP服务器集成

一个模型上下文协议(MCP)服务器,用于通过Jmap协议与Jmap服务器交互,支持电子邮件、日历和联系人。

演示

以下是与Claude Desktop配合使用的JMAP MCP服务器:

屏幕截图显示MCP工具成功地从JMAP服务器检索和搜索电子邮件数据,展示了Claude Desktop和您的电子邮件系统之间的无缝集成。

配置

环境变量(推荐)

可以使用通过MCP客户端配置传递的环境变量来配置服务器:

  • JMAP_BASE_URL -Jmap邮件服务器的基本URL(例如。, https://mail.example.com)
  • JMAP_USERNAME -用于身份验证的用户名/电子邮件
  • JMAP_PASSWORD -身份验证密码
  • JMAP_ACCOUNT_ID -(可选)要使用的特定帐户ID

这些应该在MCP客户端的配置文件中配置(见下面的示例)。

配置文件(回退)

如果未设置环境变量,服务器将在以下位置查找配置文件:

  1. 指定的路径 JMAP_CONFIG_PATH 环境变量
  2. jmap-config.json 在当前工作目录中
  3. .jmap-config.json 在用户的主目录中

示例配置文件:

{
  "baseUrl": "https://mail.example.com",
  "username": "user@example.com",
  "password": "your-password",
  "accountId": "account123"
}

特性

  • 如果提供了配置,则启动时自动连接
  • 支持全面的JMAP操作:

电子邮件操作

  • 获取邮箱
  • 获取电子邮件
  • 搜索电子邮件
  • 发送电子邮件
  • 标记为已读/未读
  • 删除电子邮件

日历操作

  • 获取日历
  • 获取日历事件
  • 创建日历事件
  • 更新日历事件
  • 删除日历事件

联系运营

  • 获取地址簿
  • 获取联系人
  • 搜索联系人
  • 创建联系人
  • 更新联系人
  • 删除联系人

用法

服务器将在启动时自动尝试使用配置的凭据进行连接。如果成功,所有电子邮件操作将立即可用。

如果没有提供配置或连接失败,您可以使用 connect_jmap 手动建立连接的工具。

安装

先决条件

  • Node.js 18+
  • npm或纱线
  • 在启用Jmap的情况下访问Jmap邮件服务器

设置

  1. 克隆存储库:
git clone https://github.com/vaderyang/jmap_mcp_server.git
cd jmap_mcp_server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

用法

运行MCP服务器

服务器通过stdio通信,旨在与MCP兼容的客户端一起使用:

npm start

对于自动重新加载的开发:

npm run dev

使用Claude Desktop进行配置

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上:

{
  "mcpServers": {
    "jmap-mail": {
      "command": "node",
      "args": ["/path/to/jmap-mcp-server/dist/index.js"],
      "env": {
        "JMAP_BASE_URL": "https://mail.example.com",
        "JMAP_USERNAME": "user@example.com",
        "JMAP_PASSWORD": "your-password",
        "JMAP_ACCOUNT_ID": "account123"
      }
    }
  }
}

替代方案:使用配置文件

如果您不希望将凭据放入Claude Desktop配置中,可以省略 env 部分并使用配置文件:

{
  "mcpServers": {
    "jmap-mail": {
      "command": "node",
      "args": ["/path/to/jmap-mcp-server/dist/index.js"],
      "env": {
        "JMAP_CONFIG_PATH": "/path/to/your/jmap-config.json"
      }
    }
  }
}

使用光标进行配置

对于Cursor,将MCP服务器配置添加到您的工作区或全局设置中:

{
  "@mcp": {
    "jmap-mail": {
      "command": "node",
      "args": ["/path/to/jmap-mcp-server/dist/index.js"],
      "env": {
        "JMAP_BASE_URL": "https://mail.example.com",
        "JMAP_USERNAME": "user@example.com",
        "JMAP_PASSWORD": "your-password",
        "JMAP_ACCOUNT_ID": "account123"
      }
    }
  }
}

MCP配置参考

有关详细的设置说明,请参阅官方文档:

克劳德桌面

  • 官方文件: 克劳德桌面MCP指南
  • 配置位置:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json

光标

  • 官方文件: 光标MCP设置
  • 配置:通过Cursor的设置或配置文件添加MCP服务器

MCP资源概述

可用工具

connect_jmap

连接到Jmap邮件服务器。其他工具调用不需要此功能。

参数:

  • baseUrl:Jmap服务器的基本URL(例如。, https://mail.example.com)
  • username:您的电子邮件/用户名
  • password:您的密码

get_mailboxes

从服务器检索所有邮箱。

get_emails

从特定邮箱或所有电子邮件中获取电子邮件。

参数:

  • mailboxId (可选):特定邮箱ID
  • limit (可选):最大电子邮件数(默认值:50)

get_email_by_id

通过ID检索特定电子邮件。

参数:

  • emailId:电子邮件ID

search_emails

通过文本查询搜索电子邮件。

参数:

  • query:搜索查询字符串
  • limit (可选):最大结果(默认值:20)

send_email

发送一封新电子邮件。

参数:

  • to:收件人电子邮件地址数组
  • subject:电子邮件主题
  • textBody (可选):纯文本正文
  • htmlBody (可选):HTML正文
  • cc (可选):CC收件人
  • bcc (可选):BCC收件人
  • inReplyTo (可选):用于回复的消息ID
  • references (可选):参考消息ID

mark_as_read

将电子邮件标记为已读。

参数:

  • emailIds:电子邮件ID数组

mark_as_unread

将电子邮件标记为未读。

参数:

  • emailIds:电子邮件ID数组

delete_emails

删除电子邮件(移至垃圾箱)。

参数:

  • emailIds:电子邮件ID数组

日历工具

get_calendars

从服务器检索所有日历。

get_calendar_events

从特定日历或所有日历中获取日历事件。

参数:

  • calendarId (可选):特定日历ID
  • limit (可选):最大事件数(默认值:50)

create_calendar_event

创建新的日历事件。

参数:

  • calendarId:用于在中创建事件的日历ID
  • title:事件标题
  • description (可选):事件描述
  • start:ISO 8601格式的事件开始时间(例如“2024-01-15T10:00:00Z”)
  • end:ISO 8601格式的事件结束时间(例如“2024-01-15T11:00:00Z”)
  • location (可选):活动地点
  • participants (可选):参与者电子邮件地址数组
  • showWithoutTime (可选):这是否是全天事件(默认值:false)

update_calendar_event

更新现有日历事件。

参数:

  • eventId:要更新的事件ID
  • title (可选):新事件标题
  • description (可选):新事件描述
  • start (可选):ISO 8601格式的新事件开始时间
  • end (可选):ISO 8601格式的新事件结束时间
  • location (可选):新活动地点
  • participants (可选):新的参与者电子邮件地址数组

delete_calendar_event

删除日历事件。

参数:

  • eventId:要删除的事件ID

联系工具

get_address_books

从服务器检索所有通讯簿。

get_contacts

从特定地址簿或所有地址簿中获取联系人。

参数:

  • addressBookId (可选):特定地址簿ID
  • limit (可选):最大联系人数量(默认值:50)

search_contacts

通过文本查询搜索联系人。

参数:

  • query:搜索查询以查找联系人
  • limit (可选):最大结果数(默认值:20)

create_contact

创建新联系人。

参数:

  • addressBookId:用于在中创建联系人的通讯簿ID
  • firstName (可选):联系人名字
  • lastName (可选):联系人姓氏
  • emails (可选):电子邮件对象数组 type 和 value
  • phones (可选):电话对象数组 type 和 value
  • addresses (可选):地址对象数组 type, street, city, state, country, postalCode
  • company (可选):联系公司/组织
  • jobTitle (可选):联系职位
  • notes (可选):联系方式

update_contact

更新现有联系人。

参数:

  • contactId:要更新的联系人ID
  • firstName (可选):新联系人名字
  • lastName (可选):新联系人姓氏
  • emails (可选):新的电子邮件对象数组 type 和 value
  • phones (可选):新的电话对象阵列 type 和 value
  • addresses (可选):新的地址对象数组 type, street, city, state, country, postalCode
  • company (可选):新联系人公司/组织
  • jobTitle (可选):新联系人职位
  • notes (可选):新联系人备注

delete_contact

删除联系人。

参数:

  • contactId:要删除的联系人ID

示例用法

使用此MCP服务器连接到Claude后,您可以使用以下自然语言命令:

电子邮件:

  • “显示我最近的电子邮件”
  • “搜索有关“项目更新”的电子邮件”
  • “发送电子邮件至alice@example.com关于会议”
  • “将所有未读电子邮件标记为已读”

日历:

  • “显示我的日历”
  • “获取我本周的日历事件”
  • “创建明天下午2点的会议”
  • “更新项目审查会议地点”

联络:

  • “显示我的所有联系人”
  • “搜索名为John的联系人”
  • “为Jane Smith创建新联系人”
  • “更新Alice的电话号码”

JMAP协议

此服务器实现了用于现代电子邮件、日历和联系人操作的JMAP协议:

  • JMAP核心 (urn:ietf:params:jmap:core)
  • JMAP邮件 (urn:ietf:params:jmap:mail)
  • JMAP日历 (urn:ietf:params:jmap:calendars)
  • JMAP联系人 (urn:ietf:params:jmap:contacts)

Jmap配置

确保您的Jmap Mail服务器在配置中启用了Jmap:

[server.listener.jmap]
bind = ["0.0.0.0:8080"]
protocol = "jmap"
tls.implicit = false

[jmap]
default-language = "en"

安全考虑

  • 凭证:服务器需要用户名/密码身份验证
  • 传输层安全:始终使用HTTPS端点进行生产
  • 网络:确保JMAP端口访问的防火墙规则正确
  • 认证:考虑使用特定于应用程序的密码(如果可用)

发展

项目结构

jmap-mcp-server/
├── src/
│   └── index.ts          # Main server implementation
├── dist/                 # Compile