Calendly MCP Server
# Calendly MCP Server
> Fork of [meAmitPatil/calendly-mcp-server](https://github.com/meAmitPatil/calendly-mcp-server) with Scheduling API integration and OAuth 2.0 support.
A Model Context Protocol (MCP) server for the Calendly API. Manage events, invitees, and schedule meetings directly via AI assistants.
## Installation
### Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"calendly": {
"command": "npx",
"args": ["-y", "calendly-mcp-server"],
"env": {
"CALENDLY_API_KEY": "your_personal_access_token_here"
}
}
}
}
```
### Cursor
Add to your Cursor MCP settings:
```json
{
"mcpServers": {
"calendly": {
"command": "npx",
"args": ["-y", "calendly-mcp-server"],
"env": {
"CALENDLY_API_KEY": "your_personal_access_token_here"
}
}
}
}
```
## Configuration
| Variable | Required | Description |
|----------|----------|-------------|
| `CALENDLY_API_KEY` | Yes* | Personal Access Token ([get one here](https://calendly.com/integrations)) |
| `CALENDLY_CLIENT_ID` | Yes* | OAuth 2.0 client ID (alternative to PAT) |
| `CALENDLY_CLIENT_SECRET` | Yes* | OAuth 2.0 client secret |
| `CALENDLY_ACCESS_TOKEN` | No | OAuth access token (if already obtained) |
| `CALENDLY_REFRESH_TOKEN` | No | OAuth refresh token |
| `CALENDLY_USER_URI` | No | User URI for automatic defaults |
| `CALENDLY_ORGANIZATION_URI` | No | Organization URI for automatic defaults |
*Either `CALENDLY_API_KEY` or OAuth credentials (`CALENDLY_CLIENT_ID` + `CALENDLY_CLIENT_SECRET`) are required.
## Tools (12)
### OAuth
| Tool | Description |
|------|-------------|
| `get_oauth_url` | Generate OAuth authorization URL |
| `exchange_code_for_tokens` | Exchange authorization code for tokens |
| `refresh_access_token` | Refresh an expired access token |
### API
| Tool | Description |
|------|-------------|
| `get_current_user` | Get authenticated user info |
| `list_events` | List scheduled events with filtering |
| `get_event` | Get event details |
| `list_event_invitees` | List invitees for an event |
| `cancel_event` | Cancel a scheduled event |
| `list_organization_memberships` | List organization memberships |
### Scheduling API
| Tool | Description |
|------|-------------|
| `list_event_types` | List available event types |
| `get_event_type_availability` | Check available time slots |
| `schedule_event` | Book a meeting (requires paid Calendly plan) |
## API Limitations
- **Scheduling API** requires a paid Calendly plan (Standard or higher)
- Event rescheduling is not supported via API (only cancellation)
- Event type creation is not available via API
- Standard Calendly API rate limits apply
## Contributing
Pull requests welcome. See the [upstream project](https://github.com/meAmitPatil/calendly-mcp-server) for the original implementation.
## License
MIT License. See [LICENSE](LICENSE) for details.
## Credits
- Original implementation by [Amit Patil](https://github.com/meAmitPatil)
- Fork maintained by [84em.io](https://84em.io)
TDQS
Scored across 12 tools
Each tool targets a distinct resource and action: authentication (refresh_access_token, get_oauth_url, exchange_code_for_tokens), user info (get_current_user), events (list_events, get_event, cancel_event, schedule_event), invitees (list_event_invitees), organization (list_organization_memberships), event types (list_event_types), and availability (get_event_type_availability). No ambiguity between list_events and get_event; they clearly differ in scope.
All tool names follow a consistent verb_noun pattern in lowercase snake_case (e.g., list_events, get_event, cancel_event, schedule_event). Verbs are specific and non-repetitive across different resources, and no mixed naming conventions are present.
With 12 tools, the server is well-scoped for a Calendly integration. It covers authentication, user, events, invitees, organization memberships, event types, availability, and scheduling without feeling bloated or sparse.
Core workflows are covered: OAuth authentication, viewing user info, listing and getting events, listing invitees, cancelling events, listing event types, fetching availability, and scheduling. Minor gaps exist such as creating/updating event types or rescheduling events, but these are not critical for the primary scheduling use case.