calendly-mcp-server

mkimelblat/calendly-mcp-server

3.1

If you are the rightful owner of calendly-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

A complete Model Context Protocol (MCP) server for the Calendly API, providing full access to all Calendly API endpoints.

Calendly MCP Server

A complete Model Context Protocol (MCP) server for the Calendly API. This server provides full access to all Calendly API endpoints, including the newly released Scheduling API and Event Type Management APIs.

What This Enables

Event Type Management

  • Create new event types without using the Calendly UI (1:1 event types only)
  • Update event type durations, locations, and settings in bulk (1:1 event types only)
  • Modify availability schedules programmatically
  • Configure meeting locations via API

Scheduling & Events

  • View and analyze availability
  • Book meetings programmatically (Scheduling API)
  • Cancel and manage scheduled events
  • Track invitees and no-shows
  • Bulk operations on multiple events

Organization & Users

  • Manage organization memberships
  • Invite and remove users
  • Configure webhooks for real-time updates
  • GDPR compliance tools

Prerequisites

  • Python 3.10 or higher
  • A Calendly account
  • A Calendly API key (Personal Access Token)

Installation

1. Clone this repository

git clone https://github.com/mkimelblat/calendly-mcp-server.git
cd calendly-mcp-server

2. Create a virtual environment and install dependencies

python3 -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt

3. Get your Calendly API key

  1. Go to https://calendly.com
  2. Log in to your account
  3. Navigate to: Profile → Settings → Integrations → API & Webhooks
  4. Click "Generate New Token"
  5. Copy the token (keep it secure!)

4. Configure the server

Create a .env file in the project root:

CALENDLY_API_KEY=your_api_key_here

Important: Never commit your .env file to GitHub! It's already in .gitignore.

Usage with Claude

Option 1: Using Claude Desktop

Add this to your Claude Desktop configuration file:

On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "calendly": {
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/calendly-mcp-server/server.py"],
      "env": {
        "CALENDLY_API_KEY": "your_api_key_here"
      }
    }
  }
}

Replace /path/to/ with your actual paths.

Option 2: Using with Claude API

from anthropic import Anthropic

client = Anthropic(api_key="your_anthropic_api_key")

# The MCP server will be available as tools
response = client.messages.create(
    model="claude-sonnet-4-5-20250929",
    max_tokens=1024,
    tools=[...],  # MCP tools will be injected here
    messages=[
        {"role": "user", "content": "Create a new 45 minute strategy session event type"}
    ]
)

Available Operations

The Calendly MCP Server exposes 45+ tools mapped one-to-one to Calendly's public API v2. All operations support natural language interaction through AI assistants.

Users

ToolDescriptionREST Endpoint
get_current_userGet the authenticated userGET /users/me
get_userGet a specific user by UUIDGET /users/{uuid}

Event Types

ToolDescriptionREST Endpoint
create_event_typeCreate a new event typePOST /event_types
update_event_typeUpdate event type detailsPATCH /event_types/{uuid}
list_event_typesList event types for a user/orgGET /event_types
get_event_typeRetrieve event type detailsGET /event_types/{uuid}
list_event_type_available_timesList available time slotsGET /event_type_available_times
list_event_type_availability_schedulesList availability schedulesGET /event_types/{uuid}/availability_schedules
update_event_type_availability_scheduleUpdate an availability schedulePUT /event_types/{uuid}/availability_schedule
list_user_meeting_locationsList a user's meeting locationsGET /user_meeting_locations

Scheduled Events

ToolDescriptionREST Endpoint
list_eventsList scheduled eventsGET /scheduled_events
get_eventRetrieve event detailsGET /scheduled_events/{uuid}
cancel_eventCancel a scheduled eventPOST /scheduled_events/{uuid}/cancellation
create_event_inviteeCreate a new booking (Scheduling API)POST /invitees
list_event_inviteesList invitees for an eventGET /scheduled_events/{uuid}/invitees
get_event_inviteeGet invitee detailsGET /scheduled_events/{uuid}/invitees/{invitee_uuid}

Scheduling Links

ToolDescriptionREST Endpoint
create_scheduling_linkCreate a single-use linkPOST /scheduling_links

Availability

ToolDescriptionREST Endpoint
list_user_availability_schedulesList user availability schedulesGET /user_availability_schedules
get_user_availability_scheduleGet a schedule's detailsGET /user_availability_schedules/{uuid}
list_user_busy_timesList busy times within a rangeGET /user_busy_times

