Cal.com MCP

official

Connect 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_bookings and create_booking.
  • Configure event types — Create or update event types, such as a 30-minute "Quick Chat," via create_event_type and update_event_type.
  • Check availability — Query open time slots or busy periods from connected calendars with get_availability and get_busy_times.
  • Handle schedules — Create, update, or fetch your default schedule using create_schedule and get_default_schedule.
  • Manage teams and memberships — Invite members or adjust team roles through create_team_invite and update_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

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

ToolDescription
get_app_linkBuild a URL that opens a booking, event type, schedule, team, routing form or settings page in the Cal.com web app

Documentation

ToolDescription
search_docsSearch the Cal.com product documentation; returns ranked pages with an excerpt of the top result

User profile

ToolDescription
get_meGet your authenticated user profile
update_meUpdate your user profile

Event types

ToolDescription
get_event_typesList all event types
get_event_typeGet a specific event type by ID
create_event_typeCreate a new event type
update_event_typeUpdate an event type
delete_event_typeDelete an event type
get_event_type_settingsGet the settings of an event type
get_event_type_historyGet the change history of an event type
get_scheduling_configGet the scheduling configuration of an event type
get_crm_sync_errorsGet CRM sync errors for an event type

Bookings

ToolDescription
get_bookingsList bookings with optional filters
get_bookingGet a specific booking by UID
create_bookingCreate a new booking
reschedule_bookingReschedule a booking
cancel_bookingCancel a booking
confirm_bookingConfirm a pending booking
mark_booking_absentMark a booking absence
get_booking_attendeesGet all attendees for a booking
add_booking_attendeeAdd an attendee to a booking
get_booking_attendeeGet a specific attendee
get_booking_routing_traceGet the routing trace for a booking
get_org_team_bookingsGet bookings for an organization team
get_org_user_bookingsGet bookings for an organization user

Schedules

ToolDescription
get_schedulesList all schedules
get_scheduleGet a specific schedule by ID
create_scheduleCreate a new schedule
update_scheduleUpdate a schedule
delete_scheduleDelete a schedule
get_default_scheduleGet your default schedule

Availability & calendars

ToolDescription
get_availabilityGet available time slots
get_busy_timesGet busy times from calendars
get_connected_calendarsList connected calendars
get_conferencing_appsList conferencing applications

Teams & memberships

ToolDescription
get_my_teamsGet the teams you belong to
get_org_teamsGet organization teams
create_team_inviteInvite someone to a team
create_team_membershipCreate a team membership
get_team_membershipsGet all team memberships
get_team_membershipGet a team membership
update_team_membershipUpdate a team membership
delete_team_membershipDelete a team membership

Organizations

ToolDescription
get_org_membershipsGet all organization memberships
create_org_membershipCreate an organization membership
get_org_membershipGet an organization membership
update_org_membershipUpdate an organization membership
delete_org_membershipDelete an organization membership
get_org_attributesGet organization attributes
get_org_attributeGet an organization attribute
get_attribute_optionsGet options for an attribute
get_user_attributesGet attributes assigned to a user
assign_attribute_to_userAssign an attribute to a user
update_user_attributeUpdate an attribute assigned to a user
unassign_attribute_from_userUnassign an attribute from a user
get_user_attribute_historyGet the attribute assignment history of a user

Routing forms

ToolDescription
calculate_routing_form_slotsCalculate slots based on routing form response
get_org_routing_formsGet organization routing forms
get_org_routing_form_responsesGet routing form responses

API catalog

ToolDescription
find_api_operationSearch the full API v2 operation catalog
describe_api_operationGet the input schema for an API operation
call_api_operationExecute 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

This documentation is built and hosted on Mintlify, a developer documentation platform.