home / mcp / calendly mcp server

Calendly MCP Server

Provides access to Calendly data and scheduling actions via MCP, including user, event, invitee, and Scheduling API capabilities.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "meamitpatil-calendly-mcp-server": {
      "command": "npx",
      "args": [
        "calendly-mcp-server"
      ],
      "env": {
        "CALENDLY_API_KEY": "your_personal_access_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_CLIENT_ID": "YOUR_CLIENT_ID",
        "CALENDLY_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN",
        "CALENDLY_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
        "CALENDLY_REFRESH_TOKEN": "YOUR_REFRESH_TOKEN",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

You can run a dedicated MCP server that integrates with Calendly, enabling you to manage users, events, invitees, and scheduling workflows directly from your MCP client. This server supports both API-based access via tokens or OAuth1280-based authentication, and it exposes a Scheduling API to book meetings programmatically with flexible location options and real-time availability checks.

How to use

You use the Calendly MCP Server by starting it through an MCP client (such as Claude Desktop) using one of the supported start methods. Once running, you will access a set of tools that let you fetch current user details, list and manage events, handle invitees, and explore scheduling options. The Scheduling API lets you discover event types, check availability, and schedule meetings with a chosen time and location. Use your MCP client to invoke the available tools by name and provide the required parameters as described in each tool’s usage notes.

To begin, choose an authentication method that fits your use case. For internal applications or quick testing, you can use a Personal Access Token (PAT). For public applications with multiple users, you’ll use OAuth 2.0 and store client credentials and tokens securely.

How to install

Prerequisites: you need Node.js 18+ installed on your machine.

Option 1: NPX (Recommended) Run directly without installation.

npx calendly-mcp-server

Option 2: Manual Installation 1. Clone the project 2. Install dependencies 3. Build the project

git clone https://github.com/meAmitPatil/calendly-mcp-server.git
cd calendly-mcp-server
npm install
npm run build

Configuration and usage notes

Authentication supports two methods. Choose one and set the corresponding environment variables.

Personal Access Token (PAT) usage:

export CALENDLY_API_KEY="your_personal_access_token_here"

OAuth 2.0 usage:

export CALENDLY_CLIENT_ID="your_client_id_here"
export CALENDLY_CLIENT_SECRET="your_client_secret_here"
```
Optional tokens if you already have them:
```
export CALENDLY_ACCESS_TOKEN="your_access_token_here"
export CALENDLY_REFRESH_TOKEN="your_refresh_token_here"

Configuring MCP client connections

You can connect the Calendly MCP Server to your MCP client using either NPX or a local installation. The following examples show how to configure the client with environment variables for each method.

{
  "mcpServers": {
    "calendly": {
      "command": "npx",
      "args": ["calendly-mcp-server"],
      "env": {
        "CALENDLY_API_KEY": "your_personal_access_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

Additional configuration options for OAuth 2.0

If you prefer OAuth 2.0, place the credentials and optional tokens in the MCP client configuration.

{
  "mcpServers": {
    "calendly": {
      "command": "npx",
      "args": ["calendly-mcp-server"],
      "env": {
        "CALENDLY_CLIENT_ID": "your_client_id_here",
        "CALENDLY_CLIENT_SECRET": "your_client_secret_here",
        "CALENDLY_ACCESS_TOKEN": "your_access_token_here",
        "CALENDLY_REFRESH_TOKEN": "your_refresh_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

Local installation start example

If you installed locally, start the server with Node.js and point to the built index file.

{
  "mcpServers": {
    "calendly": {
      "command": "node",
      "args": ["path/to/calendly-mcp-server/dist/index.js"],
      "env": {
        "CALENDLY_API_KEY": "your_personal_access_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

Scheduling API and available tools

The server exposes a Scheduling API to list event types, check availability, and schedule meetings with invitees and a chosen location.

Troubleshooting and tips

Common issues include missing authentication tokens, invalid event type URIs, or time formats. Ensure you set the correct environment variables and that times are in ISO 8601 UTC format when scheduling.

If you encounter permission issues, verify that your Calendly plan supports scheduling via API and that tokens have the needed scopes.

Available tools

get_oauth_url

Generate OAuth authorization URL for user authentication.

exchange_code_for_tokens

Exchange authorization code for access and refresh tokens.

refresh_access_token

Refresh access token using a refresh token.

get_current_user

Get information about the currently authenticated user.

list_events

List scheduled events with optional filtering.

get_event

Get details of a specific event.

list_event_invitees

List invitees for a specific event.

cancel_event

Cancel a specific event.

list_organization_memberships

List organization memberships for the authenticated user.

list_event_types

List available event types for scheduling meetings.

get_event_type_availability

Get available time slots for a specific event type.

schedule_event

Schedule a meeting by creating an invitee for a specific event type and time.