OP

Open Source Calendly MCP Server

Deploy an open-source Calendly MCP server to self-host scheduling, customize workflows, and integrate with your apps.

Quick Install
npx -y @meAmitPatil/calendly-mcp-server

Overview

This open-source Calendly MCP server provides a self-hostable backend for receiving Calendly webhooks, proxying scheduling operations, and centralizing scheduling-related integrations. It implements a thin server layer that listens for events from Calendly (bookings, cancellations, invitee changes), validates requests, and exposes REST endpoints you can call from your applications or automation workflows.

Self-hosting your own MCP server helps when you need more control over data flow, want to customize business logic (for example, enrich events, apply custom routing, or enforce internal policies), or need to integrate scheduling events with internal systems (CRMs, analytics, messaging). The repo is designed for developers: small, configurable, and easy to run locally or in production via Docker.

Features

  • Receive and validate Calendly webhooks (signature verification)
  • Forward events to downstream systems or custom handlers
  • REST endpoints for basic scheduling-related proxy operations
  • Configurable via environment variables and .env files
  • Docker and local Node.js development support
  • Simple codebase suitable for extension and customization
  • Logging and basic error handling for observability

Installation / Configuration

Below are common ways to run the server: with Docker (recommended for production) and locally with Node.js for development.

  1. Clone the repository:
git clone https://github.com/meAmitPatil/calendly-mcp-server.git
cd calendly-mcp-server
  1. Create and edit environment configuration:
cp .env.example .env
# open .env and set values, e.g. CALENDLY_WEBHOOK_SECRET, PORT, DATABASE_URL (if required)

3a) Run with Docker Compose:

# build and start
docker compose up --build -d

# view logs
docker compose logs -f

3b) Run locally with Node.js:

# install dependencies
npm install

# run in development
npm run dev

# or start production build
npm run build
npm start

Environment variables (typical set):

VariableRequiredDescriptionExample
PORTno (defaults to 3000)HTTP port to listen on3000
CALENDLY_WEBHOOK_SECRETyesSecret for validating Calendly webhook HMAC signaturesabc123secret
MCP_API_KEYoptionalAPI key to protect internal endpointsmy-api-key
DATABASE_URLoptionalConnection string if persistence is enabledpostgres://user:pass@host:5432/db

Adjust the .env file to match your infrastructure and secrets. If you do not use a database, the server can be run stateless and forward events immediately to configured destinations.

Available Tools / Resources

  • GitHub repository: https://github.com/meAmitPatil/calendly-mcp-server — source, issues, and contribution guide.
  • Example .env and sample webhook verification logic included in the repo for reference.
  • Use existing Calendly developer docs to configure webhooks and generate the webhook secret (set that value into CALENDLY_WEBHOOK_SECRET).
  • Extendable handler pattern: the code is structured so you can add custom processors for event types (e.g., booking.created, invitee.canceled).

If you want faster testing, use ngrok or a similar tunneling tool to expose local server endpoints to Calendly for webhook delivery.

Use Cases

  • Custom routing into a CRM: Receive a booking.created webhook, look up the invitee in your CRM, create or update contact records, and attach the event metadata.

    • Flow: Calendly -> MCP server (validate) -> CRM API -> success/failure logging.
  • Enriched notifications: Intercept invitee.created events to fetch additional profile information, compute timezone-aware reminders, and push messages to Slack or email.

    • Flow: Calendly -> MCP server -> enrichment worker -> Slack webhook.
  • Privacy-conscious hosting: Keep scheduling events and associated metadata inside your own infrastructure rather than relying entirely on a third-party bridge. Useful for compliance or enterprise policies.

  • Automated workflows and analytics: Aggregate scheduling activity into a BI datastore or event bus (Kafka, Pub/Sub) to analyze meeting volumes by team, time, or campaign source.

  • Local development and testing: Run the server locally, use a tunnel (ngrok) to deliver webhook events, and iterate on custom business logic without touching production systems.

Extending and Troubleshooting

  • Add new event handlers by following the handler pattern in the codebase (look for the webhook dispatcher module).
  • Enable more detailed logging for troubleshooting webhook validation and downstream errors.
  • If webhooks fail, check signature verification (timestamp/skew) and ensure the CALENDLY_WEBHOOK_SECRET matches what’s configured in your Calendly webhook subscription.
  • For production, run the service behind a secure proxy (HTTPS termination), and rotate API/secret values regularly.

This MCP server is intentionally minimal to make it easy to adapt. Fork the repository, add your integrations, and run it wherever you control the infrastructure.