日程管理服务器

一个用于与Calendly API集成的模型上下文协议(MCP)服务器,提供用户信息获取、事件管理、邀请人管理及直接会议安排等功能。

  • by meAmitPatil
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 meAmitPatil/calendly-mcp-server

使用说明

Calendly MCP 服务器

一个用于与Calendly API集成的模型上下文协议(MCP)服务器。该服务器提供了与Calendly日程安排平台交互的工具,使您能够检索用户信息、列出事件、管理受邀者、取消事件,并 直接通过新的日程安排API安排会议.

特点/功能

与Calendly的核心集成

  • 用户信息获取当前已认证用户详情
  • 活动管理列出、检索和取消已安排的事件
  • 受邀者管理列出并管理活动邀请嘉宾
  • 组织列出组织成员列表

新功能:调度API集成

  • 直接会议安排通过编程方式安排会议,无需重定向
  • 事件类型发现列出可用于调度的可用事件类型
  • 实时可用性检查任何活动类型可用的时间段
  • 完整的预订流程端到端调度,支持日历同步和通知提醒
  • 位置支持Zoom、Google Meet、Teams、实体地点以及自定义选项

安装

选项1:NPX(推荐)

无需安装,直接运行:

npx calendly-mcp-server

选项2:手动安装

  1. 克隆此仓库:
git clone https://github.com/meAmitPatil/calendly-mcp-server.git
cd calendly-mcp-server
  1. 安装依赖项:
npm install
  1. 构建项目:
npm run build

配置

认证

此服务器支持两种认证方法:

选项1:个人访问令牌(PAT)

用于内部应用或个人使用:

  1. 从您的(账户/平台)获取个人访问令牌 Calendly 集成页面
  2. 选择 API和webhooks → 立即获取令牌
  3. 设置环境变量:
export CALENDLY_API_KEY="your_personal_access_token_here"

选项2:OAuth 2.0

对于多个用户将使用的公共应用程序:

  1. 在(某平台/网站)创建一个开发者账户 developer.calendly.com 翻译为中文是:“开发者.calendly.com” 或者更自然地表达为:“Calendly 开发者网站”
  2. 创建一个OAuth应用程序以获取您的客户端凭据
  3. 设置环境变量:
export CALENDLY_CLIENT_ID="your_client_id_here"
export CALENDLY_CLIENT_SECRET="your_client_secret_here"
  1. 可选地,如果您已经有了代币:
export CALENDLY_ACCESS_TOKEN="your_access_token_here"
export CALENDLY_REFRESH_TOKEN="your_refresh_token_here"

可选用户上下文(建议)

为了获得更好的性能和自动默认设置,您可以设置特定于用户的URI:

export CALENDLY_USER_URI="https://api.calendly.com/users/your_user_id"
export CALENDLY_ORGANIZATION_URI="https://api.calendly.com/organizations/your_org_id"

这些可以通过运行(程序/命令等)来获得 get_current_user 认证后。当设置时,服务器将自动将这些作为需要用户上下文的API调用的默认值。

MCP配置

将服务器添加到您的MCP客户端配置中(例如,Claude Desktop):

选项1:使用NPX(推荐)

对于个人访问令牌:

