返回市场
MCP谷歌日历服务器

MCP谷歌日历服务器

作者:guinacio3 星标更新:2025-08-16

项目介绍

Google 日历 MCP 服务器

这是一个模型上下文协议(MCP)服务器,允许 Claude 和其他 MCP 客户端与 Google 日历进行交互。此服务器使AI助手能够管理您的日历事件、检查可用性并处理调度任务。

功能

日历管理

  • 列出事件 (get-events)

    • 查看来自任何日历的事件
    • 按时间段过滤
    • 限制结果数量
  • 列出日历 (list-calendars)

    • 查看所有可用的日历
    • 访问日历ID和设置
  • 获取时区信息 (get-timezone-info)

    • 获取用户的时区信息
  • 获取当前日期 (get-current-date)

    • 获取用户时区中的当前日期和时间
    • 对于知识截止日期过时的AI模型非常有用

事件操作

  • 创建事件 (create-event)

    • 使用完整的功能支持安排新事件
    • 添加参与者并设置提醒
    • 包括会议链接和附件
    • 设置可见性、透明度和颜色
    • 配置重复事件
    • 自动检测时区冲突
  • 更新事件 (update-event)

    • 修改现有事件
    • 更改时间和日期,并检查冲突
    • 增加或删除参与者
    • 更新任何事件详情
    • 控制通知设置
  • 删除事件 (delete-event)

    • 从日历中删除事件
    • 控制参与者的通知设置

可用性管理

  • 检查可用性 (check-availability)
    • 检查多个日历的空闲/忙碌状态
    • 支持时区感知
  • 支持检查其他用户的可用性

要求

  • Python >= 3.12
  • 启用了日历API的Google Cloud Console项目
  • OAuth 2.0 凭据

安装

1. 设置Google Cloud项目

  1. 前往 Google Cloud Console
  2. 创建一个新项目或选择现有项目
  3. 启用Google日历API
  4. 创建OAuth 2.0凭据(桌面应用类型)
  5. 下载凭据并保存为 credentials.json 在 \mcp_server_google_calendar 文件夹中

2. 安装包

# 克隆或下载项目
cd mcp-google-calendar

# 安装包
pip install -e .

3. 认证设置

首次运行时,服务器会自动打开浏览器进行OAuth认证。您的凭据将被保存以供将来使用。

使用

此服务器可以两种模式运行:

STDIO模式(适用于Claude Desktop)

配置Claude Desktop:

在您的Claude Desktop配置文件中添加以下内容:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "google_calendar": {
      "command": "mcp-server-google-calendar"
    }
  }
}

或者使用Python模块:

{
  "mcpServers": {
    "google_calendar": {
      "command": "python",
      "args": ["-m", "mcp_server_google_calendar"]
    }
  }
}

配置更改后重启Claude Desktop。

SSE模式(适用于Web应用程序和其他客户端)

使用SSE传输运行服务器:

# 使用已安装的命令
mcp-server-google-calendar-sse

# 或使用Python模块
python -m mcp_server_google_calendar.server_sse

# 使用自定义主机/端口
python -m mcp_server_google_calendar.server_sse --host 0.0.0.0 --port 8001

SSE服务器将在以下位置可用:

  • 服务器: http://localhost:8000
  • SSE端点: http://localhost:8000/sse

示例命令

这里有一些您可以向Claude询问的内容:

事件创建

  • "创建一个名为'团队会议'的事件,定于明天下午2点"
  • "安排每周一上午10点的定期会议"
  • "为下周二下午与John安排视频通话"

事件管理

  • "将我下午2点的会议移到下午4点"
  • "将Jane(jane@example.com)添加到明天的团队会议"
  • "取消我与John的会议"
  • "更新今天团队午餐的位置"

日历查询

  • "这周我有哪些会议?"
  • "我明天下午什么时候有空?"
  • "检查Alice和Bob下周一三点是否都可用"
  • "列出我所有的定期事件"

日期/时间信息

  • "今天的日期是什么?"(对于知识过时的模型很有用)
  • "今天是星期几?"
  • "我的当前时区是什么?"

高级功能

时间冲突检测

服务器在创建或更新事件时会自动检查时间冲突,并会在发现重叠事件时警告您。

时区支持

  • 从您的Google日历设置中自动检测时区
  • 为事件手动指定时区
  • 正确处理时区转换

定期事件

完全支持使用iCalendar RRULE格式的定期事件:

  • 每天、每周、每月、每年的模式
  • 自定义重复规则
  • 异常日期和规则

参与者管理

  • 添加/删除参与者并验证电子邮件地址
  • 设置可选与必填参与者
  • 控制响应状态和通知
  • 支持额外的嘉宾

故障排除

认证问题

  • 确保 credentials.json 在项目根目录中
  • 检查Google Cloud Console中的OAuth同意屏幕是否已配置
  • 验证日历API是否已启用
  • 如需重新认证,请删除 token.json

服务器连接问题

  • 验证Python版本(需要>= 3.12)
  • 检查Claude Desktop配置文件的语法
  • 配置更改后重启Claude Desktop
  • 对于SSE模式,确保端口未被占用

事件创建问题

  • 确认Google日历中的日历权限
  • 检查与现有事件的时间冲突
  • 验证参与者电子邮件地址是否有效
  • 确保时区格式正确

文件结构

mcp-google-calendar/
├── mcp_server_google_calendar/
│   ├── __init__.py
│   ├── __main__.py          # STDIO模式入口点
│   ├── __main_sse__.py      # SSE模式入口点
│   ├── credentials.json      # Google OAuth凭据(您提供)
│   ├── server.py            # STDIO服务器实现
│   ├── server_sse.py        # SSE服务器实现
│   ├── schemas.py           # Pydantic模式
│   ├── auth/                # 认证模块
│   ├── tools/               # 工具定义
│   └── utils/               # 实用函数
├── token.json              # 保存的认证令牌(自动生成)
├── pyproject.toml          # 项目配置
└── README.md

注意事项

  • 服务器为STDIO和SSE模式分别维护了相同的特性的实现
  • 两种模式都支持自动时区检测和冲突检查
  • 所有时段应以YYYY-MM-DDTHH:MM:SS格式或RFC3339格式指定
  • 日历ID 'primary' 指的是用户的默认日历
  • 事件更新将保留未指定字段的现有数据
  • 服务器会自动处理时区检测和转换

许可证

MIT许可证