Jake Shore 8e9d1ffb87 calendly: Complete MCP server with 27 tools and 12 React apps
- Calendly API v2 client with auth, pagination, error handling
- 27 MCP tools across 6 categories (events, event types, scheduling, users, orgs, webhooks)
- 12 React MCP apps with dark theme and client-side state
- Both stdio and HTTP modes supported
- Full TypeScript types and documentation
2026-02-12 17:08:15 -05:00

182 lines
5.0 KiB
Markdown

# Calendly MCP Server
Complete Model Context Protocol (MCP) server for Calendly API v2 with 27 tools and 12 React UI apps.
## Features
### 🛠️ 27 MCP Tools
**Events (8 tools)**
- `calendly_list_scheduled_events` - List events with filters
- `calendly_get_event` - Get event details
- `calendly_cancel_event` - Cancel an event
- `calendly_list_event_invitees` - List invitees for an event
- `calendly_get_invitee` - Get invitee details
- `calendly_list_no_shows` - List no-shows
- `calendly_mark_no_show` - Mark invitee as no-show
- `calendly_unmark_no_show` - Remove no-show status
**Event Types (3 tools)**
- `calendly_list_event_types` - List event types
- `calendly_get_event_type` - Get event type details
- `calendly_list_available_times` - List available time slots
**Scheduling (3 tools)**
- `calendly_create_scheduling_link` - Create single-use scheduling link
- `calendly_list_routing_forms` - List routing forms
- `calendly_get_routing_form` - Get routing form details
**Users (3 tools)**
- `calendly_get_current_user` - Get current user info
- `calendly_get_user` - Get user by URI
- `calendly_list_user_busy_times` - List user busy times
**Organizations (6 tools)**
- `calendly_get_organization` - Get organization details
- `calendly_list_organization_members` - List members
- `calendly_list_organization_invitations` - List invitations
- `calendly_invite_user` - Invite user to organization
- `calendly_revoke_invitation` - Revoke invitation
- `calendly_remove_organization_member` - Remove member
**Webhooks (4 tools)**
- `calendly_list_webhook_subscriptions` - List webhooks
- `calendly_create_webhook_subscription` - Create webhook
- `calendly_get_webhook_subscription` - Get webhook details
- `calendly_delete_webhook_subscription` - Delete webhook
### 🎨 12 React MCP Apps
All apps feature dark theme and client-side state management:
1. **Event Dashboard** (`src/ui/react-app/event-dashboard`) - Overview of scheduled events
2. **Event Detail** (`src/ui/react-app/event-detail`) - Detailed event information
3. **Event Grid** (`src/ui/react-app/event-grid`) - Calendar grid view
4. **Event Type Manager** (`src/ui/react-app/event-type-manager`) - Manage event types
5. **Availability Calendar** (`src/ui/react-app/availability-calendar`) - View available times
6. **Invitee List** (`src/ui/react-app/invitee-list`) - Manage event invitees
7. **Scheduling Links** (`src/ui/react-app/scheduling-links`) - Create scheduling links
8. **Organization Members** (`src/ui/react-app/org-members`) - Manage team members
9. **Webhook Manager** (`src/ui/react-app/webhook-manager`) - Manage webhooks
10. **Booking Flow** (`src/ui/react-app/booking-flow`) - Multi-step booking interface
11. **No-Show Tracker** (`src/ui/react-app/no-show-tracker`) - Track no-shows
12. **Analytics Dashboard** (`src/ui/react-app/analytics-dashboard`) - Metrics and insights
## Installation
```bash
npm install
npm run build
```
## Configuration
Set your Calendly API key as an environment variable:
```bash
export CALENDLY_API_KEY="your_api_key_here"
```
Get your API key from: https://calendly.com/integrations/api_webhooks
## Usage
### Stdio Mode (Default for MCP)
```bash
npm start
```
Use in your MCP client configuration:
```json
{
"mcpServers": {
"calendly": {
"command": "node",
"args": ["/path/to/calendly/dist/main.js"],
"env": {
"CALENDLY_API_KEY": "your_api_key"
}
}
}
}
```
### HTTP Mode
```bash
npm run start:http
```
Server runs on `http://localhost:3000`
Endpoints:
- `GET /health` - Health check
- `POST /` - MCP requests (tools/list, tools/call, resources/list, resources/read)
## API Client
The Calendly client (`src/clients/calendly.ts`) provides:
- ✅ Full Calendly API v2 support
- ✅ Bearer token authentication
- ✅ Automatic pagination handling
- ✅ Error handling with detailed messages
- ✅ Type-safe responses
## Architecture
```
src/
├── clients/
│ └── calendly.ts # Calendly API v2 client
├── tools/
│ ├── events-tools.ts # Event management tools
│ ├── event-types-tools.ts # Event type tools
│ ├── scheduling-tools.ts # Scheduling & routing tools
│ ├── users-tools.ts # User management tools
│ ├── organizations-tools.ts # Organization tools
│ └── webhooks-tools.ts # Webhook tools
├── types/
│ └── index.ts # TypeScript definitions
├── ui/
│ └── react-app/ # 12 React MCP apps
├── server.ts # MCP server setup
└── main.ts # Entry point (stdio + HTTP)
```
## Development
### Build
```bash
npm run build
```
### Watch Mode
```bash
npm run dev
```
### Run React Apps
Each app is standalone:
```bash
cd src/ui/react-app/event-dashboard
npm install
npm run dev
```
## Resources
- Calendly API Documentation: https://developer.calendly.com/api-docs
- Model Context Protocol: https://modelcontextprotocol.io
- MCP SDK: https://github.com/modelcontextprotocol/typescript-sdk
## License
MIT