Skip to main content

jmap-calendar-mcp

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

One Python file, standard library only.

Tools

Tool What it does
list_calendars Calendars on the account, and which one is the default
find_calendar_events Events in a time range (default: the next 30 days), optionally matching text; recurring events are expanded
create_calendar_event New event: title, start, time zone, length or all-day, description, location, attendees
update_calendar_event Change only the given fields of an existing event, or move it to another calendar

Built to be safe to hand to an agent:

  • No delete. An agent can move or rename an event but cannot remove one.
  • 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

    The key then cannot read or send mail, or delete anything.

  2. Add the server to your MCP client. For 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

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

Variable Meaning
JMAP_SESSION_URL The server's JMAP session URL, usually https://<host>/.well-known/jmap
JMAP_BEARER_TOKEN API key for the account
JMAP_ALLOW_INVITES 1 to allow sending invitations when a call asks for it; 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

Metadata

Release files for jmap-calendar-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jmap-calendar-mcp 0.1.0
File Size Uploaded Provenance Actions
jmap_calendar_mcp-0.1.0.tar.gz 8.2 kB Without provenance Details for jmap_calendar_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jmap-calendar-mcp 0.1.0
File Interpreter ABI Platform Actions
jmap_calendar_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for jmap_calendar_mcp-0.1.0-py3-none-any.whl

Total release size: 15.9 kB

Release files / jmap_calendar_mcp-0.1.0.tar.gz

Download URL jmap_calendar_mcp-0.1.0.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
4cfe9809b88a7c504093dee6a624c530725540134fcb64c2150e1a995f27f860
BLAKE2b-256 checksum
How to use checksums
f944404e67721a620e6cff98ac05bd114b3daaaa870c80894e7638ae5783e4bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Release files / jmap_calendar_mcp-0.1.0-py3-none-any.whl

Download URL jmap_calendar_mcp-0.1.0-py3-none-any.whl
Size 7.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0098b09efe1388ea2f5e79fa50372538cfa5fc49de252ebeaef88c3e4c23f61e
BLAKE2b-256 checksum
How to use checksums
2e040740db448a8098ea70393bfb804a7ef10c5cb151ca21f6697b112bfcc621
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.8

Security for jmap-calendar-mcp 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page