Use Kalendia from your AI agent
Install the Kalendia MCP server and your agent can manage your calendar sync, agenda, and scheduling pages directly. Works with Claude Code, Cursor, Claude Desktop, VS Code, and any MCP client.
Setting this up with an AI agent?
Point it at this page. It can fetch the machine-readable instructions at /install.md and register the server for you. The only thing you do by hand is paste a token (step 2).
1. Make sure uv is installed
The server runs with uvx (from uv), so there is no separate install. Check with uv --version. If it is missing:
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Create a Kalendia token
Open Settings to API tokens, create a token, and copy the kld_ value (shown once). No account yet? Sign up free.
3. Register the server
Claude Code, one command (replace the token):
claude mcp add kalendia \ -e KALENDIA_TOKEN=PASTE_YOUR_TOKEN \ -e KALENDIA_API_URL=https://api.kalendia.io \ -- uvx --from git+https://github.com/bradbogdan/kalendia-mcp.git kalendia-mcp
Any other MCP client (Cursor, Claude Desktop, VS Code, Windsurf), add to its mcpServers config:
{
"mcpServers": {
"kalendia": {
"command": "uvx",
"args": ["--from","git+https://github.com/bradbogdan/kalendia-mcp.git","kalendia-mcp"],
"env": {
"KALENDIA_TOKEN": "PASTE_YOUR_TOKEN",
"KALENDIA_API_URL": "https://api.kalendia.io"
}
}
}
}4. Verify
Restart the client, then ask it to run list_connections. Your connected calendar accounts confirm the token works.
What your agent can do
- Read
- list_connections, list_calendars, list_all_calendars, list_sync_rules, get_agenda, list_scheduling_pages, get_scheduling_page, get_availability, get_billing, get_billing_overview, get_audit_log
- Sync rules
- create_sync_rule, run_sync_rule, delete_sync_rule
- Connections and calendars
- connect_icloud, connect_ics, refresh_calendars, discover_calendars, set_active_calendars, rename_calendar, disconnect_connection
- Scheduling pages
- create_scheduling_page, update_scheduling_page, delete_scheduling_page
A token grants full account access (no scopes yet), so treat it like a password and revoke any you no longer use at Settings to API tokens.