Cal.com MCP
officialConnect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.
What can you do with Cal Com MCP?
- Manage bookings — Ask your assistant to list, create, reschedule, or cancel bookings using tools like
get_bookingsandcreate_booking. - Configure event types — Create or update event types, such as a 30-minute "Quick Chat," via
create_event_typeandupdate_event_type. - Check availability — Query open time slots or busy periods from connected calendars with
get_availabilityandget_busy_times. - Handle schedules — Create, update, or fetch your default schedule using
create_scheduleandget_default_schedule. - Manage teams and memberships — Invite members or adjust team roles through
create_team_inviteandupdate_team_membership.
Documentation
MCP server
Connect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.
The Cal.com MCP server wraps the Cal.com API v2 in the Model Context Protocol, letting you manage bookings, event types, schedules, and more through natural language in any MCP-compatible client.
Hosted server (mcp.cal.com)
The fastest way to get started is to connect your MCP client directly to mcp.cal.com. The hosted server uses Streamable HTTP transport with OAuth 2.1 authentication — your client handles the authorization flow automatically.
Connect your client
Point your MCP client to the hosted server URL:
https://mcp.cal.com/mcp
When you first connect, your client walks you through an OAuth authorization flow where you grant the server access to your Cal.com account. No API key is needed.
Add the following to your `claude_desktop_config.json`:* **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
* **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json theme={null}
{
"mcpServers": {
"calcom": {
"url": "https://mcp.cal.com/mcp"
}
}
}
```
Open **Settings → MCP** and add a new server with the URL `https://mcp.cal.com/mcp`, or add it to your `.cursor/mcp.json`:
```json theme={null}
{
"mcpServers": {
"calcom": {
"url": "https://mcp.cal.com/mcp"
}
}
}
```
Add the server to your VS Code MCP settings:
```json theme={null}
{
"mcpServers": {
"calcom": {
"url": "https://mcp.cal.com/mcp"
}
}
}
```
Add the following to your `~/.fx/mcp.json`:
```json theme={null}
{
"mcp": {
"calcom": {
"type": "http",
"url": "https://mcp.cal.com/mcp"
}
}
}
```
Then run `/mcp auth calcom --open` in fx to authorize. See the
[fx MCP docs](https://fx.sh/docs/capabilities/mcp) for transports,
authentication options, and tool discovery.
Self-hosted server (stdio)
If you prefer to run the server locally, you can use stdio transport with an API key. This is useful for development or when you want full control over the server.
Prerequisites
- Node.js >= 18
- A Cal.com API key — generate one in Settings → Developer → API Keys
Connect your client
Add the following to your MCP client's configuration:
{
"mcpServers": {
"calcom": {
"command": "npx",
"args": ["@calcom/cal-mcp@latest"],
"env": {
"CAL_API_KEY": "cal_live_xxxx"
}
}
}
}
Replace cal_live_xxxx with your actual API key.
Warning
Never share or commit your API key. If exposed, rotate it immediately in your Cal.com settings.
Toolsets
You can restrict which tools the server registers for a session by appending a toolsets query parameter to the server URL:
https://mcp.cal.com/mcp?toolsets=bookings,availability
Valid toolsets: profile, event-types, bookings, availability, schedules, calendars, teams, organizations, routing-forms, catalog (the find_api_operation / describe_api_operation / call_api_operation meta-tools). Unknown names are rejected with 400 invalid_request. Omitting the parameter registers every tool; the local tools get_app_link and search_docs are always registered regardless of the selection. For a self-hosted stdio server, set MCP_TOOLSETS instead.
Available tools
The MCP server exposes 63 tools organized by category:
App links
| Tool | Description |
|---|---|
get_app_link | Build a URL that opens a booking, event type, schedule, team, routing form or settings page in the Cal.com web app |
Documentation
| Tool | Description |
|---|---|
search_docs | Search the Cal.com product documentation; returns ranked pages with an excerpt of the top result |
User profile
| Tool | Description |
|---|---|
get_me | Get your authenticated user profile |
update_me | Update your user profile |
Event types
| Tool | Description |
|---|---|
get_event_types | List all event types |
get_event_type | Get a specific event type by ID |
create_event_type | Create a new event type |
update_event_type | Update an event type |
delete_event_type | Delete an event type |
get_event_type_settings | Get the settings of an event type |
get_event_type_history | Get the change history of an event type |
get_scheduling_config | Get the scheduling configuration of an event type |
get_crm_sync_errors | Get CRM sync errors for an event type |
Bookings
| Tool | Description |
|---|---|
get_bookings | List bookings with optional filters |
get_booking | Get a specific booking by UID |
create_booking | Create a new booking |
reschedule_booking | Reschedule a booking |
cancel_booking | Cancel a booking |
confirm_booking | Confirm a pending booking |
mark_booking_absent | Mark a booking absence |
get_booking_attendees | Get all attendees for a booking |
add_booking_attendee | Add an attendee to a booking |
get_booking_attendee | Get a specific attendee |
get_booking_routing_trace | Get the routing trace for a booking |
get_org_team_bookings | Get bookings for an organization team |
get_org_user_bookings | Get bookings for an organization user |
Schedules
| Tool | Description |
|---|---|
get_schedules | List all schedules |
get_schedule | Get a specific schedule by ID |
create_schedule | Create a new schedule |
update_schedule | Update a schedule |
delete_schedule | Delete a schedule |
get_default_schedule | Get your default schedule |
Availability & calendars
| Tool | Description |
|---|---|
get_availability | Get available time slots |
get_busy_times | Get busy times from calendars |
get_connected_calendars | List connected calendars |
get_conferencing_apps | List conferencing applications |
Teams & memberships
| Tool | Description |
|---|---|
get_my_teams | Get the teams you belong to |
get_org_teams | Get organization teams |
create_team_invite | Invite someone to a team |
create_team_membership | Create a team membership |
get_team_memberships | Get all team memberships |
get_team_membership | Get a team membership |
update_team_membership | Update a team membership |
delete_team_membership | Delete a team membership |
Organizations
| Tool | Description |
|---|---|
get_org_memberships | Get all organization memberships |
create_org_membership | Create an organization membership |
get_org_membership | Get an organization membership |
update_org_membership | Update an organization membership |
delete_org_membership | Delete an organization membership |
get_org_attributes | Get organization attributes |
get_org_attribute | Get an organization attribute |
get_attribute_options | Get options for an attribute |
get_user_attributes | Get attributes assigned to a user |
assign_attribute_to_user | Assign an attribute to a user |
update_user_attribute | Update an attribute assigned to a user |
unassign_attribute_from_user | Unassign an attribute from a user |
get_user_attribute_history | Get the attribute assignment history of a user |
Routing forms
| Tool | Description |
|---|---|
calculate_routing_form_slots | Calculate slots based on routing form response |
get_org_routing_forms | Get organization routing forms |
get_org_routing_form_responses | Get routing form responses |
API catalog
| Tool | Description |
|---|---|
find_api_operation | Search the full API v2 operation catalog |
describe_api_operation | Get the input schema for an API operation |
call_api_operation | Execute any API v2 operation from the catalog |
Example prompts
Once connected, you can interact with Cal.com using natural language:
- "What bookings do I have this week?"
- "Create a 30-minute event type called 'Quick Chat'"
- "Cancel my meeting with John tomorrow"
- "Show me my available slots for next Monday"
- "Reschedule my 2pm meeting to Thursday at 3pm"
- "What event types do I have?"
Related resources
- AI agents guide — build AI agents using the Cal.com API directly
- API v2 reference — full API endpoint documentation
- GitHub repository — source code
This documentation is built and hosted on Mintlify, a developer documentation platform.