Skip to main content
Glama
84emllc
by 84emllc
README.md
# 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

A3.6/5.0

Scored across 12 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues