Skip to main content
Glama
@aiwerk/mcp-server-cal

@aiwerk/mcp-server-cal

Official
by AIWerk

@aiwerk/mcp-server-cal

npm version npm downloads License: MIT

Cal.com scheduling MCP server - manage bookings, event types, and availability directly from your AI assistant.

Why this server?

Connect Claude, Cursor, or any MCP-compatible AI to your Cal.com account. Create bookings, check availability, manage event types, and view schedules - all via natural language.

Related MCP server: Cal.com MCP Server for Customers

Install

Two ways to run this server — pick the one that fits.

Option 1 — Hosted (zero setup)

No local runtime, no env vars on your machine — secrets are AES-256-GCM encrypted server-side via HashiCorp Vault.

  1. Sign up at aiwerkmcp.com.

  2. Install Cal.com from the catalog and paste your CAL_API_KEY.

  3. Point your MCP client (Claude.ai, Cursor, Hermes, …) at your hosted endpoint:

    https://bridge.aiwerk.ch/u/<your-user-id>/mcp

    with your Bearer token.

All 12 tools, 3 resources, and 3 prompts appear. Install other AIWerk recipes from the same bridge.

Option 2 — Self-hosted (npx)

Run directly — you manage the API key:

CAL_API_KEY=cal_live_your_api_key_here npx @aiwerk/mcp-server-cal

Or wire it into your MCP client config — see Configuration below.

Tools

Tool

Description

cal_list_bookings

List bookings with optional filters (status, event type, date range)

cal_get_booking

Get details of a specific booking by UID

cal_create_booking

Create a new booking (event type, attendee info, time)

cal_cancel_booking

Cancel a booking by UID

cal_reschedule_booking

Reschedule a booking to a new time

cal_list_event_types

List all event types

cal_get_event_type

Get event type details by ID

cal_create_event_type

Create a new event type

cal_update_event_type

Update an existing event type

cal_delete_event_type

Delete an event type

cal_get_availability

Check available slots for an event type in a date range

cal_list_schedules

List all schedules (working hours / availability rules)

Resources

Resources are automatically available in the AI's context — no need to ask for them.

Resource

URI

Description

Upcoming Bookings

cal://bookings/upcoming

Today's and tomorrow's bookings

Event Types

cal://event-types

All configured event types

Schedules

cal://schedules

Working hours and availability rules

Prompts

Ready-made prompt templates for common scheduling tasks.

Prompt

Description

daily-schedule

Summarize today's schedule with bookings and free slots

find-free-slot

Find next available time for a specific event type

reschedule-suggestion

Suggest alternative times for rescheduling a booking

Configuration

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "cal": {
      "command": "npx",
      "args": ["@aiwerk/mcp-server-cal"],
      "env": {
        "CAL_API_KEY": "cal_live_your_api_key_here"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json globally:

{
  "mcpServers": {
    "cal": {
      "command": "npx",
      "args": ["@aiwerk/mcp-server-cal"],
      "env": {
        "CAL_API_KEY": "cal_live_your_api_key_here"
      }
    }
  }
}

OpenClaw / Universal Recipe

{
  "name": "cal",
  "command": "npx",
  "args": ["@aiwerk/mcp-server-cal"],
  "env": {
    "CAL_API_KEY": "${CAL_API_KEY}"
  }
}

Environment Variables

Variable

Required

Default

Description

CAL_API_KEY

Yes (on tool call)

-

Cal.com API key (cal_ or cal_live_ prefix)

CAL_BASE_URL

No

https://api.cal.com/v2

Override the Cal.com API base URL

The server starts and responds to tools/list without CAL_API_KEY. The key is only required when an actual tool is called (lazy credentials pattern).

Getting Your API Key

  1. Go to Cal.com Settings

  2. Create a new API key

  3. Copy the key (starts with cal_live_ for production)

Security

  • Never commit your API key to version control

  • Use environment variables or a secrets manager

  • The server only reads CAL_API_KEY at tool call time, never logs it

About AIWerk MCP

Part of the AIWerk MCP platform — curated, signed MCP recipes served either as npm packages for self-hosting or through our multi-tenant hosted bridge (bridge.aiwerk.ch).

Other AIWerk MCP servers:

Browse the full catalog (20+ recipes including GitHub, Linear, Notion, Stripe, …) at aiwerkmcp.com.

Contributing

Issues and PRs are welcome! Please open an issue first for larger changes.

License

MIT - AIWerk

Available Tools

12 tools
cal_cancel_bookingC

Cancel a booking by UID. Required: uid. Optional: cancellationReason.

Inputs: uid (required), cancellationReason.

cal_create_bookingC

Create a new booking. Required: eventTypeId, start (ISO 8601), attendeeName, attendeeEmail, attendeeTimezone. Optional: notes, guests (array of emails), metadata.

Inputs: eventTypeId (required), start (required), attendeeName (required), attendeeEmail (required), +4 more.

cal_create_event_typeB

Create a new event type. Required: title, slug, lengthInMinutes. Optional: description, locations, hidden, metadata.

Inputs: title (required), slug (required), lengthInMinutes (required), description, +3 more.

cal_delete_event_typeC

Delete an event type by ID. Required: id.

Inputs: id (required).

cal_get_availabilityA

Get available time slots for an event type in a date range. Required: eventTypeId, dateFrom (ISO 8601), dateTo (ISO 8601). Optional: timeZone.

Inputs: eventTypeId (required), dateFrom (required), dateTo (required), timeZone.

cal_get_bookingC

Get details of a specific booking by its UID. Required: uid.

Inputs: uid (required).

cal_get_event_typeB

Get details of a specific event type by ID. Required: id.

Inputs: id (required).

cal_list_bookingsB

List bookings with optional filters. Optional: status (upcoming|recurring|past|cancelled|unconfirmed), eventTypeId, dateFrom (ISO 8601), dateTo (ISO 8601), limit.

Inputs: status, eventTypeId, dateFrom, dateTo, +1 more.

cal_list_event_typesA

List all event types. Optional: teamId, userId to filter by team or user.

Inputs: teamId, userId.

cal_list_schedulesA

List all schedules (working hours and availability rules).

Inputs: no named parameters.

cal_reschedule_bookingA

Reschedule a booking to a new time. Required: uid, newStart (ISO 8601). Optional: reschedulingReason.

Inputs: uid (required), newStart (required), reschedulingReason.

cal_update_event_typeB

Update an existing event type. Required: id. Optional fields to update: title, slug, lengthInMinutes, description, locations, hidden, metadata.

Inputs: id (required), title, slug, lengthInMinutes, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool targets a distinct action on a specific resource (booking, event type, availability, schedule). No overlapping purposes; clear boundaries between list vs get, create vs update, etc.

    Naming Consistency5/5

    All tools follow the 'cal_verb_noun' pattern in snake_case, with consistent verbs (list, get, create, update, delete, cancel, reschedule). No mixing of conventions.

    Tool Count4/5

    12 tools is a reasonable number for a scheduling server. It covers the main workflows without being excessive. Missing schedule CRUD tools, but core functionality is well-scoped.

    Completeness3/5

    Bookings have create, get, list, cancel, reschedule (missing update of details). Event types have full CRUD. Schedules only have list, lacking create/update/delete. Availability is read-only. Some gaps in booking update and schedule management.

    Related MCP Connectors

    Related MCP Servers