article
README
🚀 谷歌日历模型上下文协议服务器(Google Calendar MCP Server)
这是一个用于与谷歌日历交互的服务器端项目,支持创建、读取、更新和删除日历事件,还能查找空闲时间段。项目使用 Node.js 编写,并通过 OAuth 2.0 进行身份验证。
🚀 快速开始
本项目是用于与谷歌日历交互的服务器端项目,支持对日历事件的 CRUD 操作以及查找空闲时间段。使用 Node.js 编写,通过 OAuth 2.0 进行身份验证。
✨ 主要特性
- 创建事件:可添加新的日历事件。
- 读取事件:能获取指定时间段内的所有事件。
- 更新事件:可修改现有事件的详细信息。
- 删除事件:能移除特定的日历事件。
- 查找空闲时间:可在指定时间段内查找可用时间窗口。
📦 安装指南
1. 准备工作
- 下载项目文件并解压到目标目录。
- 确保已安装 Node.js(建议版本 8.0 或更高)和 npm。
2. 安装依赖项
在项目根目录中运行以下命令:
npm install
3. 配置环境变量
复制 .env.example 文件为 .env,并根据实际情况填写以下内容:
CLIENT_ID=你的客户端ID
CLIENT_SECRET=你的客户端密码
REDIRECT_URI=重定向链接地址(例如:http://localhost:3000/oauth2callback)
REFRESH_TOKEN=获取的刷新令牌
💻 使用示例
基础用法
作为 HTTP/SSE 服务器
- 在项目根目录中运行以下命令启动服务:
npm run start:http
- 默认监听地址为
http://localhost:3334。
作为 CLI 工具
- 运行以下命令以控制台模式启动:
npm run start:stdio
高级用法
创建事件
{
"summary": "会议",
"description": "重要项目讨论会",
"start": {
"dateTime": "2023-10-10T09:00:00+08:00"
},
"end": {
"dateTime": "2023-10-10T11:00:00+08:00"
}
}
📚 详细文档
获取刷新令牌
步骤说明
- 运行以下脚本以启动授权流程:
const { google } = require('googleapis');
const http = require('http');
const url = require('url');
// 替换为你的实际信息
const CLIENT_ID = '你的客户端ID';
const CLIENT_SECRET = '你的客户端密码';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';
const oauth2Client = new google.auth.OAuth2(
CLIENT_ID,
CLIENT_SECRET,
REDIRECT_URI
);
const scopes = [
'https://www.googleapis.com/auth/calendar',
'https://www.googleapis.com/auth/calendar.events'
];
function getRefreshToken() {
const server = http.createServer(async (req, res) => {
const queryParams = url.parse(req.url, true).query;
if (queryParams.code) {
try {
const { tokens } = await oauth2Client.getToken(queryParams.code);
console.log('刷新令牌:', tokens.refresh_token);
res.end('身份验证成功!你可以关闭此窗口。');
server.close();
} catch (error) {
console.error('获取令牌失败:', error);
res.end('身份验证失败!');
}
}
}).listen(3000, () => {
const authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
prompt: 'consent'
});
console.log('在浏览器中打开以下链接:');
console.log(authUrl);
});
}
getRefreshToken();
- 根据脚本输出的 URL,在浏览器中访问并按照提示完成授权流程。
- 授权完成后,控制台将显示新的刷新令牌。
开发与调试
npm run dev
常见问题解决
- 认证错误:检查客户端 ID、密码和重定向 URI 是否正确配置。
- 服务器启动失败:确保端口未被占用或权限设置正确。
📄 许可证
本项目的使用遵循 ISC 协议。
扫码联系在线客服