MCP server for Cal.com — AI agents can schedule, cancel, reschedule & check availability
📅 mcp-server-calcom
Let any AI agent manage your Cal.com scheduling — check availability, create bookings, reschedule, and cancel meetings without switching tabs.
Use case
You tell Claude "book 30 minutes with Alex next Tuesday at 2pm" and Claude calls the Cal.com API to check slots and create the booking. No copy-pasting, no manual form filling.
For claude.ai users (cloud)
-
Deploy to Railway (free tier works):
Set
CAL_API_KEYas a Railway environment variable. -
Get your deployment URL — Railway gives you something like
https://mcp-server-calcom.up.railway.app. -
Add the connector in claude.ai Settings → Connectors → MCP endpoint. Paste your URL, appending
/mcp— e.g.https://mcp-server-calcom.up.railway.app/mcp.
That's it. Claude now talks to your Cal.com account.
For Claude Desktop users (local)
Run with npx:
{
"mcpServers": {
"calcom": {
"command": "npx",
"args": ["mcp-server-calcom"],
"env": {
"CAL_API_KEY": "cal_live_xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
Add that block to your Claude Desktop config file (claude_desktop_config.json), restart Claude, and the tools appear automatically.
Tools
1. calcom_get_availability
Check when someone is free.
"What times are free next Thursday for a 30-min meeting with event type 42?"
2. calcom_create_booking
Book a meeting.
"Book a 30-min call with Alex on Tuesday at 2pm ET. Alex's email is alex@example.com."
3. calcom_list_bookings
See what's scheduled.
"Show me all my upcoming bookings this week."
4. calcom_cancel_booking
Cancel a meeting.
"Cancel the booking with uid abc123, I need to reschedule."
5. calcom_get_event_types
See what event types are available.
"What meeting types do I have set up?"
Getting a Cal.com API key
- Go to app.cal.com/settings/developer/api-keys
- Click Create and give it a name
- Copy the key (starts with
cal_) - Set it as the
CAL_API_KEYenvironment variable
Self-host
git clone https://github.com/azmaldev/mcp-server-calcom
cd mcp-server-calcom
npm install
npm run build
CAL_API_KEY=cal_live_xxxxxxxxxxxxxxxxxxxx npm start
Or with Docker:
docker build -t mcp-server-calcom .
docker run -e CAL_API_KEY=cal_live_xxxxxxxxxxxxxxxxxxxx -p 3000:3000 mcp-server-calcom
The server listens on http://localhost:3000/mcp (POST only, no sessions, stateless).
Contributing
PRs welcome! A few guidelines:
- Keep it simple — no Express, no SSE, no sessions
- All Cal.com API calls go through
src/calcom-client.ts - All MCP tool definitions go through
src/server.ts - Run
npm run buildbefore opening a PR - Match the existing code style (strict TypeScript, no semicolons in this project)
Open an issue first if you're adding a new tool or changing the architecture.