{
  "mcpServers": {
    "calendly": {
      "command": "npx",
      "args": ["calendly-mcp-server"],
      "env": {
        "CALENDLY_API_KEY": "your_personal_access_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

对于OAuth 2.0:

{
  "mcpServers": {
    "calendly": {
      "command": "npx",
      "args": ["calendly-mcp-server"],
      "env": {
        "CALENDLY_CLIENT_ID": "your_client_id_here",
        "CALENDLY_CLIENT_SECRET": "your_client_secret_here",
        "CALENDLY_ACCESS_TOKEN": "your_access_token_here",
        "CALENDLY_REFRESH_TOKEN": "your_refresh_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

选项2:使用本地安装

对于个人访问令牌:

{
  "mcpServers": {
    "calendly": {
      "command": "node",
      "args": ["path/to/calendly-mcp-server/dist/index.js"],
      "env": {
        "CALENDLY_API_KEY": "your_personal_access_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

对于OAuth 2.0:

{
  "mcpServers": {
    "calendly": {
      "command": "node",
      "args": ["path/to/calendly-mcp-server/dist/index.js"],
      "env": {
        "CALENDLY_CLIENT_ID": "your_client_id_here",
        "CALENDLY_CLIENT_SECRET": "your_client_secret_here",
        "CALENDLY_ACCESS_TOKEN": "your_access_token_here",
        "CALENDLY_REFRESH_TOKEN": "your_refresh_token_here",
        "CALENDLY_USER_URI": "https://api.calendly.com/users/your_user_id",
        "CALENDLY_ORGANIZATION_URI": "https://api.calendly.com/organizations/your_org_id"
      }
    }
  }
}

可用工具(共12个)

所有工具均可通过Claude Desktop或任何MCP客户端无缝工作

OAuth 2.0 工具

get_oauth_url

为用户身份验证生成OAuth授权URL。

参数:

  • redirect_uri (必填):您的OAuth应用程序的重定向URI
  • state (可选):用于安全性的可选状态参数

exchange_code_for_tokens

用授权码换取访问令牌和刷新令牌。

参数:

  • code (必需):来自OAuth回调的授权码
  • redirect_uri (必填):授权时使用的重定向URI

refresh_access_token

使用刷新令牌刷新访问令牌。

参数:

  • refresh_token (必填):要使用的刷新令牌

API工具

get_current_user

获取当前已认证用户的信息。

list_events

列出计划事件,并可选择性地进行过滤。

参数:

  • user_uri (可选):要列出事件的用户的URI(使用 CALENDLY_USER_URI (如未提供)
  • organization_uri (可选):用于过滤事件的组织的URI
  • status (可选):按状态过滤(“激活”或“已取消”)
  • max_start_time (可选):最大开始时间(ISO 8601 格式)
  • min_start_time (可选):最开始时间(ISO 8601 格式)
  • count (可选):要返回的事件数量(默认20,最大100)

get_event

获取特定事件的详细信息。

参数:

  • event_uuid (必需):要检索的事件的 UUID

list_event_invitees

列出特定活动的受邀者名单。

参数:

  • event_uuid (必填):事件的 UUID
  • status (可选):按状态过滤(“激活”或“已取消”)
  • email (可选):按电子邮件地址筛选
  • count (可选):要返回的邀请者数量(默认20,最大100)

cancel_event

取消一个特定的事件。

参数:

  • event_uuid (必填):要取消的事件的 UUID
  • reason (可选):取消原因

list_organization_memberships

列出已认证用户的组织成员身份。

参数:

  • user_uri (可选):用户的URI(使用 CALENDLY_USER_URI (若未提供)
  • organization_uri (可选):组织的URI
  • email (可选):按电子邮件过滤
  • count (可选):要返回的会员数量(默认20,最大100)

调度API工具

list_event_types

列出可用于安排会议的可用事件类型。

参数:

  • user (可选):要列出事件类型的用户的URI
  • organization (可选):用于过滤事件类型的组织URI
  • count (可选):要返回的事件类型数量(默认20,最大100)

get_event_type_availability

获取特定活动类型可用的时间段。

参数:

  • event_type (必填):要检查可用性的事件类型的URI
  • start_time (可选):可用时间段的开始时间(ISO 8601 格式)
  • end_time (可选):可用性窗口的结束时间(ISO 8601 格式)

schedule_event

为特定的活动类型和时间创建邀请对象,以安排会议。

要求: 付费Calendly计划(标准版或更高级别)

参数:

  • event_type (必填):要安排的事件类型的URI
  • start_time (必填):活动开始时间(ISO 8601 UTC 格式)
  • invitee_email (必填):受邀者的电子邮件地址
  • invitee_timezone (必填):受邀者的时区(例如,America/New_York)
  • invitee_name (可选):受邀者的全名
  • invitee_first_name (可选):受邀者的名
  • invitee_last_name (可选):受邀者的姓氏
  • invitee_phone (可选):用于短信提醒的电话号码(E.164格式)
  • location_kind (可选):会议地点类型(Zoom会议、Google会议、线下会议等)
  • location_details (可选):地点详情(线下会议时必填)
  • event_guests (可选):附加电子邮件地址的数组(最多10个)
  • questions_and_answers (可选):问题/答案对数组
  • utm_source, utm_campaign, utm_medium (可选):UTM追踪参数

使用示例

一旦使用您的MCP客户端进行配置,您就可以使用这些工具:

现场演示

以下是MCP服务器与Claude Desktop协同工作的场景:

示例:用户询问“显示我的Calendly日程”,并获得格式化的事件详情,包括日期、时间、持续时间、地点和受邀者信息。

OAuth 流程示例:

# Generate OAuth URL
get_oauth_url redirect_uri="https://myapp.com/auth/callback"

# Exchange code for tokens (after user authorizes)
exchange_code_for_tokens code="AUTHORIZATION_CODE" redirect_uri="https://myapp.com/auth/callback"

# Refresh access token
refresh_access_token refresh_token="REFRESH_TOKEN"

API 示例:

# Get current user information
get_current_user

# List recent events
list_events count=10

# Get specific event details
get_event event_uuid="EVENT_UUID_HERE"

# List invitees for an event
list_event_invitees event_uuid="EVENT_UUID_HERE"

# Cancel an event
cancel_event event_uuid="EVENT_UUID_HERE" reason="Meeting no longer needed"

调度API示例:

# List available event types
list_event_types

# Check availability for a specific event type
get_event_type_availability event_type="https://api.calendly.com/event_types/AAAAAAAAAAAAAAAA"

# Schedule a meeting (requires paid plan)
schedule_event event_type="https://api.calendly.com/event_types/AAAAAAAAAAAAAAAA" start_time="2025-10-21T19:00:00Z" invitee_email="client@company.com" invitee_name="John Smith" invitee_timezone="America/New_York" location_kind="zoom_conference"

🎯 Claude Desktop 示例:

# Natural language commands that work in Claude Desktop:
"Show me my event types"
"Check availability for my 30-minute consultation next week"
"Schedule a meeting with john@company.com for tomorrow at 2 PM"
"Book a client onboarding call for Friday"

API限制

  • 调度API需要付费的Calendly计划(标准版或更高版本)
  • 活动重新安排不支持通过API操作(仅支持取消)
  • 事件类型创建无法通过API创建新的事件类型
  • 速率限制标准Calendly API速率限制适用

故障排除

NPX问题

  • **“命令未找到:npx”**安装 Node.js 18 或更高版本,其中包含 npx
  • 每次NPX下载这是正常行为;NPX 会缓存包以便后续运行更快
  • 权限错误确保您对 npm 缓存目录有写入权限npm config get cache)
  • 网络问题使用 npx --offline calendly-mcp-server 使用缓存版本

身份验证问题

  • **“没有可用的认证令牌”**设定 CALENDLY_API_KEY 环境变量
  • **出现400个错误 list_events**设置 CALENDLY_USER_URI 环境变量或提供 user_uri 参数
  • 权限错误确保API密钥具有正确的权限

调度API问题

  • **403 禁止访问 schedule_event**需要付费的Calendly计划(标准或更高版本)
  • **400 请求错误(或:不良请求)**检查事件类型URI是否有效,以及开始时间是否为正确的UTC格式
  • 无效的时间段使用 get_event_type_availability 验证时间段是否可用

一般问题

  • TypeScript 错误确保已安装 Node.js 版本 18 或更高版本
  • 模块未找到跑 npm run build 如果使用本地安装

发展

快速入门开发

# Test with NPX (recommended for users)
npx calendly-mcp-server

# Test with MCP Inspector
npx @modelcontextprotocol/inspector npx calendly-mcp-server

# Clone for development
git clone <repository-url>
cd calendly-mcp-server
npm install
npm run build

脚本

  • npm run build构建TypeScript代码
  • npm run dev以开发模式运行,自动重新加载
  • npm start运行构建好的服务器

项目结构

src/
├── index.ts          # Main server implementation
├── types.ts          # TypeScript type definitions (if needed)
└── utils.ts          # Utility functions (if needed)

贡献

  1. 克隆该仓库
  2. 创建一个特性分支
  3. 做出你的更改
  4. 彻底测试
  5. 提交拉取请求

许可证

MIT 许可证 - 详情请参阅 LICENSE 文件。

支持

对于此MCP服务器的问题,请在仓库中创建一个问题。 对于Calendly API文档,请访问 Calendly 开发者门户。