mcpField
J
jmap-calendar-mcp

jmap-calendar-mcp

本地服务
github.com/robertdoneill生产力01 周前更新

关于 jmap-calendar-mcp

jmap-calendar-mcp 是一个 Python MCP 服务,可查看和管理支持 JMAP 日历功能的服务器上的日历,包括 Stalwart 1.0 及更高版本。它面向 Agent 使用,默认关闭删除事件和发送邀请。

主要功能

  1. 01列出日历及默认日历
  2. 02按时间范围和文本查找事件
  3. 03创建和更新事件
  4. 04搜索时展开重复事件
  5. 05需显式启用删除和邀请

适用场景

  1. 01查看即将发生的日历事件
  2. 02安排或调整会议
  3. 03按日期范围搜索重复事件
  4. 04允许 Agent 受控地修改日历

MCP 相关

该服务向 MCP 客户端提供日历列表、搜索、创建、更新以及可选的删除工具。它使用配置的 JMAP 会话和 bearer token 连接服务器。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"robertdoneill-jmap-calendar": {
"command": "uvx",
"args": [
"jmap-calendar-mcp"
],
"env": {
"JMAP_SESSION_URL": "<JMAP_SESSION_URL>",
"JMAP_BEARER_TOKEN": "<JMAP_BEARER_TOKEN>",
"JMAP_ALLOW_INVITES": "<JMAP_ALLOW_INVITES>",
"JMAP_ALLOW_DELETE": "<JMAP_ALLOW_DELETE>"
}
}
}
}
启动命令uvx jmap-calendar-mcp
需要配置的环境变量
JMAP_SESSION_URLJMAP session URL, usually https://<host>/.well-known/jmap
JMAP_BEARER_TOKEN密钥API key for the account, limited to calendar permissions
JMAP_ALLOW_INVITES1 to allow sending invitations when a call asks for it
JMAP_ALLOW_DELETE1 to offer delete_calendar_event

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypijmap-calendar-mcp0.2.0

工具

4

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

jmap-calendar-mcp

一个 MCP 服务,让 AI Agent 能查看你的日历、查找事件,并在任何支持 Calendars 的 JMAP 服务上创建、修改或(在你允许的情况下)删除事件,例如 Stalwart 1.0 及更高版本。

仅使用 Python 标准库的单个文件。

工具

工具功能
list_calendars查看账户中的日历,以及哪个是默认日历
find_calendar_events查找指定时间范围内的事件(默认:未来 30 天),可选择按文本匹配;重复事件会展开
create_calendar_event创建新事件:标题、开始时间、时区、时长或全天、描述、地点、参与者
update_calendar_event仅修改现有事件中指定的字段,或将其移至其他日历
delete_calendar_event删除事件;若为重复事件,则删除所有发生项。仅在设置 JMAP_ALLOW_DELETE=1 时提供

设计上可放心交由 Agent 使用:

  • 默认不允许删除。 Agent 可以移动或重命名事件,但不能删除事件。设置 JMAP_ALLOW_DELETE=1 后才会提供 delete_calendar_event;该工具不会发送取消通知。
  • 默认不发送邀请。 添加参与者时不会向他们发送邮件。发送邀请需要同时在服务端设置 JMAP_ALLOW_INVITES=1,并在调用时设置 send_invitations: true。
  • 仅使用具有日历权限的密钥,这样 Agent 就无法通过该密钥读取或发送邮件。

设置

  1. 为账户创建 API 密钥。在 Stalwart 中,在管理界面打开该账户(Directory → Accounts),将 密钥权限设为 Replace all permissions,并仅授予以下权限:

    • 登录服务器
    • JMAP:检索日历详情和属性
    • JMAP:跟踪自指定状态以来的日历变更
    • JMAP:检索日历事件详情
    • JMAP:跟踪自指定状态以来的日历事件变更
    • JMAP:搜索符合条件的日历事件
    • JMAP:跟踪日历事件查询结果的变更
    • JMAP:创建新的日历事件
    • JMAP:修改现有日历事件
    • JMAP:删除日历事件(仅在设置 JMAP_ALLOW_DELETE=1 时)

    这样,该密钥就无法读取或发送邮件。

  2. 将服务添加到 MCP 客户端。对于 Claude Code:

claude mcp add calendar \
  -e JMAP_SESSION_URL=https://mail.example.com/.well-known/jmap \
  -e JMAP_BEARER_TOKEN=your-api-key \
  -- uvx jmap-calendar-mcp

对于多个账户,每个账户添加一个服务(calendar-work、calendar-home)。

变量含义
JMAP_SESSION_URL服务的 JMAP 会话 URL,通常为 https://<host>/.well-known/jmap
JMAP_BEARER_TOKEN账户的 API 密钥
JMAP_ALLOW_INVITES设为 1 时,允许在调用请求发送邀请;默认关闭
JMAP_ALLOW_DELETE设为 1 时,提供 delete_calendar_event;默认关闭

尽可能避免将密钥留在 shell 历史记录和配置文件中:在服务启动时从密码管理器或 密钥存储中加载。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。