Jmap Calendar Mcp

io.github.robertdoneill由 GitHub 帳號 robertdoneill 發布v0.2.0更新於 Nov 1, 2026

Read calendars and create, change or (opt-in) delete events on any JMAP server, such as Stalwart.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理在任意 JMAP 行事曆伺服器上列出行事曆、尋找、建立或修改活動,刪除需明確開啟。

可以做什麼
  • 列出帳號可見的行事曆並指出預設行事曆
  • 在指定時間範圍內尋找活動,可依文字比對,重複活動會展開為各次發生
  • 建立活動,可設定標題、開始時間、時區、長度或全天、描述、地點與參與者
  • 只修改既有活動的指定欄位,或將其移到其他行事曆
  • 僅在開啟刪除功能時刪除活動,重複活動會刪除全部發生
適用情境
當你的行事曆託管在 Stalwart 等 JMAP 伺服器上,希望助理查看近期活動或草擬、調整行程,同時不授予郵件存取權限時適用。適合希望預設關閉刪除與邀請寄送、只給行事曆寫入權限的使用者。
執行需求
以 Python 套件形式在本機透過 stdio 執行(uvx jmap-calendar-mcp)。需要 JMAP_SESSION_URL(通常是主機的 well-known JMAP 位址)與 JMAP_BEARER_TOKEN(帳號 API 金鑰)。選用的 JMAP_ALLOW_DELETE 與 JMAP_ALLOW_INVITES 需設為 1 才會啟用對應功能。需要能連線至 JMAP 伺服器的網路。
安裝前請注意
伺服器持有可代表帳號操作的 bearer 權杖,應僅授予行事曆權限,使其無法讀取或寄送郵件,並避免寫入 shell 歷史或設定檔。建立與修改活動會寫入真實行事曆;除非明確開啟邀請,參與者不會收到郵件通知。開啟 JMAP_ALLOW_DELETE 後助理可刪除活動,重複活動會刪除全部發生,且不會寄送取消通知。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Jmap Calendar Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

jmap-calendar-mcp

An MCP server that lets an AI agent see your calendars, find events, and create, change or (if you allow it) delete events on any JMAP server that supports JMAP for Calendars, such as Stalwart 1.0 and later.

One Python file, standard library only.

Tools

ToolWhat it does
list_calendarsCalendars on the account, and which one is the default
find_calendar_eventsEvents in a time range (default: the next 30 days), optionally matching text; recurring events are expanded
create_calendar_eventNew event: title, start, time zone, length or all-day, description, location, attendees
update_calendar_eventChange only the given fields of an existing event, or move it to another calendar
delete_calendar_eventDelete an event, every occurrence if it repeats. Only offered with JMAP_ALLOW_DELETE=1

Built to be safe to hand to an agent:

  • No delete by default. An agent can move or rename an event but cannot remove one. Set JMAP_ALLOW_DELETE=1 to offer delete_calendar_event; it sends no cancellations.
  • No invitations by default. Attendees are added without being emailed. Sending invitations needs both JMAP_ALLOW_INVITES=1 on the server and send_invitations: true on the call.
  • Use a key with calendar permissions only, so the agent cannot read or send mail through it.

Setup

  1. Create an API key for the account. On Stalwart, open the account in the admin (Directory → Accounts), set the key's permissions to Replace all permissions, and give it only these:

    • Sign in to the server
    • JMAP: Retrieve calendar details and properties
    • JMAP: Track changes to calendars since a given state
    • JMAP: Retrieve calendar event details
    • JMAP: Track changes to calendar events since a given state
    • JMAP: Search for calendar events matching criteria
    • JMAP: Track changes to calendar event query results
    • JMAP: Create new calendar events
    • JMAP: Modify existing calendar events
    • JMAP: Remove calendar events (only if you set JMAP_ALLOW_DELETE=1)

    The key then cannot read or send mail.

  2. Add the server to your MCP client. For Claude Code:

bash
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

For several accounts, add one server per account (calendar-work, calendar-home).

VariableMeaning
JMAP_SESSION_URLThe server's JMAP session URL, usually https://<host>/.well-known/jmap
JMAP_BEARER_TOKENAPI key for the account
JMAP_ALLOW_INVITES1 to allow sending invitations when a call asks for it; off by default
JMAP_ALLOW_DELETE1 to offer delete_calendar_event; off by default

Keep the key out of shell history and config files where you can: load it from your password manager or secret store when the server starts.

License

MIT

來源:README.md,提交 60c20f0

工具

4

list_calendars

List the calendars this account can see, with which is the default.

無需輸入參數。

find_calendar_events

Find events between two times (default: the next 30 days), optionally matching text. Recurring events are expanded into their occurrences.

輸入參數textafterlimitbeforecalendar

create_calendar_event

Create an event. Confirm title, time and time zone with the user first. Attendees are added without being emailed unless send_invitations is true.

輸入參數daysstart必填title必填all_daycalendarlocationattendeestime_zonedescriptionduration_minutessend_invitations

update_calendar_event

Change an existing event: give event_id and only the fields to change.

輸入參數daysstarttitleall_daycalendarevent_id必填locationattendeestime_zonedescriptionduration_minutessend_invitations

版本歷史

1
  1. v0.2.0最新Nov 1, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分