No-Shows

ToolDescriptionREST Endpoint
create_invitee_no_showMark invitee as no-showPOST /invitee_no_shows
get_invitee_no_showGet no-show detailsGET /invitee_no_shows/{uuid}
delete_invitee_no_showRemove no-show statusDELETE /invitee_no_shows/{uuid}

Organizations

ToolDescriptionREST Endpoint
get_organizationRetrieve org detailsGET /organizations/{uuid}
list_organization_membershipsList organization membersGET /organization_memberships
get_organization_membershipGet membership detailsGET /organization_memberships/{uuid}
delete_organization_membershipRemove a memberDELETE /organization_memberships/{uuid}
list_organization_invitationsList pending invitationsGET /organizations/{uuid}/invitations
create_organization_invitationInvite a userPOST /organizations/{uuid}/invitations
revoke_organization_invitationRevoke an invitationDELETE /organizations/{uuid}/invitations/{invitation_uuid}

Routing Forms

ToolDescriptionREST Endpoint
list_routing_formsList routing formsGET /routing_forms
get_routing_formGet form detailsGET /routing_forms/{uuid}
list_routing_form_submissionsList form submissionsGET /routing_forms/{uuid}/submissions
get_routing_form_submissionRetrieve a submissionGET /routing_form_submissions/{uuid}

Webhooks

ToolDescriptionREST Endpoint
list_webhook_subscriptionsList webhook subscriptionsGET /webhook_subscriptions
create_webhook_subscriptionCreate a webhookPOST /webhook_subscriptions
get_webhook_subscriptionRetrieve webhook detailsGET /webhook_subscriptions/{uuid}
delete_webhook_subscriptionDelete a webhookDELETE /webhook_subscriptions/{uuid}

Data Compliance

ToolDescriptionREST Endpoint
delete_invitee_dataDelete invitee data (GDPR)POST /data_compliance/deletion/invitees

Examples

Create a new event type

# Through Claude:
"Create a new 45-minute event type called 'Strategy Session' with Zoom as the location"

Update an event type duration

# Through Claude:
"Update my '30 min chat' event type to be 20 minutes instead"

Change event type location

# Through Claude:
"Change my 'Team Sync' event type location from Google Meet to Zoom"

Book a meeting programmatically

# Through Claude:
"Schedule a meeting for john@example.com tomorrow at 2pm using my '30 min chat' event type"

Bulk update event types

# Through Claude:
"Update all my 30-minute event types to 25 minutes"

API Endpoint Coverage

This server provides access to 45+ Calendly API v2 endpoints:

  • ✅ Users (2 endpoints)
  • ✅ Event Types (7 endpoints) - Including NEW management APIs
  • ✅ Scheduled Events (5 endpoints) - Including Scheduling API
  • ✅ Event Invitees (2 endpoints)
  • ✅ Availability Schedules (3 endpoints)
  • ✅ Organizations (7 endpoints)
  • ✅ Webhooks (4 endpoints)
  • ✅ Routing Forms (4 endpoints)
  • ✅ Scheduling Links (1 endpoint)
  • ✅ No-Shows (3 endpoints)
  • ✅ Meeting Locations (1 endpoint) - NEW
  • ✅ Data Compliance (1 endpoint)

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Security

  • Never commit your API keys or .env file
  • Use environment variables for sensitive data
  • Rotate your API keys regularly
  • Follow the principle of least privilege

Troubleshooting

"Module not found" errors

Make sure you've installed all dependencies:

pip install -r requirements.txt

"Authentication failed" errors

Check that your CALENDLY_API_KEY is correct and hasn't expired.

Connection issues

Ensure you have internet connectivity and can reach api.calendly.com

Python version errors

Make sure you're using Python 3.10 or higher:

python3 --version

License

MIT License - see file for details

Acknowledgments

Support

For issues and questions:

Version History

v2.1.0 (Current)

  • Added Event Type Management APIs
  • Create and update event types programmatically
  • Manage event type availability schedules
  • List user meeting locations
  • Complete coverage of all Calendly API v2 endpoints (45+ tools)

v1.0.0

  • Initial release
  • Core API endpoint coverage
  • Scheduling API support

Made with ❤️ for the Claude and Calendly communities