Cal.com MCP Server: Setup Guide for AI Assistants
Set up Cal.com MCP server with Claude Desktop, ChatGPT, and Cursor in 15 minutes. Step-by-step guide to OAuth, config files, and AI agent scheduling automation.
- Model Context Protocol (MCP) lets AI assistants like Claude read and modify your Cal.com calendar in conversations
- Cal.com's hosted MCP endpoint at https://mcp.cal.com/mcp requires zero infrastructure; you just add it to your AI client config file and authorize via OAuth
- Setup works with Claude Desktop, ChatGPT, Cursor, and any MCP-compatible tool in under 15 minutes
- OAuth scopes limit what Claude can do: read availability, create bookings, check open slots--but not delete events or access private data
- 47,267 MCP servers are now active in the registry, with 45% of large software companies running MCP in production
The Model Context Protocol (MCP) lets AI assistants like Claude read and modify your Cal.com calendar without leaving the chat. Cal.com's MCP server exposes scheduling as a native tool: your AI can check availability, create meetings, and read event details in one conversation. This guide walks you through setup in under 15 minutes, whether you use Claude Desktop, ChatGPT, or Cursor.
What is MCP and Why You'd Want Cal.com as an MCP Server
The Model Context Protocol is a new standard that connects large language models (LLMs) to your company's tools and data. Instead of copy-pasting information into ChatGPT, MCP lets the AI read and write directly. Cal.com, the open-source scheduling platform with 50,000 GitHub stars, published an official MCP server in 2026. It means you can ask Claude, "Book a 30-minute meeting with Sarah on Thursday morning," and Claude will check your calendar, hold the slot, and send the invite.
Why this matters: Scheduling is one of the highest-friction tasks in knowledge work. It bounces between people's inboxes, Slack, and email. With Cal.com MCP, your AI assistant owns the coordination. It frees you to think about the meeting itself, not the logistics.
MCP is not a replacement for Cal.com's UI or mobile app. It's a layer on top. You still log in to Cal.com to customize your event types, set buffer times, and review bookings. MCP gives your AI access to the same data, but only via the conversational interface.
The protocol has exploded in adoption. As of September 2026, the TypeScript MCP SDK had 231.9 million downloads, and 47,267 MCP servers are active in the registry. In the Stacklok survey of 100 software companies (December 2025), 45% reported running MCP in production. It's no longer experimental.
Cal.com's MCP endpoint is hosted at https://mcp.cal.com/mcp and uses OAuth for authentication. If you're interested in managed Cal.com deployment for your team, Opsily offers Cal.com hosting with enterprise features. You don't manage API keys; instead, you sign in to Cal.com in your browser, and MCP handles the permission flow automatically.
Hosted vs. Self-Hosted: Which Cal.com MCP Option for You?
Cal.com offers two deployment paths for MCP:
Hosted (Recommended for most): Cal.com runs the MCP server at https://mcp.cal.com/mcp. You point your AI client to that endpoint, click "Authorize," and you're live. No infrastructure to manage. Updates roll out automatically. This is the easiest path for developers and small teams. You get security updates, bug fixes, and new MCP features automatically.
Self-Hosted: You can run Cal.com on your own servers or laptop, then run the MCP server on the same machine via npx @calcom/mcp. This requires Node.js and CLI familiarity. Self-hosted Cal.com makes sense if you:
- Run Cal.com for compliance reasons (data residency, audit trails)
- Want to modify the MCP server code (Cal.com is MIT-licensed on GitHub)
- Operate in an air-gapped or restricted-network environment
- Need custom integrations with internal tools
For the vast majority of teams, the hosted endpoint is the right choice. It scales automatically, Cal.com handles uptime and security, and you avoid maintaining another service yourself.
Once you decide on hosted or self-hosted, the MCP configuration steps are identical: you just point your AI client to a different URL. The rest of this guide applies to both.
Step 1: Set Up Your Cal.com Account
You need a Cal.com account and at least one event type configured.
- Go to https://cal.com and sign up (or log in if you already have an account).
- Create a new event type: "30-Minute Sync" or similar. Set the duration to 30 minutes, timezone to your local zone, and add availability rules for your normal working hours.
- Leave the default booking confirmation turned on (Cal.com will email confirmations).
- Save the event type.
That's it. Cal.com MCP will pull all your event types and availability from this account. You can manage this through the Cal.com dashboard directly, or if you're using Opsily's managed Cal.com service, the same steps apply through their interface.
For now, don't worry about advanced settings like buffer times or availability schedules. You can refine those later. The goal is to have at least one event type so you have something to test with.
Step 2: Configure Claude Desktop
Claude Desktop is the easiest starting point because it has native MCP support built in.
-
Download and install Claude Desktop if you haven't already.
-
Find your Claude Desktop config file:
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
-
Open the file in a text editor (VS Code, TextEdit, etc.).
-
Add the Cal.com MCP server to your config. If the file exists, look for the mcpServers section. If it doesn't exist, create it. Add this block:
{
"mcpServers": {
"calcom": {
"url": "https://mcp.cal.com/mcp"
}
}
}
-
Save the file and restart Claude Desktop.
-
Open a new conversation in Claude. You'll see a notification saying "MCP servers connected: 1" (or similar).
-
Click the notification or look for the "Tools" icon. You should see a new tool called "Cal.com" or "calcom" with actions like "List events", "Create booking", "Check availability."
OAuth Sign-In: The first time you use a Cal.com action, Claude will open a browser window asking you to log in to Cal.com. This is the OAuth flow. You'll see:
- "Claude Desktop wants to access your Cal.com account"
- A sign-in form for Cal.com (or, if you're already logged in, just a permission grant screen)
- After you approve, the browser closes and you're back in Claude
This sign-in happens once per device. After that, Claude has an auth token and can use Cal.com MCP without asking again.
Troubleshooting: If the OAuth window doesn't open, your firewall or browser settings may be blocking it. Try:
- Temporarily disable any network intercepting tools (VPNs, proxies, ad blockers)
- Manually restart Claude Desktop
- Check your Claude Desktop logs: ~/Library/Logs/Claude (macOS) or %APPDATA%\Claude\logs (Windows)
Step 3: Connect ChatGPT, Cursor, and Other Clients
Claude Desktop is just one option. Cal.com MCP works with ChatGPT, Cursor, VS Code, and any other AI client that supports MCP.
ChatGPT: OpenAI added MCP support in late 2025. In ChatGPT, go to Settings Tools MCP. Click "Add Server" and enter https://mcp.cal.com/mcp as the endpoint. ChatGPT will handle the OAuth flow the same way as Claude Desktop.
Cursor: Cursor is an IDE built on VS Code. MCP config lives in.cursor/mcp.json in your home directory. Use the same config block as Claude Desktop. After restarting Cursor, you can ask the AI assistant in the editor to schedule meetings while you code.
VS Code: If you use VS Code with a third-party MCP extension (like "MCP Client"), the setup is similar: point the extension to https://mcp.cal.com/mcp and authorize.
Generic MCP clients: If you're using any other MCP-compatible tool (like a custom app built with the MCP SDK), the endpoint is the same: https://mcp.cal.com/mcp. Documentation for that tool will explain where to paste the URL.
Key point: The endpoint doesn't change. Only the config location and format differ between clients. This is why learning Claude Desktop first is useful--once you grasp the pattern, the others are just mechanical differences.
Test Your Integration: Example Prompts and Expected Behavior
Now let's test it. Open Claude (or your AI client) and try these prompts:
Prompt 1: "Check my availability next Thursday." Claude will call the Cal.com API, fetch your calendar and event types, and reply with something like: "You're available Thursday 10 AM-12 PM, 2 PM-5 PM. You have a 30-minute sync slot open."
Prompt 2: "Book a 30-minute meeting with alice@company.com on Thursday at 11 AM." Claude will:
- Create a booking on your "30-Minute Sync" event type
- Add alice@company.com as the guest
- Place it at Thursday 11 AM
- Send an invite
- Reply: "Done. I've booked a 30-minute sync with Alice on Thursday at 11 AM. She'll get an invite shortly."
Prompt 3: "What's my calendar look like this week?" Claude will read all your events and summarize them: "You have a standup Monday 9 AM, client call Wednesday 2 PM, and team retro Friday 3 PM."
Expected behavior:
- The first action on any prompt takes 2-3 seconds (OAuth handshake, if needed).
- Subsequent actions are nearly instant.
- If something fails (e.g., "alice@company.com is already booked Thursday 11 AM"), Claude will explain the error and suggest alternatives.
- Cal.com holds a booking for 5 minutes while the guest hasn't accepted. After 5 minutes, the slot is released if no response.
Test this: Try each prompt and verify Claude's responses match your calendar. If Claude hallucinates a booking (makes one up without calling the API), something is wrong with your OAuth setup--go back and restart Claude Desktop.
API Key Scopes and Security Best Practices
Cal.com MCP does not use API keys. It uses OAuth 2.0, which is more secure for this use case. When you sign in via the browser (step 2 above), you're granting Claude specific permissions. Those permissions are:
Calendar read: Claude can see your events and availability. It won't modify or delete events; read-only access.
Booking create: Claude can create new event type bookings (e.g., schedule a meeting on your "30-Minute Sync" event type). It cannot delete or modify existing bookings.
Availability check: Claude can query which time slots are open across your event types. This is used behind the scenes when Claude needs to find a free slot for you.
OAuth scopes mean Claude cannot:
- Delete your calendar events
- See private notes on events
- Access other users' calendars
- Modify your Cal.com settings or event types
Why OAuth instead of API keys? Because OAuth uses short-lived tokens (typically 1 hour) and refresh tokens, limiting exposure if your Claude instance is compromised. API keys are permanent and harder to revoke.
Security best practices:
-
Don't share your Cal.com login. Your OAuth token is stored locally on your device. If someone accesses your device, they can book meetings as you. Use device-level security (password, biometric) to prevent this.
-
Review connected apps monthly. In Cal.com, go to Settings Connected Apps and check that only expected MCP clients (Claude, Cursor, etc.) have access. Revoke anything unfamiliar.
-
Use event-type-level permissions. If you have sensitive event types (executive strategy, personal time), consider creating a separate restricted event type for MCP. Cal.com lets you assign event types to specific users, and MCP respects that.
-
Don't run the self-hosted MCP server on the public internet. If you self-host locally, only expose it to your internal network. Publishing it to the internet is a security risk.
Common Setup Issues and Troubleshooting
Problem: OAuth window doesn't open
- Claude may not be able to launch your browser. Check your firewall or browser settings.
- Try manually visiting https://mcp.cal.com/mcp in your browser to ensure it's reachable.
- Restart Claude Desktop completely (close and reopen).
Problem: Claude says "Cal.com MCP is not connected"
- Verify the config file is saved correctly (check for typos in the URL).
- Ensure you've restarted Claude after editing the config.
- On macOS, check that the file permissions allow Claude to read it.
Problem: Claude can see my calendar but booking fails
- Check that the guest email is valid (typo in alice@company.com, etc.).
- Verify the event type exists in Cal.com and has a public booking link.
- If the slot is already taken, Claude will report "This slot is booked." Try a different time.
Problem: Booking was created in Cal.com but guest didn't get an email
- Cal.com may have detected the booking as spam (unlikely, but possible if your domain is new).
- Check Cal.com Settings Email check that booking confirmation is enabled.
- Ask the guest to check their spam folder.
Problem: "Unauthorized" or "Permission denied" error
- Your OAuth token may have expired (after 1 hour with no activity).
- Just make another Cal.com request in Claude. It will re-authenticate silently.
Getting more help:
- Cal.com documentation and support portal
- Cal.com community forum
- GitHub issues on the cal.com/cal.com repository
Taking It Further: Managed Cal.com Hosting
Cal.com is open source and free to self-host, which means running it on your own infrastructure. Many teams start with the official Cal.com app, but as you scale, you may want managed hosting instead.
Opsily offers managed Cal.com hosting. Instead of maintaining servers, patches, backups, and uptime yourself, Opsily handles it. This lets you focus on using Cal.com with MCP instead of administering the infrastructure. With managed Cal.com through Opsily, MCP integration works exactly as described in this guide--no changes needed. The OAuth flow, config files, and example prompts are all the same.
If you're running Cal.com in production or planning to scale it across a team, visit Opsily's Cal.com hosting page to see pricing and options. Most teams starting with MCP don't need managed hosting yet, but it's worth knowing what's available as you grow.
Frequently Asked Questions
What is the Model Context Protocol (MCP)? MCP is a standard for connecting AI assistants (Claude, ChatGPT, etc.) to external tools and data. It lets AI read and write information in real apps without you manually sharing data. Think of it as giving AI controlled access to your tool ecosystem.
Does Cal.com have an MCP server? Yes. Cal.com published an official MCP server in 2026 at https://mcp.cal.com/mcp. It's free and works with any MCP-compatible AI client.
How do I connect Cal.com to Claude? Locate your Claude Desktop config file, add the Cal.com MCP endpoint to the mcpServers section, restart Claude, and sign in via OAuth when prompted. The full steps are in Step 2 above.
What is the difference between Calendly and Cal.com MCP? Both Calendly and Cal.com have MCP servers, but Cal.com is open source (50,000 GitHub stars) and can be self-hosted. Cal.com's OAuth flow for MCP is simpler than Calendly's API key setup. If you're already using Cal.com, integration is straightforward.
Can I use Cal.com MCP with ChatGPT? Yes. ChatGPT added MCP support in late 2025. Go to Settings Tools MCP, add the Cal.com endpoint, and authorize. The setup is nearly identical to Claude Desktop.
Do I need an API key for Cal.com MCP? No. Cal.com MCP uses OAuth (browser sign-in), not API keys. This is more secure because OAuth tokens expire, whereas API keys are permanent.
What if I host Cal.com myself? You can run Cal.com locally and also run its MCP server locally. The setup is the same from Claude's perspective--you just point to your local instance's MCP endpoint instead of the hosted one.
Is Cal.com MCP secure? Cal.com MCP uses OAuth scopes to limit permissions. Claude can only read availability and create bookings; it cannot delete events or access private data. OAuth tokens expire after 1 hour, limiting exposure if your device is compromised.
The Bottom Line
Cal.com MCP brings scheduling into your AI conversations. You can ask Claude to check availability, create bookings, and coordinate meetings without leaving the chat. Setup takes 15 minutes and works across Claude Desktop, ChatGPT, Cursor, and other MCP clients. The OAuth flow is secure and user-friendly.
Start with the hosted endpoint at https://mcp.cal.com/mcp. It requires zero infrastructure maintenance. If you're thinking about scaling Cal.com across your team, explore Opsily's managed Cal.com hosting to see how we handle uptime, backups, and support so you don't have to.