谷歌日历中的每日议程
一个简单的Go程序,从谷歌日历中获取并显示您的日常日程。
先决条件
此项目使用 任务 用于任务自动化。先安装:
# macOS
brew install go-task/tap/go-task
# Linux
sh -c "$(curl --location https://taskfile.dev/install.sh)" -- -d -b ~/.local/bin
# Windows
choco install go-task
# Or install via Go
go install github.com/go-task/task/v3/cmd/task@latest安装说明
1.启用Google日历API
- 转到 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Google日历API:
- 转到“API和服务”>“库” - 搜索“Google日历API” - 点击它并按“启用”
2.创建凭据
- 转到“API和服务”>“凭据”
- 点击“创建凭据”>“OAuth客户端ID”
- 如果系统提示,请先配置OAuth同意屏幕:
- 选择“外部”用户类型 - 填写所需信息(应用程序名称、用户支持电子邮件、开发人员联系方式) - 将您的电子邮件添加到测试用户
- 对于应用程序类型,选择“桌面应用程序”
- 给它起个名字(例如,“每日议程应用程序”)
- 重要:添加
http://localhost:8080到“授权重定向URI” - 下载JSON文件并将其另存为
credentials.json在此目录中
3.安装依赖项
task mod-tidy4.构建应用程序
task build用法
该程序支持2种模式:
文本模式(显示日历议程)
显示今天的议程:
task run-text
# or directly: ./agenda-mcp text显示特定日期的议程:
./agenda-mcp text 2024-12-25日期必须采用YYYY-MM-DD格式。如果没有提供日期,则显示今天的议程。
MCP服务器模式
task run-mcp首次运行时(身份验证模式):
- 该程序将自动打开您的浏览器(如果无法打开,则显示URL)
- 使用您的Google帐户登录
- 授予阅读日历的权限
- 授权将自动完成,您将看到一个成功页面
- 您的凭据将保存以备将来运行
身份验证后,您可以使用 task run-test 显示您的议程或 task run-mcp 作为MCP服务器运行。
可用任务
跑 task --list 查看所有可用任务:
task build-构建本地二进制文件task clean-清理构建工件task mod-tidy-整理并验证go模块task run-text-在命令行中显示今天的议程task run-mcp-启动MCP服务器task inspector-运行npx MCP检查器
MCP检查员
为了调试和测试MCP服务器,您可以使用MCP检查器:
task inspector这将在以下时间启动MCP检查员http://localhost:8080用于测试MCP服务器功能。
替代方案:直接执行命令
如果您不想使用Task,可以直接运行命令:
# Install dependencies
go mod tidy
# Run modes directly
go run main.go text # Show today's agenda
go run main.go text 2024-12-25 # Show agenda for specific date
go run main.go mcp # Start MCP server特性
- 📅 按时间顺序显示今天的事件
- 🕐 显示事件时间(或全天事件的“全天”)
- 🎨 显示事件颜色和您的实际类别名称(焦点时间、内部小组会议、外部会议、个人会议等)
- 📍 显示事件位置(如果可用)
- 📝 显示事件描述(截断为100个字符)
- 👥 列出与会者及其响应状态(✅ 认可的,❌ 拒绝,❓ 实验性的,⏳ 待定)
- 👁️ 显示事件可见性设置
- ⏱️ 显示透明度设置(忙/闲)
- 🎉 未安排活动时的友好消息
- 🔌 MCP服务器:通过模型上下文协议公开日历数据,以便与LLM应用程序集成
MCP服务器模式
在MCP模式下运行时(task run-mcp),该程序充当模型上下文协议服务器,可以与Claude等LLM应用程序集成,提供两个日历工具:
可用的MCP工具
get_todays_agenda-从谷歌日历获取今天的日历议程get_agenda_for_date-获取特定日期的日历议程(YYYY-MM-DD格式)
MCP集成
将此添加到MCP客户端配置中:
{
"mcpServers": {
"google-calendar": {
"command": "/path/to/your/agenda-mcp",
"args": ["mcp"],
"env": {
"client_id": "your-google-oauth-client-id",
"project_id": "your-google-project-id",
"client_secret": "your-google-oauth-client-secret"
}
}
}
}备注:替换 /path/to/your/agenda-mcp 使用构建的二进制文件的实际完整路径,并使用来自的Google OAuth凭据设置环境变量 credentials.json 文件。
这允许LLM应用程序:
- 使用以下工具获取您的每日谷歌日历议程
get_todays_agenda工具 - 使用获取任何特定日期的日历事件
get_agenda_for_date带有日期参数的工具(例如“2024-12-25”)
安全说明
- 保持
credentials.json和token.json私有的 - 不要将这些文件提交到版本控制
- 该程序仅请求对您的日历进行只读访问
