Skip to main content

agents-calendar

Version 0.1.2 MCP Python 3.10+ PyPI License

CalDAV feeler for agents (CLI + MCP).
Stdlib HTTP. The server expands recurrence. Passwords stay on the host.

Quickstart

pip install agents-calendar && agents-calendar sync --init

Merges MCP into host configs. Prints where credentials go. Does not write secrets into mcp.json. init is the same command.

Source checkouts can also be installed and managed with vand.


What it does

List calendars, list events in a time range, add, update, delete. Recurrence rules stay on the CalDAV server (time-range report). Writes send If-None-Match: * on create and If-Match on update and delete, so a stale etag does not clobber.

The password is never printed, logged, or returned by a tool.


Credentials

Highest priority first:

  1. Process env: CALDAV_URL, CALDAV_USERNAME, CALDAV_PASSWORD, optional CALDAV_CALENDAR
  2. ~/.agents/calendar.json (mode 0600)
  3. ~/.agents/.env keys CALDAV_*
{
  "url": "https://example.com/dav/calendars/user/calendar/",
  "username": "user",
  "password": "app-password",
  "calendar": "Work"
}

calendar (or CALDAV_CALENDAR) is optional: the collection, by display name or URL, that add writes to. list searches every collection unless --calendar names one. Both commands and the MCP tools accept calendar per call.

CLI and MCP both read this file, so a desktop host does not need the password in its MCP config. A URL that is only a host or principal is resolved through calendar-home-set. add writes into a VEVENT collection, not a reminder collection.


Where it runs

Floor: any MCP client or a terminal. python -m agents_calendar serve is enough. No skills are installed.

Layer What you get Who
CLI + MCP The five tools below, or the same verbs on the CLI Any MCP host / any shell
Autowire sync --init merges agents-calendar when the host config directory already exists, and ensures ~/.cursor/mcp.json Cursor, Claude Desktop, Zed (context_servers), Antigravity / Gemini, Windsurf, Codex, Roo, Cline

MCP without autowire: point the host at python -m agents_calendar serve.


MCP tools

Primary surface. They mirror the CLI. Password never appears in the JSON.

Tool What it does
calendar_calendars Collections under the configured URL
calendar_list VEVENTs between ISO start and end. Returns UTC and local times
calendar_get Get a single VEVENT by href with UTC and local times
calendar_add Create. If-None-Match so an existing UID is not overwritten
calendar_update Replace. href and etag come from calendar_list or calendar_get
calendar_delete Delete. Same href + etag pair

Six tools. Timezone and daylight saving time (DST) shifts are handled deterministically via Python zoneinfo.


CLI

Machine-readable catalog: python -m agents_calendar --help-json (do not scrape --help).

Command Purpose
agents-calendar sync --init Merge MCP. Alias: agents-calendar init
agents-calendar calendars List collections
agents-calendar list --from <ISO> --to <ISO> Events in that range with local & UTC times
agents-calendar get --href <href> Get event details by href
agents-calendar add --summary "…" --dtstart <ISO> --dtend <ISO> Create. Optional --location, --description, --timezone, --all-day
agents-calendar update --href <href> --etag <etag> … Replace fields you pass
agents-calendar delete --href <href> --etag <etag> Delete
agents-calendar serve stdio MCP. Not the default

No subcommand prints help.


ABI

Contract in abi/:


Tests

python -m unittest discover tests

License

MIT. See LICENSE.

Metadata

Release files for agents-calendar 0.1.2

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

Source distribution (sdist)

Source distribution for agents-calendar 0.1.2
File Size Uploaded Provenance Actions
agents_calendar-0.1.2.tar.gz 29.3 kB Without provenance Details for agents_calendar-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for agents-calendar 0.1.2
File Interpreter ABI Platform Actions
agents_calendar-0.1.2-py3-none-any.whl Python 3 none any Details for agents_calendar-0.1.2-py3-none-any.whl

Total release size: 52.8 kB

Release files / agents_calendar-0.1.2.tar.gz

Download URL agents_calendar-0.1.2.tar.gz
Size 29.3 kB
Tags Source
SHA-256 checksum
How to use checksums
9254cfea37cffc957f3017190424333ec09585ac1c6222d8481972556aa21428
BLAKE2b-256 checksum
How to use checksums
842c98d27c1b48c2dd6b824963d3280971de94d16c9c591510f8a33a8d0973a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Release files / agents_calendar-0.1.2-py3-none-any.whl

Download URL agents_calendar-0.1.2-py3-none-any.whl
Size 23.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f33f4f3ba3cc748f1e20712793cd74208bfaa912ac1145972bc137874c9c92d7
BLAKE2b-256 checksum
How to use checksums
8e93e1b6a5b0e398ca15df194013ebe8b4655e077bb05bb75cd49f166b8d02eb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.6

Security for agents-calendar 0.1.2

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.

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