{"_id":"@boom-10/google-calendar-mcp","_rev":"5-5e2a69a65fc1cf8abe0b19b833cbab30","name":"@boom-10/google-calendar-mcp","dist-tags":{"latest":"1.0.5"},"versions":{"1.0.0":{"name":"@boom-10/google-calendar-mcp","version":"1.0.0","author":{"name":"Jiangdong.chen"},"license":"ISC","_id":"@boom-10/google-calendar-mcp@1.0.0","maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"dist":{"shasum":"57cecb75a63ab02b03e5c40d3d95f2c894953291","tarball":"https://registry.npmjs.org/@boom-10/google-calendar-mcp/-/google-calendar-mcp-1.0.0.tgz","fileCount":3,"integrity":"sha512-EAaOFuhD2nzQk0UHW+KrZuTaLZnYQrxqRJ4A//sTHcNlulFZRBQ7X+JHKZ/DVJ6IeX7TkIajqizADimbt6m7bQ==","signatures":[{"sig":"MEUCIQCrMEvxLsMHJnSiauuLsXa5BB7PYrRzY4qXSbefBiYHbAIgChkcnvYmo6nPU1LIRAFsA06i5MFPmJNrIkyp5/0HABY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5430},"main":"dist/index.js","type":"module","scripts":{"test":"echo \"Error: no test specified\" && exit 1","build":"tsc && shx chmod +x dist/*.js","start":"tsx index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"boom-10","email":"2461723716@qq.com"},"_npmVersion":"9.6.7","description":"这是一个 Model Context Protocol (MCP) 服务器，用于访问 Google Calendar 数据。","directories":{},"_nodeVersion":"18.17.0","dependencies":{"zod":"^3.25.76","open":"^10.0.3","dotenv":"^17.2.3","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/google-calendar-mcp_1.0.0_1762241306402_0.9697458605341778","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@boom-10/google-calendar-mcp","version":"1.0.1","keywords":["mcp","model-context-protocol","google-calendar","calendar","ai","cursor"],"author":{"name":"Jiangdong.chen"},"license":"MIT","_id":"@boom-10/google-calendar-mcp@1.0.1","maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"homepage":"https://github.com/boom-10/google-calendar-mcp#readme","bugs":{"url":"https://github.com/boom-10/google-calendar-mcp/issues"},"bin":{"google-calendar-mcp":"dist/index.js"},"dist":{"shasum":"b8371eab5dd21a67f3c11d7d75446d26823a00bd","tarball":"https://registry.npmjs.org/@boom-10/google-calendar-mcp/-/google-calendar-mcp-1.0.1.tgz","fileCount":3,"integrity":"sha512-YwaMuFbAeC2icORQJmyTqMbFn7PLUzJfpOL+cq7dZLLWAqyC3c4ktjI8GwmMOXLehexLaKPsjJiObcovYK4uyw==","signatures":[{"sig":"MEUCIQCbB3UP/MR4vD8w6adfw+I1+QlX5fDhxMo+QPWTRfrmvgIgZCS3FKLuqUYbEi8BKSXDtHSZIOz2AJfAWIkgfsLjzns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8524},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx watch index.ts","auth":"node get-token.js","test":"echo \"Error: no test specified\" && exit 1","build":"tsc && shx chmod +x dist/*.js","start":"tsx index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"boom-10","email":"2461723716@qq.com"},"repository":{"url":"git+https://github.com/boom-10/google-calendar-mcp.git","type":"git"},"_npmVersion":"9.6.7","description":"Model Context Protocol server for Google Calendar integration","directories":{},"_nodeVersion":"18.17.0","dependencies":{"zod":"^3.25.76","open":"^10.0.3","dotenv":"^17.2.3","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/google-calendar-mcp_1.0.1_1762242586142_0.5102699012190721","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@boom-10/google-calendar-mcp","version":"1.0.3","keywords":["mcp","model-context-protocol","google-calendar","calendar","ai","cursor"],"author":{"name":"Jiangdong.chen"},"license":"MIT","_id":"@boom-10/google-calendar-mcp@1.0.3","maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"homepage":"https://github.com/boom-10/google-calendar-mcp#readme","bugs":{"url":"https://github.com/boom-10/google-calendar-mcp/issues"},"bin":{"google-calendar-mcp":"dist/index.js","google-calendar-auth":"get-token.js"},"dist":{"shasum":"8f47c9197040efce83d2967af83f7cc373ca752f","tarball":"https://registry.npmjs.org/@boom-10/google-calendar-mcp/-/google-calendar-mcp-1.0.3.tgz","fileCount":4,"integrity":"sha512-05UmTLCBBfQozASS9JPnREVGzrN9TQipqzoCfyi6A/KuavSBO4yz0ivHTD1CnNEelMWi+ayXdT9G8wTv5UtTIw==","signatures":[{"sig":"MEUCIQCgbdqkI5/n6ew8azvGb6Q8pwguuVSkgpr+8afxaaO17wIgXFvy70Ggvmr3JhHw34fBswRPy0RwkbtuFHBNDS8O4lU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13787},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx watch index.ts","auth":"node get-token.js","test":"echo \"Error: no test specified\" && exit 1","build":"tsc && shx chmod +x dist/*.js","start":"tsx index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"boom-10","email":"2461723716@qq.com"},"repository":{"url":"git+https://github.com/boom-10/google-calendar-mcp.git","type":"git"},"_npmVersion":"9.6.7","description":"Model Context Protocol server for Google Calendar integration","directories":{},"_nodeVersion":"18.17.0","dependencies":{"zod":"^3.25.76","open":"^10.0.3","dotenv":"^17.2.3","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/google-calendar-mcp_1.0.3_1762242878264_0.36519564410771976","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@boom-10/google-calendar-mcp","version":"1.0.4","keywords":["mcp","model-context-protocol","google-calendar","calendar","ai","cursor"],"author":{"name":"Jiangdong.chen"},"license":"MIT","_id":"@boom-10/google-calendar-mcp@1.0.4","maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"homepage":"https://github.com/boom-10/google-calendar-mcp#readme","bugs":{"url":"https://github.com/boom-10/google-calendar-mcp/issues"},"bin":{"google-calendar-mcp":"dist/index.js","google-calendar-auth":"get-token.js"},"dist":{"shasum":"fa632ab7e08bcec3be082d41c9afe82944db7e02","tarball":"https://registry.npmjs.org/@boom-10/google-calendar-mcp/-/google-calendar-mcp-1.0.4.tgz","fileCount":4,"integrity":"sha512-hXfqJGKCfJPkiry/vxELvlpE7LNUIWf8U6YdEOpsg5X2vtW1OrUMBHvbRtjJF6uNHj21AeIE35sT3P0SoYhdNw==","signatures":[{"sig":"MEUCIGcBisETJJiUAJclvlIB0Zp0E9lxWxiA3xMJCvQnVft1AiEAjQLOHommDC1LILXQ7PdyMJt960psT8/eCfQ23mP1FvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12548},"main":"dist/index.js","type":"module","engines":{"node":">=18.0.0"},"scripts":{"dev":"tsx watch index.ts","auth":"node get-token.js","test":"echo \"Error: no test specified\" && exit 1","build":"tsc && shx chmod +x dist/*.js","start":"tsx index.ts","prepublishOnly":"npm run build"},"_npmUser":{"name":"boom-10","email":"2461723716@qq.com"},"repository":{"url":"git+https://github.com/boom-10/google-calendar-mcp.git","type":"git"},"_npmVersion":"9.6.7","description":"Model Context Protocol server for Google Calendar integration","directories":{},"_nodeVersion":"18.17.0","dependencies":{"zod":"^3.25.76","open":"^10.0.3","dotenv":"^17.2.3","googleapis":"^164.1.0","@modelcontextprotocol/sdk":"^1.20.2"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/google-calendar-mcp_1.0.4_1762244526647_0.8642851921071888","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@boom-10/google-calendar-mcp","version":"1.0.5","description":"Model Context Protocol server for Google Calendar integration","type":"module","main":"dist/index.js","bin":{"google-calendar-mcp":"dist/index.js","google-calendar-auth":"get-token.js"},"scripts":{"start":"tsx index.ts","build":"tsc && shx chmod +x dist/*.js","dev":"tsx watch index.ts","auth":"node get-token.js","prepublishOnly":"npm run build","test":"echo \"Error: no test specified\" && exit 1"},"keywords":["mcp","model-context-protocol","google-calendar","calendar","ai","cursor"],"author":{"name":"Jiangdong.chen"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/boom-10/google-calendar-mcp.git"},"dependencies":{"@modelcontextprotocol/sdk":"^1.20.2","dotenv":"^17.2.3","googleapis":"^164.1.0","open":"^10.0.3","zod":"^3.25.76"},"devDependencies":{"@types/node":"^22.10.2","shx":"^0.3.4","tsx":"^4.19.2","typescript":"^5.7.2"},"engines":{"node":">=18.0.0"},"bugs":{"url":"https://github.com/boom-10/google-calendar-mcp/issues"},"homepage":"https://github.com/boom-10/google-calendar-mcp#readme","_id":"@boom-10/google-calendar-mcp@1.0.5","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-7FFLilM4U7kW2CTrrcRZEbi5UNAec6cJ380GiAZUcs80825u+9Yh2CzaBybjv68JXZV3EoeQyCW/Uhwe633jrg==","shasum":"9c1f60d29d39320bd4f2bd8650932d98a6e2e99e","tarball":"https://registry.npmjs.org/@boom-10/google-calendar-mcp/-/google-calendar-mcp-1.0.5.tgz","fileCount":4,"unpackedSize":12533,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDSgeaSYqMU5Mzb0VrlXcifnU8N+Wn/hZhicw/yAh0XPwIgYHETe2rDVUT+WsUMl54t1NjPf13WvrdFVCh8j2mb0Jo="}]},"_npmUser":{"name":"boom-10","email":"2461723716@qq.com"},"directories":{},"maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/google-calendar-mcp_1.0.5_1762333392170_0.6606317935113237"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-04T07:28:26.310Z","modified":"2025-11-05T09:03:12.590Z","1.0.0":"2025-11-04T07:28:26.584Z","1.0.1":"2025-11-04T07:49:46.320Z","1.0.3":"2025-11-04T07:54:38.439Z","1.0.4":"2025-11-04T08:22:06.844Z","1.0.5":"2025-11-05T09:03:12.358Z"},"bugs":{"url":"https://github.com/boom-10/google-calendar-mcp/issues"},"author":{"name":"Jiangdong.chen"},"license":"MIT","homepage":"https://github.com/boom-10/google-calendar-mcp#readme","keywords":["mcp","model-context-protocol","google-calendar","calendar","ai","cursor"],"repository":{"type":"git","url":"git+https://github.com/boom-10/google-calendar-mcp.git"},"description":"Model Context Protocol server for Google Calendar integration","maintainers":[{"name":"boom-10","email":"2461723716@qq.com"}],"readme":"# Google Calendar MCP Server\n\n<div align=\"center\">\n\n📅 一个基于 Model Context Protocol (MCP) 的 Google Calendar 集成服务器\n\n让 AI 助手能够访问和查询您的 Google 日历数据\n\n</div>\n\n---\n\n## ✨ 功能特性\n\n- 🔐 **安全的 OAuth2 认证** - 使用 Google 官方授权流程\n- 📆 **日历查询** - 按日期查询日历事件\n- 🤖 **AI 集成** - 与 Cursor 等 AI 工具无缝集成\n- 🔄 **自动刷新** - Token 自动刷新，无需重复授权\n- 🎯 **简单易用** - 两种授权方式，适合不同使用场景\n\n## 📋 前置要求\n\n- Node.js 18+\n- Google 账户\n- Cursor 编辑器（或其他支持 MCP 的 AI 工具）\n\n## 🚀 快速开始\n\n### 步骤 1: 获取 Google OAuth2 凭据\n\n1. 访问 [Google Cloud Console](https://console.cloud.google.com/)\n2. 创建新项目或选择现有项目\n3. 启用 Google Calendar API：\n   - 导航至 **API 和服务** → **库**\n   - 搜索并启用 **Google Calendar API**\n4. 创建 OAuth2 凭据：\n   - 导航至 **API 和服务** → **凭据**\n   - 点击 **创建凭据** → **OAuth 客户端 ID**\n   - 应用类型：**桌面应用**\n   - 复制 **客户端 ID** 和 **客户端密钥**\n\n### 步骤 2: 获取授权（推荐方式）\n\n使用仓库中的脚本\n\n```bash\nnode get-token.js\n```\n\n授权脚本会：\n\n1. 自动打开浏览器授权页面\n2. 启动本地服务器接收回调\n3. 生成配置信息，直接复制到 `mcp.json`\n\n> **💡 提示**：运行脚本前，请先在 `get-token.js` 中填入您的 Client ID 和 Client Secret\n\n### 步骤 3: 配置 MCP\n\n编辑 `~/.cursor/mcp.json`（如果不存在则创建）：\n\n```json\n{\n  \"mcpServers\": {\n    \"calendar-data\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@boom-10/google-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_CLIENT_ID\": \"你的客户端ID.apps.googleusercontent.com\",\n        \"GOOGLE_CLIENT_SECRET\": \"你的客户端密钥\",\n        \"GOOGLE_REFRESH_TOKEN\": \"从授权脚本获取的refresh_token\",\n        \"CALENDAR_ID\": \"你的邮箱@gmail.com\"\n      }\n    }\n  }\n}\n```\n\n> **⚠️ 重要提示**：\n>\n> - 将路径替换为实际的绝对路径\n> - 不要将包含凭据的配置文件上传到公开仓库\n\n### 步骤 4: 重启 Cursor\n\n重启 Cursor 编辑器以加载 MCP 配置。\n\n## 💬 使用示例\n\n授权完成后，您可以在 Cursor 中直接询问：\n\n```\n今天有什么安排？\n```\n\n```\n查询 2025-11-05 的日历\n```\n\n```\n本周有哪些会议？\n```\n\nAI 助手会自动调用日历 API 并返回结果。\n\n## 🛠️ 可用工具和命令\n\n### MCP 工具\n\n| 工具名称                  | 功能描述               |\n| ------------------------- | ---------------------- |\n| `getMyCalendarDataByDate` | 查询指定日期的日历事件 |\n\n### CLI 命令\n\n安装包后可用的命令行工具：\n\n| 命令                   | 功能描述                       |\n| ---------------------- | ------------------------------ |\n| `google-calendar-mcp`  | 启动 MCP 服务器（用于 Cursor） |\n| `google-calendar-auth` | 运行 OAuth 授权工具获取 Token  |\n\n## 🔧 手动授权方式（备选）\n\n如果自动化脚本无法使用，可以采用手动方式：\n\n1. 在 Cursor 中要求 AI 生成授权 URL\n2. 在浏览器中访问该 URL 并登录 Google 账户\n3. 授权后复制授权码\n4. 要求 AI 使用授权码保存 token\n\n完成后会生成 `token.json` 文件。\n\n## 🐛 故障排除\n\n### 问题：授权后仍然无法访问日历\n\n**解决方案**：\n\n- 确认 `CALENDAR_ID` 设置为正确的邮箱地址\n- 检查 Google Cloud Console 中 Calendar API 是否已启用\n- 重启 Cursor 编辑器\n\n### 问题：Token 过期或无效\n\n**解决方案**：\n\n- 删除 `token.json` 文件\n- 重新运行 `node get-token.js` 获取新 token\n- 更新 `mcp.json` 中的 `GOOGLE_REFRESH_TOKEN`\n\n### 问题：重定向 URI 不匹配\n\n**解决方案**：\n\n- 在 Google Cloud Console 的 OAuth 客户端设置中\n- 确保添加了 `http://localhost:3000/oauth2callback`\n\n### 问题：端口 3000 已被占用\n\n**解决方案**：\n\n- 编辑 `get-token.js`，将端口改为其他值（如 3001）\n- 同时更新 Google Cloud Console 中的重定向 URI\n\n## 📁 项目结构\n\n```\ngoogle-calendar-mcp/\n├── index.ts           # MCP 服务器主文件\n├── get-token.js       # OAuth 授权工具脚本\n├── package.json       # 项目依赖配置\n├── tsconfig.json      # TypeScript 配置\n└── README.md          # 项目文档\n```\n\n## 🔒 安全性建议\n\n- ✅ 不要将 `token.json` 上传到 Git 仓库\n- ✅ 不要分享您的客户端密钥和 refresh token\n- ✅ 定期检查 Google 账户的已授权应用\n- ✅ 使用最小权限原则（当前仅请求只读权限）\n\n## 📄 许可证\n\nMIT License\n\n## 🤝 贡献\n\n欢迎提交 Issue 和 Pull Request！\n\n## 📞 支持\n\n如有问题，请查看：\n\n- [MCP 官方文档](https://modelcontextprotocol.io/)\n- [Google Calendar API 文档](https://developers.google.com/calendar)\n\n---\n\n<div align=\"center\">\nMade with ❤️ for AI-powered productivity\n</div>\n","readmeFilename":"README.md"}