JMAP MCP 服务器是一个模型上下文协议(MCP)服务器,它提供了与 JMAP(JSON 元应用协议)电子邮件服务器进行交互的工具。该服务器使用 Deno 构建,并采用了 @htunnicliff/jmap-jam 客户端库。
在使用 JMAP MCP 服务器之前,你需要完成以下准备工作:
将以下内容添加到你选择的代理中:
{
"mcpServers": {
"fastmail": {
"type": "stdio",
"command": "deno",
"args": [
"run",
"--allow-net=api.fastmail.com",
"--allow-env=JMAP_SESSION_URL,JMAP_BEARER_TOKEN,JMAP_ACCOUNT_ID",
"jsr:@wyattjoh/jmap-mcp@0.1.1"
],
"env": {
"JMAP_SESSION_URL": "https://api.fastmail.com/jmap/session",
"JMAP_BEARER_TOKEN": "API_TOKEN"
}
}
}
}
将以下配置添加到你选择的代理中:
{
"mcpServers": {
"fastmail": {
"type": "stdio",
"command": "deno",
"args": [
"run",
"--allow-net=api.fastmail.com",
"--allow-env=JMAP_SESSION_URL,JMAP_BEARER_TOKEN,JMAP_ACCOUNT_ID",
"jsr:@wyattjoh/jmap-mcp@0.1.1"
],
"env": {
"JMAP_SESSION_URL": "https://api.fastmail.com/jmap/session",
"JMAP_BEARER_TOKEN": "API_TOKEN"
}
}
}
}
变量 | 是否必需 | 描述 |
---|---|---|
JMAP_SESSION_URL |
是 | JMAP 服务器会话 URL(通常以 /.well-known/jmap 结尾) |
JMAP_BEARER_TOKEN |
是 | 用于认证的令牌 |
JMAP_ACCOUNT_ID |
否 | 账户 ID(如果未提供,将自动检测) |
search_emails
使用各种过滤器搜索邮件。 参数:
query
(可选):文本搜索查询from
(可选):按发件人电子邮件地址过滤to
(可选):按收件人电子邮件地址过滤subject
(可选):按主题文本过滤inMailbox
(可选):在特定邮箱中搜索hasKeyword
(可选):按关键词过滤(例如,'$seen'、'$flagged')notKeyword
(可选):排除特定关键词before
(可选):仅搜索指定日期之前的邮件(ISO 日期时间格式)after
(可选):仅搜索指定日期之后的邮件(ISO 日期时间格式)limit
(可选):最大结果数(1 - 100,默认值:50)position
(可选):分页起始位置(默认值:0)get_emails
通过邮件 ID 检索特定邮件。 参数:
ids
:邮件 ID 数组(1 - 50 个 ID)properties
(可选):要返回的特定属性get_mailboxes
获取邮箱/文件夹列表。 参数:
parentId
(可选):按父邮箱过滤limit
(可选):最大结果数(1 - 200,默认值:100)position
(可选):分页起始位置get_threads
通过线程 ID 获取邮件线程。 参数:
ids
:线程 ID 数组(1 - 20 个 ID)mark_emails
使用关键词标记邮件(已读/未读、已标记/未标记)。 参数:
ids
:邮件 ID 数组(1 - 100 个 ID)seen
(可选):标记为已读(true)或未读(false)flagged
(可选):标记为已标记(true)或未标记(false)move_emails
将邮件移动到不同的邮箱。 参数:
ids
:邮件 ID 数组(1 - 100 个 ID)mailboxId
:目标邮箱 IDdelete_emails
永久删除邮件。 参数:
ids
:邮件 ID 数组(1 - 100 个 ID)send_email
发送新邮件。 参数:
to
:收件人数组,包含 name
和 email
。cc
(可选):抄送收件人数组。bcc
(可选):密送收件人数组。subject
:邮件主题。textBody
(可选):纯文本邮件正文。htmlBody
(可选):HTML 格式邮件正文。identityId
(可选):发件身份。reply_to_email
回复现有邮件。 参数:
emailId
:要回复的邮件 ID。replyAll
(可选):是否全部回复(默认值:false)。subject
(可选):自定义回复主题。textBody
(可选):纯文本回复正文。htmlBody
(可选):HTML 格式回复正文。identityId
(可选):发件身份。该服务器应能与任何支持 JMAP 的电子邮件服务器兼容,包括:
deno run --allow-env --allow-net --watch src/mod.ts
# 测试连接
deno run --allow-env --allow-net src/mod.ts
该服务器使用以下技术构建:
该服务器的架构基于多个关键组件构建,以确保其高效性、安全性和兼容性。
使用 Deno 作为运行时,Deno 是一个现代的 JavaScript 和 TypeScript 运行时,具有安全、高效等特点。它提供了强大的网络和文件系统访问能力,同时支持 TypeScript 的强类型特性,有助于提高代码的可维护性和可靠性。
采用 @modelcontextprotocol/sdk 作为 MCP 服务器框架,该框架为服务器提供了基础的结构和功能,使得服务器能够遵循模型上下文协议进行开发和扩展。
使用 jmap-jam 作为轻量级、类型化的 JMAP 客户端。它帮助服务器与 JMAP 电子邮件服务器进行交互,确保服务器能够准确地处理 JMAP 请求和响应,并且完全符合 JMAP RFC 8620/8621 标准。
借助 Zod 进行运行时类型验证。Zod 提供了强大的模式定义和验证功能,能够对服务器接收到的所有输入进行全面的验证,确保输入数据的合法性和完整性,从而提高服务器的安全性和稳定性。
limit
和 position
参数,能够有效地控制数据的返回量,减少不必要的数据传输,提高系统性能。该服务器能够与多种 JMAP 电子邮件服务器兼容,包括 Cyrus IMAP、Stalwart Mail Server、FastMail 等,确保了广泛的适用性。
本项目采用 MIT 许可证,详情请参阅 LICENSE 文件。