Google日历管理服务器

一个用于与Google Calendar API交互的MCP服务器,提供日历和事件管理功能。

  • by goldk3y
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 goldk3y/google-calendar-mcp

使用说明

谷歌日历MCP服务器

用于与Google日历API交互的模型上下文协议(MCP)服务器,专为 史密瑟里.

特性

  • OAuth2身份验证:完成OAuth2流,以实现安全的Google日历访问
  • 日历管理:列出、创建和删除日历
  • 活动操作:创建、读取、更新和删除日历事件
  • 综合活动详情:支持与会者、提醒、地点等
  • 全天活动支持:处理定时和全天事件
  • 搜索功能:按文本和时间范围搜索事件

先决条件

在使用此MCP服务器之前,您需要:

  1. Node.js 18+ 安装
  2. 谷歌云控制台项目 启用日历API
  3. OAuth2凭据 (客户端ID和客户端密码)

谷歌云设置

1.创建谷歌云项目

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用Google日历API:
    • 转到“API和服务”>“库”
    • 搜索“Google日历API”
    • 点击“启用”

2.配置OAuth同意屏幕

  1. 转到“API和服务”>“OAuth同意屏幕”
  2. 选择“外部”用户类型
  3. 填写所需信息:
    • 应用程序名称:“您的应用程序名称”
    • 用户支持电子邮件:您的电子邮件
    • 开发人员联系信息:您的电子邮件
  4. 添加范围(测试可选):
    • https://www.googleapis.com/auth/calendar
    • https://www.googleapis.com/auth/calendar.events

3.创建OAuth2凭据

  1. 转到“API和服务”>“凭据”
  2. 点击“创建凭据”>“OAuth 2.0客户端ID”
  3. 选择“Web应用程序”
  4. 添加授权重定向URI:
    • http://localhost:3000/oauth2callback
  5. 下载JSON文件并记下您的客户端ID和客户端密码

安装

使用Smithery命令行界面

npm install -g @smithery/cli
npm create smithery

或者克隆此存储库:

git clone <repository-url>
cd google-calendar-mcp
npm install

配置

使用您的Google OAuth2凭据配置MCP服务器:

{
  "clientId": "your-google-client-id.apps.googleusercontent.com",
  "clientSecret": "your-google-client-secret",
  "redirectUri": "http://localhost:3000/oauth2callback",
  "refreshToken": "optional-refresh-token-for-permanent-access"
}

配置参数

  • clientId (必填):来自谷歌云控制台的谷歌OAuth2客户端ID
  • clientSecret (必填):来自谷歌云控制台的谷歌OAuth2客户端密码
  • redirectUri (可选): OAuth2 重定向 URI (默认: http://localhost:3000/oauth2callback)
  • refreshToken (可选):用于永久访问的预先存在的刷新令牌

用法

发展

npx @smithery/cli dev

身份验证流程

  1. 生成OAuth URL:

    Tool: generate_oauth_url
    
  2. 访问URL 并授权该应用程序

  3. 交易所授权码:

    Tool: exchange_auth_code
    Parameters: { "auth_code": "code-from-redirect" }
    
  4. 保存刷新令牌 供将来在配置中使用

可用工具

身份验证工具

  • generate_oauth_url -生成OAuth2授权URL
  • exchange_auth_code -代币的交换授权码
  • check_auth_status -检查当前身份验证状态

日历管理

  • list_calendars -列出所有可访问的日历
  • get_calendar -获取详细的日历信息
  • create_calendar -创建新日历
  • delete_calendar -删除日历(主日历除外)

事件管理

  • list_events -列出具有筛选选项的事件
  • get_event -获取详细的事件信息
  • create_event -创建新事件
  • update_event -更新现有事件
  • delete_event -删除事件

示例用法

创建事件

Tool: create_event
Parameters: {
  "calendar_id": "primary",
  "summary": "Team Meeting", 
  "description": "Weekly sync meeting",
  "start_time": "2024-01-15T10:00:00Z",
  "end_time": "2024-01-15T11:00:00Z",
  "location": "Conference Room A",
  "attendees": ["colleague@company.com"],
  "timezone": "America/New_York"
}

列出即将举行的活动

Tool: list_events
Parameters: {
  "calendar_id": "primary",
  "time_min": "2024-01-15T00:00:00Z",
  "time_max": "2024-01-22T23:59:59Z",
  "max_results": 20
}

安全最佳实践

  1. 安全地存储凭据 -从不将OAuth2凭据提交到版本控制
  2. 使用刷新令牌 -配置 access_type: "offline" 获取刷新令牌
  3. 限制范围 -仅请求必要的日历API作用域
  4. 监控使用情况 -跟踪Google云控制台中API的使用情况

错误处理

MCP服务器为常见问题提供详细的错误消息:

  • 身份验证错误 -关于OAuth2设置的明确指导
  • API配额限制 -关于利率限制的信息
  • 权限错误 -帮助解决范围和访问问题
  • 无效参数 -带有有用描述的验证错误

发展

项目结构

google-calendar-mcp/
├── src/
│   ├── index.ts           # Main MCP server entry point
│   └── tools/
│       ├── auth.ts        # Authentication tools
│       ├── calendars.ts   # Calendar management tools
│       └── events.ts      # Event management tools
├── package.json
├── smithery.yaml
└── README.md

建筑

npx @smithery/cli build

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件

支持

相关项目