日历管理服务器

一个与Google Calendar API集成的MCP服务器,允许AI助手管理日历、创建和更新事件、查找可用时间等。

  • by daemonX10
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 daemonx10/google-calendar-mcp-server

使用说明

谷歌日历MCP服务器

这是一个模型上下文协议(MCP)服务器,与谷歌日历API集成,允许人工智能助手管理日历、创建和更新事件、查找可用的时间段等。

特性

  • 列出所有可用日历
  • 列出具有筛选选项的事件
  • 创建、更新和删除事件
  • 获取特定事件的详细信息
  • 在日历中查找可用的时间段
  • 获取即将举行的会议的状态(正在进行、即将举行、过去)
  • 支持重复事件
  • 会议与会者管理

设置

先决条件

  • Node.js 16+
  • 启用日历API的谷歌云项目
  • OAuth 2.0客户端凭据

安装

选项1:本地安装

  1. 克隆此存储库
    git clone https://github.com/daemonX10/Google-Calendar-MCP-Server.git
    cd Google-Calendar-MCP-Server
    
  2. 安装依赖项:
    npm install
    
  3. 创建一个 .env 文件与您的Google API凭据(您可以从 .env.example):
    GOOGLE_CLIENT_ID=your_client_id
    GOOGLE_CLIENT_SECRET=your_client_secret
    GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback
    

选项2:使用Docker(推荐)

  1. 克隆此存储库
    git clone https://github.com/daemonX10/Google-Calendar-MCP-Server.git
    cd Google-Calendar-MCP-Server
    
  2. 复制示例环境文件:
    cp .env.example .env
    
  3. 编辑 .env 使用您的Google API证书提交
  4. 构建并启动Docker容器:
    docker-compose up -d
    

