日历管理服务器

一个用于Google Calendar集成的MCP服务器,支持个人日历管理,并提供Home Assistant集成功能。

  • by murphy360
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 murphy360/mcp_google_calendar

使用说明

谷歌日历MCP服务器

用于Google日历集成的模型上下文协议(MCP)服务器,专为支持家庭助理的个人日历管理而设计。

特性

  • MCP工具:搜索事件、列出即将发生的事件、创建/更新/删除事件
  • 每日议程:获取格式化的每日议程摘要
  • 日历类别:按类型(工作、个人、家庭等)组织日历
  • REST API:家庭助理集成的端点
  • 苏格兰和南方能源公司运输:通过mcp-remote从克劳德桌面连接
  • Docker支持:使用Docker Compose轻松部署

快速开始

1.谷歌云设置

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用 谷歌日历API
  4. 创建OAuth 2.0凭据(桌面应用程序类型)
  5. 下载凭据

2.配置

# Copy example environment file
cp .env.example .env

# Edit with your credentials
# GOOGLE_CLIENT_ID=your-client-id
# GOOGLE_CLIENT_SECRET=your-client-secret

3.初始OAuth设置

# Run OAuth setup (opens browser for consent)
docker compose --profile setup run --rm calendar-auth

4.启动服务器

docker compose up -d

5.克劳德桌面配置

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "calendar": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://YOUR_SERVER_IP:8002/mcp/sse", "--allow-http"]
    }
  }
}

家庭助理MCP集成

服务器为MCP连接公开SSE端点:

  • /mcp/sse -主MCP SSE终点
  • /sse -家庭助理兼容性的别名端点

每个连接都会获得一个新的服务器实例,以实现适当的会话隔离。

MCP工具

工具 说明
calendar_get_current_time 获取当前日期/时间以及查询的参考日期
calendar_list_events 使用可选筛选器列出即将发生的事件
calendar_search 按文本查询搜索事件
calendar_get_event 获取特定事件的详细信息
calendar_create_event 创建新的日历事件
calendar_update_event 更新现有事件
calendar_delete_event 删除事件
calendar_daily_agenda 获取特定日期的议程
calendar_weekly_summary 获取7天概览
calendar_list_calendars 列出所有可用日历
calendar_free_busy 检查某个时间范围的可用性

工具模式注释

所有工具都使用具有显式类型的Gemini兼容模式:

  • 数组参数使用逗号分隔的字符串(例如。, attendees: "user1@example.com,user2@example.com")
  • 日历ID使用逗号分隔的字符串(例如。, calendar_ids: "primary,work@group.calendar.google.com")
  • 日期使用ISO 8601格式(YYYY-MM-DD 或 YYYY-MM-DDTHH:MM:SS)

REST API端点

端点 描述
GET /health 带有身份验证状态的健康检查
GET /calendars 列出所有日历
GET /events/today 今天的活动
GET /events/upcoming 即将举行的活动
GET /events/search?q=query 搜索事件
GET /summary/daily 每日总结
GET /summary/weekly 每周总结
GET /free-time 查找空闲时段

家庭助理集成

REST传感器示例

sensor:
  - platform: rest
    name: "Next Calendar Event"
    resource: http://YOUR_SERVER_IP:8002/events/upcoming?days=1
    value_template: "{{ value_json[0].summary if value_json else 'No events' }}"
    scan_interval: 300

  - platform: rest
    name: "Today's Events Count"
    resource: http://YOUR_SERVER_IP:8002/events/today
    value_template: "{{ value_json | length }}"
    scan_interval: 300

MCP集成

家庭助理可以通过MCP SSE端点进行连接:

  • http://YOUR_SERVER_IP:8002/mcp/sse
  • http://YOUR_SERVER_IP:8002/sse (别名)

项目结构

mcp_google_calendar/
├── src/mcp_google_calendar/
│   ├── __init__.py
│   ├── auth.py              # OAuth2 authentication
│   ├── calendar_client.py   # Google Calendar API wrapper
│   ├── config.py            # Settings and configuration
│   ├── models.py            # Pydantic models
│   ├── server.py            # MCP stdio server
│   ├── sse_server.py        # MCP SSE server
│   ├── combined_server.py   # REST + SSE combined server
│   └── api.py               # REST API for Home Assistant
├── config/
│   └── calendars.yaml       # Calendar categorization
├── credentials/
│   ├── client_secrets.json  # OAuth credentials
│   └── token.json           # Stored tokens
├── docker-compose.yml
├── Dockerfile
└── README.md

许可证

麻省理工学院