Calnode MCP
A self-hosted scheduler with a built-in MCP server: an agent checks slots, books, reschedules and cancels calls.
- 134 ★ on the repository
- Last commit
Broad access
Why this level
- The agent creates, reschedules and cancels bookings, which triggers guest emails and calendar events.
- The service stores guest personal data and OAuth access to host calendars.
Install
- Works in
Manual install
docker run -p 3000:3000 -v ./data:/data ghcr.io/calnode/calnode:latestThe first quick-start command from the README. The MCP server is built in: `calnode mcp` over stdio or the `/mcp` address over HTTP.
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The agent creates, reschedules and cancels bookings, which triggers guest emails and calendar events.
- The service stores guest personal data and OAuth access to host calendars.
This is third-party code. Review the repository files before installing.
What it does
Calnode, a Calendly-style scheduler, ships as a single Go binary with a SQLite database. An MCP server is built into it with ten tools, including `get_available_slots`, `create_booking`, `reschedule_booking`, `cancel_booking`, `list_bookings`, `get_meeting_notes` and `get_transcript`. They call the same internal services as the REST API, so emails, calendar events and webhooks fire in the same way. A local agent runs `calnode mcp` over stdio. A remote agent adds the `/mcp` address as a custom Claude connector: Calnode acts as an OAuth 2.1 server and asks for a Google or Microsoft sign-in. Scripts can use an API key with the `cno_` prefix.
Who it is for. Owners of small services and consultants who self-host call booking and want to hand it to an AI agent.
Good fit when
- An agent finds free time and books a call from a plain-language request.
- A scheduler must run on a cheap VPS without Redis and Postgres.
- Booking events go to n8n or Make through signed webhooks.
- An agent reads notes and the transcript of a finished meeting through `get_meeting_notes`.
Not a fit when
- You want a ready cloud booking service without your own server.
- You need configurable access roles: Calnode has three, `owner`, `admin` and `member`.
- You need a non-English admin panel: the admin UI and video room are English only.
Example request
Find slots for the intro-call event type next week in the Auckland timezone and book Tuesday afternoon.MCP
- Transport
- stdio, http
- Authentication
- OAuth
Environment variables
BASE_URL- Public address of the installation; needed for a real deployment.
CALNODE_ENCRYPTION_KEYsecret- Encryption key for stored credentials; generated automatically on a quick start.
CALNODE_RECOVERY_SECRETsecret- Recovery secret for production deployments.
DATABASE_URL- Database address, for example `sqlite:///data/calnode.db`.
Limitations
This is a whole application: it is deployed with Docker or a binary, not connected with one command. Remote connection from Claude needs HTTPS and a paid plan with custom connectors. Local `calnode mcp` needs no OAuth, but the agent gets full access to the local database. Video and meeting transcripts need an external LiveKit and Deepgram. The README version is early (`0.1`), and several interface translations are machine drafts.
How to disable. Remove the connector from Claude or the `calnode mcp` entry from the client configuration. Revoke the `cno_` keys and OAuth consents in Calnode settings, then stop the container.
FAQ
How do I connect Calnode to Claude?
In Claude open Settings, Connectors, Add custom connector and enter `https://<your-server>/mcp`. Then click Connect, sign in and allow access. The server must run over HTTPS.
Can I skip OAuth?
Yes. A local agent runs `calnode mcp` over stdio, and scripts use a `cno_` API key in the Authorization header.
What can an agent acting as a team member do?
The `member` role sees and changes only bookings it hosts. The `owner` and `admin` roles work across the whole workspace.
How does Calnode differ from cal.com?
The author contrasts them: one binary and SQLite instead of Redis and Postgres, API-first webhooks and a built-in MCP server. The licence is Apache-2.0.
How do I deploy Calnode?
With `docker run` and the `ghcr.io/calnode/calnode:latest` image, or from the standalone Linux binary archives on the releases page. For production set `BASE_URL`, `CALNODE_ENCRYPTION_KEY` and `CALNODE_RECOVERY_SECRET`.
Discussion
No questions or reviews yet.
Related
MCP serversA self-hosted scheduler on Cloudflare Workers with a built-in MCP server: an agent lists slots, creates and reschedules bookings
Google Calendar MCP Server: calendar for Claude
Google Calendar MCP Server
A calendar MCP for Claude Desktop: the agent views, creates, updates and deletes Google Calendar events, recurring ones included
MCP server for the macOS calendar: an agent creates, finds and edits events in natural language
Yandex Calendar MCP server
Яндекс Календарь MCP для Claude
An MCP server for Yandex Calendar: view, create and delete events using an app password
Yandex Calendar MCP server over CalDAV
yandex-calendar-mcp
A Yandex Calendar MCP server over CalDAV: reading the schedule, creating and editing events, invitations with real email delivery
Connects an agent to Nextcloud: notes, calendar, contacts, files, mail and Deck boards through more than 110 MCP tools
README in short
The repository presents Calnode as a compact alternative to cal.com and Calendly: booking pages, paid bookings through Stripe, Zoom and Google or Microsoft Calendar integrations, 88 REST API endpoints and HMAC-signed webhooks. Data lives in SQLite with Litestream backups.