谷歌云设置

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 在API库中启用Google日历API
  4. 创建OAuth 2.0凭据:
    • 转到API和服务>凭据
    • 点击“创建凭据”>“OAuth客户端ID”
    • 选择“Web应用程序”作为应用程序类型
    • 添加 http://localhost:3000/auth/callback 作为授权重定向URI
    • 将客户端ID和客户端密码复制到您的 .env 文件
  5. 设置OAuth同意屏幕:
    • 转到API和服务>OAuth同意屏幕
    • 填写所需信息(应用程序名称、用户支持电子邮件等)
    • 添加必要的范围(https://www.googleapis.com/auth/calendar 和 https://www.googleapis.com/auth/calendar.events)
    • 将您的电子邮件地址添加为测试用户

认证

首次身份验证

  1. 启动服务器:
    npx ts-node src/index.ts
    
  2. 您将在控制台输出中看到一个URL。在浏览器中打开此URL以授权应用程序。
  3. 授权后,您将被重定向到一个带有代码参数的URL。复制此代码。
  4. 使用身份验证助手保存刷新令牌:
    npx ts-node src/auth-helper.ts "YOUR_AUTH_CODE"
    
    这将自动将刷新令牌保存到您的 .env 文件并测试连接。
  5. 您现在可以使用MCP服务器了!

身份验证故障排除

如果遇到身份验证问题:

  1. 确保您的Google Cloud OAuth凭据已正确设置,并具有精确的重定向URI
  2. 如果您收到“invalid_grant”错误,则授权码可能已过期——它们只持续几分钟
  3. 如果您之前已授权该应用程序,则可能需要撤销其访问权限 Google帐户权限 然后重试
  4. 确保您已将电子邮件添加为Google Cloud Console OAuth同意屏幕中的测试用户

运行服务器

发展模式

npm run dev

生产模式

选项1:Node.js

  1. 构建服务器:
    npm run build
    
  2. 启动服务器:
    npm start
    

选项2:Docker(推荐)

# Build and start the container
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the container
docker-compose down

Docker Hub镜像

您还可以使用我们预构建的Docker镜像:

# Pull the image
docker pull daemonx10/google-calendar-mcp:latest

# Run the container (create a .env file first)
docker run -d -p 3000:3000 --name google-calendar-mcp --env-file ./.env daemonx10/google-calendar-mcp:latest

与AI助手集成

{
  "mcp": {
    "servers": {
      "google-calendar": {
        "command": "node",
        "args": ["/absolute/path/to/mcp-google-calendar/dist/index.js"],
        "env": {
          "GOOGLE_CLIENT_ID": "your_client_id",
          "GOOGLE_CLIENT_SECRET": "your_client_secret",
          "GOOGLE_REDIRECT_URI": "http://localhost:3000/auth/callback",
          "GOOGLE_REFRESH_TOKEN": "your_refresh_token"
        }
      }
    }
  }
}

对于Claude Desktop,您需要首先使用以下命令构建项目 npm run build.

Claude.ai Web集成

对于Claude.ai网站,您需要:

  1. 让服务器在您的计算机上本地运行
  2. 使用以下解决方案 Claude MCP浏览器扩展 将Claude.ai连接到本地MCP服务器

其他人工智能助理

对于支持模型上下文协议的其他AI助手:

  1. 保持服务器在端口3000上运行
  2. 配置助手以连接到 http://localhost:3000 用于Google日历MCP服务器
  3. 有关具体的MCP集成步骤,请参阅您的助手的文档

使用MCP服务器

一旦与您选择的AI助手集成,您就可以使用自然语言命令与Google日历进行交互。例如:

  • “显示我今天的日历”
  • “明天下午2点与约翰就项目规划举行会议”
  • “在我的日历中查找本周可用的30分钟时段”
  • “将我下午3点的会议重新安排到下午4点”
  • “取消我与Sarah的会面”

可用工具

列表_日历

列出所有可用日历。

list_事件

在日历中列出具有筛选选项的事件。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • maxResults (可选):要返回的最大事件数
  • timeMin (可选):ISO格式的开始时间(默认值:现在)
  • timeMax (可选):ISO格式的结束时间
  • q (可选):用于查找事件的搜索词

create_event

在日历中创建新事件。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • summary:事件标题
  • description (可选):事件描述
  • location (可选):活动地点
  • start:ISO格式的开始时间
  • end:ISO格式的结束时间
  • attendees (可选):与会者的电子邮件地址列表
  • reminders (可选):事件提醒配置
  • recurrence (可选):重复事件的重复规则

get_event

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

  • calendarId (可选):日历ID(默认值:“主”)
  • eventId:事件ID

update_事件

更新日历中的现有事件。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • eventId:事件ID
  • summary (可选):事件标题
  • description (可选):事件描述
  • location (可选):活动地点
  • start (可选):ISO格式的开始时间
  • end (可选):ISO格式的结束时间
  • attendees (可选):与会者的电子邮件地址列表
  • reminders (可选):事件提醒配置

删除事件

从日历中删除事件。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • eventId:事件ID

查找可用地块

在日历中查找可用的时间段。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • timeMin (可选):ISO格式的开始时间(默认值:现在)
  • timeMax (可选):ISO格式的结束时间
  • duration (可选):持续时间(分钟)
  • workingHoursStart (可选):工作时间开始时间(例如“09:00”)
  • workingHoursEnd (可选):工作时间结束时间(例如“17:00”)

get_upcoming_meetings

获取今天或特定日期即将举行的会议。 参数:

  • calendarId (可选):日历ID(默认值:“主”)
  • date (可选):ISO格式的日期(默认值:今天)

安全考虑

  • 此MCP服务器在您的计算机上本地运行,因此您的日历数据永远不会通过外部服务器
  • OAuth刷新令牌存储在.env文件中,请确保其安全
  • 服务器在与谷歌API通信时使用HTTPS
  • 将此服务器暴露于外部网络时请小心

故障排除

服务器无法启动

  • 检查Node.js是否已安装并且是最新的
  • 验证所有依赖项是否已安装 npm install
  • 确保.env文件具有正确的凭据
  • 检查TypeScript错误 npx tsc --noEmit

身份验证问题

  • 确保您的Google Cloud OAuth凭据与.env文件中的凭据匹配
  • 从取消应用程序访问 Google帐户权限 然后重试
  • 确保您的电子邮件已作为测试用户添加到Google Cloud Console中
  • 检查您的重定向URI是否与Google Cloud控制台中的URI完全匹配

整合问题

  • 验证配置文件中的路径是否绝对正确
  • 在尝试将服务器与AI助手一起使用之前,请确保服务器正在运行
  • 检查助手的日志是否存在连接错误
  • 对于Claude Desktop,请确保您已使用 npm run build

许可证

麻省理工学院