10 KiB
Calendly MCP Server
Complete Model Context Protocol (MCP) server for Calendly API v2 with 40+ tools and 12 interactive React apps.
Features
- ✅ 40+ MCP Tools covering all Calendly API endpoints
- ✅ 12 React Apps for interactive workflows
- ✅ Full TypeScript with comprehensive type definitions
- ✅ OAuth2 & API Key authentication support
- ✅ Rate Limiting and error handling
- ✅ Dual Transport (stdio and HTTP)
Installation
npm install @busybee3333/calendly-mcp
Configuration
Set one of the following environment variables:
export CALENDLY_API_KEY="your-api-key"
# OR
export CALENDLY_ACCESS_TOKEN="your-oauth-token"
Get Your API Key
- Go to Calendly Integrations
- Navigate to API & Webhooks
- Generate a Personal Access Token
Usage
Stdio Transport (for Claude Desktop, etc.)
calendly-mcp
Programmatic Usage
import { createCalendlyServer } from '@busybee3333/calendly-mcp';
const server = createCalendlyServer({
apiKey: process.env.CALENDLY_API_KEY,
});
MCP Tools (40+)
Users (2 tools)
| Tool | Description |
|---|---|
calendly_get_current_user |
Get information about the currently authenticated user |
calendly_get_user |
Get information about a specific user by URI |
Organizations (8 tools)
| Tool | Description |
|---|---|
calendly_get_organization |
Get information about a specific organization |
calendly_list_organization_invitations |
List all invitations for an organization |
calendly_get_organization_invitation |
Get details of a specific organization invitation |
calendly_create_organization_invitation |
Invite a user to join an organization |
calendly_revoke_organization_invitation |
Revoke a pending organization invitation |
calendly_list_organization_memberships |
List all memberships for an organization |
calendly_get_organization_membership |
Get details of a specific organization membership |
calendly_remove_organization_membership |
Remove a user from an organization |
Event Types (5 tools)
| Tool | Description |
|---|---|
calendly_list_event_types |
List all event types for a user or organization |
calendly_get_event_type |
Get details of a specific event type |
calendly_create_event_type |
Create a new event type |
calendly_update_event_type |
Update an existing event type |
calendly_delete_event_type |
Delete an event type |
Scheduled Events (3 tools)
| Tool | Description |
|---|---|
calendly_list_events |
List scheduled events with various filters |
calendly_get_event |
Get details of a specific scheduled event |
calendly_cancel_event |
Cancel a scheduled event |
Invitees (5 tools)
| Tool | Description |
|---|---|
calendly_list_event_invitees |
List all invitees for a specific event |
calendly_get_invitee |
Get details of a specific invitee |
calendly_create_no_show |
Mark an invitee as a no-show |
calendly_get_no_show |
Get details of a no-show record |
calendly_delete_no_show |
Remove a no-show marking from an invitee |
Webhooks (4 tools)
| Tool | Description |
|---|---|
calendly_list_webhooks |
List all webhook subscriptions for an organization |
calendly_get_webhook |
Get details of a specific webhook subscription |
calendly_create_webhook |
Create a new webhook subscription |
calendly_delete_webhook |
Delete a webhook subscription |
Scheduling (1 tool)
| Tool | Description |
|---|---|
calendly_create_scheduling_link |
Create a single-use scheduling link for an event type or user |
Routing Forms (4 tools)
| Tool | Description |
|---|---|
calendly_list_routing_forms |
List all routing forms for an organization |
calendly_get_routing_form |
Get details of a specific routing form |
calendly_list_routing_form_submissions |
List all submissions for a routing form |
calendly_get_routing_form_submission |
Get details of a specific routing form submission |
Availability (2 tools)
| Tool | Description |
|---|---|
calendly_list_user_availability_schedules |
List all availability schedules for a user |
calendly_get_user_availability_schedule |
Get details of a specific availability schedule |
Data Compliance (3 tools)
| Tool | Description |
|---|---|
calendly_create_data_compliance_deletion |
Create a GDPR data deletion request for invitees |
calendly_get_data_compliance_deletion |
Get status of a data compliance deletion request |
calendly_get_activity_log |
Get activity log entries for an organization |
MCP Apps (12 Interactive React Apps)
1. Event Type Dashboard
Purpose: Manage your Calendly event types
Features:
- View all event types in a grid layout
- Toggle active/inactive status
- Quick access to scheduling URLs
- Shows duration, type, and description
2. Calendar View
Purpose: View your scheduled events in a list format
Features:
- Filter by time range (week/month)
- Group events by date
- Show event status, location, and invitee count
- Time-formatted display
3. Invitee Grid
Purpose: View and manage event invitees
Features:
- Select events from dropdown
- Table view of all invitees
- Mark invitees as no-shows
- Show status, timezone, and reschedule info
4. Webhook Manager
Purpose: Manage Calendly webhook subscriptions
Features:
- Create new webhooks with event selection
- View all active webhooks
- Delete webhooks
- Shows callback URLs and event types
5. Organization Overview
Purpose: Manage your organization
Features:
- View organization details
- List all members with roles
- Manage pending invitations
- Revoke invitations
6. User Profile
Purpose: View your Calendly profile and settings
Features:
- Display user information
- Show avatar and scheduling URL
- List availability schedules
- Show schedule rules and timezones
7. Analytics Dashboard
Purpose: Overview of your Calendly metrics
Features:
- Total events count
- Active vs canceled events
- Total invitees
- Event types count
- No-shows tracking
8. Availability Manager
Purpose: Manage your availability schedules
Features:
- View all availability schedules
- Show weekly rules with time slots
- Display timezone information
- Highlight default schedule
9. Event Detail View
Purpose: View detailed information about events
Features:
- Select and view specific events
- Show all event metadata
- List all invitees
- Cancel events
10. No-Show Tracker
Purpose: Track and manage no-show invitees
Features:
- List all no-shows across events
- Show event and invitee details
- Remove no-show markings
- Display no-show count
11. Routing Form Builder
Purpose: Manage routing forms and view submissions
Features:
- List all routing forms
- View form questions and structure
- Show all submissions
- Display routing results
12. Scheduling Link Manager
Purpose: Generate single-use scheduling links
Features:
- Select event type
- Set maximum event count
- Generate unique booking URLs
- Copy links to clipboard
Examples
List Event Types
const result = await callTool('calendly_list_event_types', {
user: 'https://api.calendly.com/users/AAAA',
active: true
});
Create Event Type
const eventType = await callTool('calendly_create_event_type', {
name: '30 Minute Meeting',
duration: 30,
owner: 'https://api.calendly.com/users/AAAA',
description_plain: 'A quick 30-minute chat',
color: '#0066cc'
});
List Upcoming Events
const events = await callTool('calendly_list_events', {
user: 'https://api.calendly.com/users/AAAA',
min_start_time: new Date().toISOString(),
status: 'active',
sort: 'start_time:asc'
});
Create Webhook
const webhook = await callTool('calendly_create_webhook', {
url: 'https://example.com/webhook',
events: ['invitee.created', 'invitee.canceled'],
organization: 'https://api.calendly.com/organizations/AAAA',
scope: 'organization'
});
Generate Scheduling Link
const link = await callTool('calendly_create_scheduling_link', {
max_event_count: 1,
owner: 'https://api.calendly.com/event_types/AAAA',
owner_type: 'EventType'
});
API Coverage
This MCP server covers 100% of Calendly API v2 endpoints:
- ✅ Users
- ✅ Organizations (Invitations, Memberships)
- ✅ Event Types (Full CRUD)
- ✅ Scheduled Events
- ✅ Invitees
- ✅ No-Shows
- ✅ Webhooks
- ✅ Scheduling Links
- ✅ Routing Forms & Submissions
- ✅ User Availability Schedules
- ✅ Activity Logs
- ✅ Data Compliance (GDPR)
Development
Build
npm run build
Test
npm test
Development Mode
npm run dev
Architecture
src/
├── server.ts # MCP server setup
├── main.ts # Entry point
├── clients/
│ └── calendly.ts # Calendly API client
├── tools/ # Tool definitions by domain
│ ├── users-tools.ts
│ ├── organizations-tools.ts
│ ├── event-types-tools.ts
│ ├── events-tools.ts
│ ├── invitees-tools.ts
│ ├── webhooks-tools.ts
│ ├── scheduling-tools.ts
│ ├── routing-forms-tools.ts
│ ├── availability-tools.ts
│ └── compliance-tools.ts
├── types/
│ └── index.ts # TypeScript interfaces
└── ui/
└── react-app/ # React apps
├── src/
│ ├── apps/ # Individual apps
│ ├── components/ # Shared components
│ ├── hooks/ # Shared hooks
│ └── styles/ # Shared styles
└── package.json
License
MIT
Support
For issues or questions:
- GitHub: BusyBee3333/mcpengine
- Calendly API Docs: https://developer.calendly.com
Contributing
Contributions welcome! Please open an issue or PR.
Built with ❤️ using the Model Context Protocol