[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-nspady--google-calendar-mcp":3,"tool-nspady--google-calendar-mcp":64},[4,17,27,35,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,43,44,45,15,46,26,13,47],"数据工具","视频","插件","其他","音频",{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,46],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70626,"2026-04-05T22:51:36",[26,15,13,45],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":78,"owner_location":78,"owner_email":79,"owner_twitter":78,"owner_website":78,"owner_url":80,"languages":81,"stars":106,"forks":107,"last_commit_at":108,"license":109,"difficulty_score":110,"env_os":111,"env_gpu":112,"env_ram":112,"env_deps":113,"category_tags":122,"github_topics":78,"view_count":23,"oss_zip_url":78,"oss_zip_packed_at":78,"status":16,"created_at":123,"updated_at":124,"faqs":125,"releases":155},2879,"nspady\u002Fgoogle-calendar-mcp","google-calendar-mcp","MCP integration for Google Calendar to manage events.","google-calendar-mcp 是一款基于模型上下文协议（MCP）开发的开源工具，旨在让 Claude 等 AI 助手能够直接读取和管理用户的 Google 日历。它有效解决了 AI 无法访问用户实时日程数据、难以跨账号协调时间以及手动处理重复事件繁琐等痛点，让自然语言调度日程成为可能。\n\n这款工具特别适合希望提升工作效率的普通职场人士、需要自动化日程管理的开发者，以及正在构建智能助理应用的研究人员。其核心亮点在于强大的多账户与多日历支持，用户可同时连接工作与个人账号，AI 不仅能一键检测跨账号的行程冲突，还能通过自然语言理解灵活安排会议。此外，它支持从图片或 PDF 中智能提取事件信息，并具备处理复杂重复事件的高级能力。\n\n使用前需简单配置 Google Cloud 项目以获取授权凭证，随后即可在 Claude Desktop 中通过对话完成认证。一旦连接成功，用户只需发出指令，google-calendar-mcp 便能协助完成创建、更新、查询日程及检查空闲时段等操作，将复杂的日历管理转化为流畅的对话体验。","# Google Calendar MCP Server\n\nA Model Context Protocol (MCP) server that provides Google Calendar integration for AI assistants like Claude.\n\n## Features\n\n- **Multi-Account Support**: Connect multiple Google accounts (e.g., work, personal) and query them simultaneously\n- **Multi-Calendar Support**: List events from multiple calendars in a single request\n- **Cross-Account Conflicts**: Detect overlapping events across any combination of calendars\n- **Event Management**: Create, update, delete, and search calendar events\n- **Recurring Events**: Advanced modification capabilities for recurring events\n- **Free\u002FBusy Queries**: Check availability across calendars\n- **Smart Scheduling**: Natural language understanding for dates and times\n- **Intelligent Import**: Add calendar events from images, PDFs, or web links\n\n## Quick Start\n\n### Prerequisites\n\n1. A Google Cloud project with the Calendar API enabled\n2. OAuth 2.0 credentials (Desktop app type)\n\n### Google Cloud Setup\n\n1. Go to the [Google Cloud Console](https:\u002F\u002Fconsole.cloud.google.com)\n2. Create a new project or select an existing one.\n3. Enable the [Google Calendar API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Flibrary\u002Fcalendar-json.googleapis.com) for your project. Ensure that the right project is selected from the top bar before enabling the API.\n4. Create OAuth 2.0 credentials:\n   - Go to Credentials\n   - Click \"Create Credentials\" > \"OAuth client ID\"\n   - Choose \"User data\" for the type of data that the app will be accessing\n   - Add your app name and contact information\n   - Add the following scopes (optional):\n     - `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar.events` and `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar`\n   - Select \"Desktop app\" as the application type (Important!)\n   - Save the auth key, you'll need to add its path to the JSON in the next step\n   - Add your email address as a test user under the [Audience screen](https:\u002F\u002Fconsole.cloud.google.com\u002Fauth\u002Faudience)\n      - Note: it might take a few minutes for the test user to be added. The OAuth consent will not allow you to proceed until the test user has propagated.\n      - Note about test mode: While an app is in test mode the auth tokens will expire after 1 week and need to be refreshed (see Re-authentication section below).\n\n### Installation\n\n**Option 1: Use with npx (Recommended)**\n\nAdd to your Claude Desktop configuration:\n\n**macOS**: `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json`\n**Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n```json\n{\n  \"mcpServers\": {\n    \"google-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"@cocal\u002Fgoogle-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_OAUTH_CREDENTIALS\": \"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\n      }\n    }\n  }\n}\n```\n\n**⚠️ Important Note for npx Users**: When using npx, you **must** specify the credentials file path using the `GOOGLE_OAUTH_CREDENTIALS` environment variable.\n\n**Option 2: Local Installation**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\nnpm install\nnpm run build\n```\n\nThen add to Claude Desktop config using the local path or by specifying the path with the `GOOGLE_OAUTH_CREDENTIALS` environment variable.\n\n**Option 3: Docker Installation**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\ncp \u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json .\ndocker compose up\n```\n\nSee the [Docker deployment guide](docs\u002Fdocker.md) for detailed configuration options including HTTP transport mode.\n\n### First Run\n\n1. Start Claude Desktop\n2. **Ask Claude to authenticate with the Google Calendar MCP server** (e.g., \"Authenticate with Google Calendar\"). This step is required before using any calendar tool — without it, requests will fail with a `-32600` error.\n3. Complete the OAuth flow in your browser\n4. You're ready to use calendar features!\n\n**Using Claude Code?** The same steps apply — just ask Claude to authenticate with the Google Calendar MCP server from your CLI session before using any calendar tool.\n\n### Re-authentication\n\nIf you're in test mode (default), tokens expire after 7 days. If you are using a client like Claude Desktop it should open up a browser window to automatically re-auth. However, if you see authentication errors you can also resolve by following these steps:\n\n**For npx users:**\n```bash\nexport GOOGLE_OAUTH_CREDENTIALS=\"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\nnpx @cocal\u002Fgoogle-calendar-mcp auth\n```\n\n**For local installation:**\n```bash\nnpm run auth\n```\n\n**To avoid weekly re-authentication**, publish your app to production mode (without verification):\n1. Go to Google Cloud Console → \"APIs & Services\" → \"OAuth consent screen\"\n2. Click \"PUBLISH APP\" and confirm\n3. Your tokens will no longer expire after 7 days but Google will show a warning about the app being unverified. \n\nSee [Authentication Guide](docs\u002Fauthentication.md#avoiding-token-expiration) for details.\n\n## Managing Multiple Accounts\n\nConnect multiple Google accounts and use them simultaneously.\n\n**In chat (recommended):** Use the `manage-accounts` tool to add, list, or remove accounts directly from your AI assistant - no terminal needed. See the [Authentication Guide](docs\u002Fauthentication.md#managing-multiple-accounts) for details.\n\n**CLI:** For initial setup, use `npm run account auth \u003Cnickname>` (e.g., `npm run account auth work`).\n\n**HTTP \u002F Docker:** Visit `http:\u002F\u002Flocalhost:3000\u002Faccounts` to manage accounts in the browser.\n\nWhen no `account` parameter is supplied to a tool, read-only tools merge results from all accounts, while write tools auto-select the account with appropriate permissions.\n\n## Example Usage\n\nAlong with the normal capabilities you would expect for a calendar integration you can also do really dynamic, multi-step processes like:\n\n1. **Cross-calendar availability**:\n   ```\n   Please provide availability looking at both my personal and work calendar for this upcoming week.\n   I am looking for a good time to meet with someone in London for 1 hr.\n   ```\n\n2. Add events from screenshots, images and other data sources:\n   ```\n   Add this event to my calendar based on the attached screenshot.\n   ```\n   Supported image formats: PNG, JPEG, GIF\n   Images can contain event details like date, time, location, and description\n\n3. Calendar analysis:\n   ```\n   What events do I have coming up this week that aren't part of my usual routine?\n   ```\n4. Check attendance:\n   ```\n   Which events tomorrow have attendees who have not accepted the invitation?\n   ```\n5. Respond to invitations:\n   ```\n   Accept the team meeting invitation on my calendar for tomorrow at 2pm\n   ```\n   Decline with a note:\n   ```\n   Decline the Friday meeting with a note that I have a scheduling conflict\n   ```\n   Respond to recurring events:\n   ```\n   Accept just this week's standup, but keep future instances as tentative\n   ```\n   ```\n   Decline all future Monday planning meetings\n   ```\n6. Auto coordinate events:\n   ```\n   Here's some availability that was provided to me by someone. {available times}\n   Take a look at the times provided and let me know which ones are open on my calendar.\n   ```\n\n## Available Tools\n\n| Tool | Description |\n|------|-------------|\n| `list-calendars` | List all available calendars |\n| `list-events` | List events with date filtering |\n| `get-event` | Get details of a specific event by ID |\n| `search-events` | Search events by text query |\n| `create-event` | Create new calendar events |\n| `update-event` | Update existing events |\n| `delete-event` | Delete events |\n| `respond-to-event` | Respond to event invitations (Accept, Decline, Maybe, No Response) |\n| `get-freebusy` | Check availability across calendars, including external calendars |\n| `get-current-time` | Get current date and time in calendar's timezone |\n| `list-colors` | List available event colors |\n| `manage-accounts` | Add, list, or remove connected Google accounts |\n\n## Documentation\n\n- [Authentication Setup](docs\u002Fauthentication.md) - Detailed Google Cloud setup\n- [Advanced Usage](docs\u002Fadvanced-usage.md) - Multi-account, batch operations\n- [Deployment Guide](docs\u002Fdeployment.md) - HTTP transport, remote access\n- [Docker Guide](docs\u002Fdocker.md) - Docker deployment with stdio and HTTP modes\n- [Architecture](docs\u002Farchitecture.md) - Technical architecture overview\n- [Development](docs\u002Fdevelopment.md) - Contributing and testing\n- [Testing](docs\u002Ftesting.md) - Unit and integration testing guide\n- [Multi-Account Updates](docs\u002Fmulti-account-updates.md) - Current status and roadmap for multi-account support\n\n## Sponsorship\n\nIf Google Calendar MCP has been useful to you and you're so inclined, I'd greatly appreciate it if you'd consider [sponsoring my open source work](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fnspady).\n\nThanks! – Nate\n\n## Configuration\n\n**Environment Variables:**\n- `GOOGLE_OAUTH_CREDENTIALS` - Path to OAuth credentials file\n- `GOOGLE_CALENDAR_MCP_TOKEN_PATH` - Custom token storage location (optional)\n- `ENABLED_TOOLS` - Comma-separated list of tools to enable (see Tool Filtering below)\n\n### Tool Filtering\n\nYou can limit which tools are exposed to the AI assistant using the `--enable-tools` flag or `ENABLED_TOOLS` environment variable. This is useful for:\n- **Reducing context usage**: Each tool consumes tokens from the AI's context window. Limiting tools can help preserve context for longer conversations.\n- **Security**: Restrict capabilities to read-only operations or specific functionality.\n- **Simplicity**: Only expose the tools your workflow actually needs.\n\n**Via command line:**\n```bash\nnpx @cocal\u002Fgoogle-calendar-mcp start --enable-tools list-events,create-event,get-current-time\n```\n\n**Via environment variable in Claude Desktop config:**\n```json\n{\n  \"mcpServers\": {\n    \"google-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"@cocal\u002Fgoogle-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_OAUTH_CREDENTIALS\": \"\u002Fpath\u002Fto\u002Fcredentials.json\",\n        \"ENABLED_TOOLS\": \"list-events,create-event,get-current-time,update-event\"\n      }\n    }\n  }\n}\n```\n\n**Available tool names:** `list-calendars`, `list-events`, `search-events`, `get-event`, `list-colors`, `create-event`, `update-event`, `delete-event`, `get-freebusy`, `get-current-time`, `respond-to-event`, `manage-accounts`\n\n**Note:** The `manage-accounts` tool is always available regardless of filtering, as it's needed for authentication management.\n\nWhen tool filtering is active, the server provides instructions to the AI assistant listing which tools are disabled. This allows the AI to inform users that additional functionality exists but is currently unavailable, without consuming the full token cost of those tool schemas.\n\nIf the list is empty or contains only commas, the server will fail to start with an error.\n\nIf an invalid tool name is specified, the server will fail to start with an error listing all available tools.\n\n## Security\n\n- OAuth tokens are stored securely in your system's config directory\n- Credentials never leave your local machine\n- All calendar operations require explicit user consent\n\n### Troubleshooting\n\n1. **OAuth Credentials File Not Found:**\n   - For npx users: You **must** specify the credentials file path using `GOOGLE_OAUTH_CREDENTIALS`\n   - Verify file paths are absolute and accessible\n\n2. **Authentication Errors:**\n   - Ensure your credentials file contains credentials for a **Desktop App** type\n   - Verify your user email is added as a **Test User** in the Google Cloud OAuth Consent screen\n   - Try deleting saved tokens and re-authenticating\n   - Check that no other process is blocking ports 3500-3505\n\n3. **Build Errors:**\n   - Run `npm install && npm run build` again\n   - Check Node.js version (use LTS)\n   - Delete the `build\u002F` directory and run `npm run build`\n4. **\"Something went wrong\" screen during browser authentication**\n   - Run the auth command manually (see [Re-authentication](#re-authentication) above)\n   - Use a Chromium-based browser. Test app authentication may not work on some non-Chromium browsers.\n\n5. **\"User Rate Limit Exceeded\" errors**\n   - This typically occurs when your OAuth credentials are missing project information\n   - Ensure your `gcp-oauth.keys.json` file includes `project_id`\n   - Re-download credentials from Google Cloud Console if needed\n   - The file should have format: `{\"installed\": {\"project_id\": \"your-project-id\", ...}}`\n\n## License\n\nMIT\n\n## Support\n\n- [GitHub Issues](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues)\n- [Documentation](docs\u002F)\n","# Google 日历 MCP 服务器\n\n一个模型上下文协议 (MCP) 服务器，为 Claude 等 AI 助手提供 Google 日历集成。\n\n## 特性\n\n- **多账户支持**：连接多个 Google 账户（例如工作、个人），并可同时查询它们\n- **多日历支持**：在单个请求中列出多个日历中的事件\n- **跨账户冲突检测**：检测任意日历组合之间的重叠事件\n- **事件管理**：创建、更新、删除和搜索日历事件\n- **重复事件**：对重复事件提供高级修改功能\n- **空闲\u002F忙碌查询**：跨日历检查可用性\n- **智能排程**：自然语言理解日期和时间\n- **智能导入**：从图片、PDF 或网页链接中添加日历事件\n\n## 快速入门\n\n### 前提条件\n\n1. 一个已启用日历 API 的 Google Cloud 项目\n2. OAuth 2.0 凭证（桌面应用类型）\n\n### Google Cloud 设置\n\n1. 前往 [Google Cloud 控制台](https:\u002F\u002Fconsole.cloud.google.com)\n2. 创建新项目或选择现有项目。\n3. 为您的项目启用 [Google 日历 API](https:\u002F\u002Fconsole.cloud.google.com\u002Fapis\u002Flibrary\u002Fcalendar-json.googleapis.com)。在启用 API 之前，请确保顶部栏中选择了正确的项目。\n4. 创建 OAuth 2.0 凭证：\n   - 转到“凭据”\n   - 单击“创建凭据” > “OAuth 客户端 ID”\n   - 为应用将访问的数据类型选择“用户数据”\n   - 添加您的应用名称和联系信息\n   - 添加以下范围（可选）：\n     - `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar.events` 和 `https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar`\n   - 将应用类型选择为“桌面应用”（重要！）\n   - 保存授权密钥，您需要在下一步中将其路径添加到 JSON 文件中\n   - 在 [受众界面](https:\u002F\u002Fconsole.cloud.google.com\u002Fauth\u002Faudience) 下将您的电子邮件地址添加为测试用户\n      - 注意：可能需要几分钟才能添加测试用户。在测试用户生效之前，OAuth 同意流程将无法继续。\n      - 关于测试模式的说明：当应用处于测试模式时，授权令牌将在 1 周后过期，需要重新认证（请参阅下方的“重新认证”部分）。\n\n### 安装\n\n**选项 1：使用 npx（推荐）**\n\n将以下内容添加到您的 Claude Desktop 配置中：\n\n**macOS**：`~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json`\n**Windows**：`%APPDATA%\\Claude\\claude_desktop_config.json`\n```json\n{\n  \"mcpServers\": {\n    \"google-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"@cocal\u002Fgoogle-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_OAUTH_CREDENTIALS\": \"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\n      }\n    }\n  }\n}\n```\n\n**⚠️ 使用 npx 的重要提示**：使用 npx 时，您必须通过 `GOOGLE_OAUTH_CREDENTIALS` 环境变量指定凭证文件路径。\n\n**选项 2：本地安装**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\nnpm install\nnpm run build\n```\n\n然后将本地路径添加到 Claude Desktop 配置中，或者通过 `GOOGLE_OAUTH_CREDENTIALS` 环境变量指定路径。\n\n**选项 3：Docker 安装**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\ncp \u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json .\ndocker compose up\n```\n\n有关详细配置选项（包括 HTTP 传输模式），请参阅 [Docker 部署指南](docs\u002Fdocker.md)。\n\n### 首次运行\n\n1. 启动 Claude Desktop\n2. **让 Claude 认证 Google 日历 MCP 服务器**（例如，“认证 Google 日历”）。这是使用任何日历工具之前必需的步骤——如果没有这一步，请求将返回 `-32600` 错误。\n3. 在浏览器中完成 OAuth 流程\n4. 您现在可以使用日历功能了！\n\n**使用 Claude Code？** 步骤相同——只需在 CLI 会话中让 Claude 先认证 Google 日历 MCP 服务器，然后再使用任何日历工具。\n\n### 反复认证\n\n如果您处于默认的测试模式，令牌将在 7 天后过期。如果您使用的是 Claude Desktop 等客户端，它应该会自动打开浏览器窗口进行重新认证。但是，如果出现认证错误，您也可以按照以下步骤解决：\n\n**对于 npx 用户：**\n```bash\nexport GOOGLE_OAUTH_CREDENTIALS=\"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\nnpx @cocal\u002Fgoogle-calendar-mcp auth\n```\n\n**对于本地安装：**\n```bash\nnpm run auth\n```\n\n**为了避免每周重新认证**，您可以将您的应用发布到生产模式（无需验证）：\n1. 前往 Google Cloud 控制台 → “API 和服务” → “OAuth 同意屏幕”\n2. 单击“发布应用”并确认\n3. 您的令牌将不再在 7 天后过期，但 Google 会显示一条关于该应用未经验证的警告。\n\n有关详细信息，请参阅 [认证指南](docs\u002Fauthentication.md#avoiding-token-expiration)。\n\n## 管理多个账户\n\n连接多个 Google 账户，并可同时使用它们。\n\n**在聊天中（推荐）：** 使用 `manage-accounts` 工具直接从您的 AI 助手添加、列出或移除账户——无需终端。有关详细信息，请参阅 [认证指南](docs\u002Fauthentication.md#managing-multiple-accounts)。\n\n**CLI：** 对于初始设置，使用 `npm run account auth \u003C昵称>`（例如，`npm run account auth work`）。\n\n**HTTP \u002F Docker：** 访问 `http:\u002F\u002Flocalhost:3000\u002Faccounts`，即可在浏览器中管理账户。\n\n当工具未提供 `account` 参数时，只读工具会合并所有账户的结果，而写入工具则会自动选择具有相应权限的账户。\n\n## 使用示例\n\n除了日历集成应有的常规功能外，您还可以执行非常动态的多步骤流程，例如：\n\n1. **跨日历可用性**：\n   ```\n   请查看我本周个人日历和工作日历的空闲时间。\n   我想找一个合适的时间与伦敦的朋友会面，时长1小时。\n   ```\n\n2. 添加来自截图、图片及其他数据源的日程：\n   ```\n   根据附件中的截图，将此事件添加到我的日历中。\n   ```\n   支持的图片格式：PNG、JPEG、GIF\n   图片中可以包含日期、时间、地点和描述等事件详情。\n\n3. 日历分析：\n   ```\n   本周有哪些不属于我日常安排的活动？\n   ```\n\n4. 检查参会情况：\n   ```\n   明天有哪些活动的参会者尚未接受邀请？\n   ```\n\n5. 回复邀请：\n   ```\n   接受我日历上明天下午2点的团队会议邀请。\n   ```\n   拒绝并附带说明：\n   ```\n   拒绝周五的会议，并注明我有日程冲突。\n   ```\n   回复重复性事件：\n   ```\n   只接受本周的站会，但保留未来其他场次为暂定状态。\n   ```\n   ```\n   拒绝所有未来的周一计划会议。\n   ```\n\n6. 自动协调事件：\n   ```\n   这是某人提供给我的一些空闲时间。{可用时间}\n   请查看这些时间，并告诉我哪些在我的日历上是空闲的。\n   ```\n\n## 可用工具\n\n| 工具 | 描述 |\n|------|-------------|\n| `list-calendars` | 列出所有可用的日历 |\n| `list-events` | 列出带有日期筛选的日程 |\n| `get-event` | 根据ID获取特定日程的详细信息 |\n| `search-events` | 根据文本查询搜索日程 |\n| `create-event` | 创建新的日程 |\n| `update-event` | 更新现有日程 |\n| `delete-event` | 删除日程 |\n| `respond-to-event` | 回复日程邀请（接受、拒绝、可能参加、不回复） |\n| `get-freebusy` | 检查跨日历的空闲时间，包括外部日历 |\n| `get-current-time` | 获取当前日期和时间（以日历所在时区为准） |\n| `list-colors` | 列出可用的日程颜色 |\n| `manage-accounts` | 添加、列出或移除已连接的Google账号 |\n\n## 文档\n\n- [认证设置](docs\u002Fauthentication.md) - 详细的Google Cloud设置\n- [高级使用](docs\u002Fadvanced-usage.md) - 多账号、批量操作\n- [部署指南](docs\u002Fdeployment.md) - HTTP传输、远程访问\n- [Docker指南](docs\u002Fdocker.md) - Docker部署，支持标准输入输出和HTTP模式\n- [架构](docs\u002Farchitecture.md) - 技术架构概述\n- [开发](docs\u002Fdevelopment.md) - 贡献与测试\n- [测试](docs\u002Ftesting.md) - 单元及集成测试指南\n- [多账号更新](docs\u002Fmulti-account-updates.md) - 当前状态及多账号支持路线图\n\n## 赞助\n\n如果Google Calendar MCP对您有所帮助，并且您愿意的话，我将非常感激您能考虑[赞助我的开源项目](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fnspady)。\n\n谢谢！——内特\n\n## 配置\n\n**环境变量：**\n- `GOOGLE_OAUTH_CREDENTIALS` - OAuth凭证文件路径\n- `GOOGLE_CALENDAR_MCP_TOKEN_PATH` - 自定义令牌存储位置（可选）\n- `ENABLED_TOOLS` - 以逗号分隔的启用工具列表（参见下方的工具过滤）\n\n### 工具过滤\n\n您可以使用`--enable-tools`标志或`ENABLED_TOOLS`环境变量来限制向AI助手暴露的工具。这在以下情况下很有用：\n- **减少上下文消耗**：每个工具都会占用AI上下文窗口中的令牌。限制工具数量有助于为更长时间的对话保留更多上下文。\n- **安全性**：仅允许只读操作或特定功能。\n- **简洁性**：只公开您的工作流真正需要的工具。\n\n**通过命令行：**\n```bash\nnpx @cocal\u002Fgoogle-calendar-mcp start --enable-tools list-events,create-event,get-current-time\n```\n\n**通过Claude Desktop配置中的环境变量：**\n```json\n{\n  \"mcpServers\": {\n    \"google-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"@cocal\u002Fgoogle-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_OAUTH_CREDENTIALS\": \"\u002Fpath\u002Fto\u002Fcredentials.json\",\n        \"ENABLED_TOOLS\": \"list-events,create-event,get-current-time,update-event\"\n      }\n    }\n  }\n}\n```\n\n**可用工具名称：** `list-calendars`、`list-events`、`search-events`、`get-event`、`list-colors`、`create-event`、`update-event`、`delete-event`、`get-freebusy`、`get-current-time`、`respond-to-event`、`manage-accounts`\n\n**注意：** 无论是否进行工具过滤，`manage-accounts`工具始终可用，因为它用于管理身份验证。\n\n当工具过滤启用时，服务器会向AI助手提供指令，列出哪些工具已被禁用。这样，AI可以在不消耗完整工具架构令牌成本的情况下，告知用户存在额外的功能，但目前不可用。\n\n如果列表为空或仅包含逗号，服务器将无法启动，并显示错误信息。\n\n如果指定了无效的工具名称，服务器同样会因显示所有可用工具而启动失败。\n\n## 安全性\n\n- OAuth令牌安全地存储在您系统的配置目录中\n- 凭证永远不会离开您的本地设备\n- 所有日历操作都需要用户明确同意\n\n### 故障排除\n\n1. **未找到OAuth凭证文件：**\n   - 对于使用npx的用户：必须使用`GOOGLE_OAUTH_CREDENTIALS`指定凭证文件路径。\n   - 确认文件路径为绝对路径且可访问。\n\n2. **认证错误：**\n   - 确保您的凭证文件包含适用于“桌面应用”类型的凭据。\n   - 确认您的用户邮箱已在Google Cloud OAuth同意页面中被添加为“测试用户”。\n   - 尝试删除已保存的令牌并重新进行认证。\n   - 检查是否有其他进程正在占用3500–3505端口。\n\n3. **构建错误：**\n   - 再次运行`npm install && npm run build`。\n   - 检查Node.js版本（建议使用LTS版本）。\n   - 删除`build\u002F`目录并重新运行`npm run build`。\n4. **浏览器认证过程中出现“发生错误”界面：**\n   - 手动运行认证命令（参见上方的“重新认证”部分）。\n   - 使用基于Chromium的浏览器。某些非Chromium浏览器可能无法正常完成测试应用认证。\n5. **“用户速率限制已超过”错误：**\n   - 这通常发生在您的OAuth凭证缺少项目信息时。\n   - 确保您的`gcp-oauth.keys.json`文件包含`project_id`。\n   - 如有必要，从Google Cloud控制台重新下载凭证。\n   - 文件格式应为：`{\"installed\": {\"project_id\": \"your-project-id\", ...}}`\n\n## 许可证\n\nMIT\n\n## 支持\n\n- [GitHub问题](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues)\n- [文档](docs\u002F)","# Google Calendar MCP 快速上手指南\n\nGoogle Calendar MCP 是一个基于模型上下文协议（MCP）的服务器，旨在为 Claude 等 AI 助手提供强大的 Google 日历集成能力。支持多账号管理、跨日历冲突检测、智能日程安排及从图片\u002FPDF 导入事件等功能。\n\n## 环境准备\n\n在开始之前，请确保满足以下系统和依赖要求：\n\n1.  **Node.js 环境**：建议安装最新的 LTS 版本。\n2.  **Google Cloud 项目**：\n    *   拥有一个 Google Cloud 项目。\n    *   已启用 **Google Calendar API**。\n3.  **OAuth 2.0 凭证**：\n    *   类型必须选择 **\"Desktop app\" (桌面应用)**。\n    *   需在 OAuth 同意屏幕中将你的邮箱添加为 **测试用户 (Test User)**（否则无法通过验证）。\n    *   下载生成的 JSON 密钥文件（例如 `gcp-oauth.keys.json`）。\n\n> **注意**：由于网络原因，访问 Google Cloud Console 可能需要特定的网络环境。\n\n## 安装步骤\n\n推荐使用 `npx` 方式直接运行，无需克隆代码库。\n\n### 1. 配置 Claude Desktop\n\n根据你的操作系统，找到并编辑 `claude_desktop_config.json` 配置文件：\n\n*   **macOS**: `~\u002FLibrary\u002FApplication Support\u002FClaude\u002Fclaude_desktop_config.json`\n*   **Windows**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n将以下内容添加到配置文件中。**请务必将 `\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json` 替换为你本地实际的 OAuth 密钥文件绝对路径**。\n\n```json\n{\n  \"mcpServers\": {\n    \"google-calendar\": {\n      \"command\": \"npx\",\n      \"args\": [\"@cocal\u002Fgoogle-calendar-mcp\"],\n      \"env\": {\n        \"GOOGLE_OAUTH_CREDENTIALS\": \"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\n      }\n    }\n  }\n}\n```\n\n> **重要提示**：使用 `npx` 运行时，必须通过 `GOOGLE_OAUTH_CREDENTIALS` 环境变量指定凭证文件的路径，否则无法启动。\n\n### 2. (可选) 本地安装或 Docker\n\n如果你需要自定义开发或使用 Docker 部署，可参考以下方式：\n\n**本地安装：**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\nnpm install\nnpm run build\n```\n*配置时需将 `command` 改为 `node`，`args` 指向构建后的入口文件，并同样配置环境变量。*\n\n**Docker 安装：**\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp.git\ncd google-calendar-mcp\ncp \u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json .\ndocker compose up\n```\n\n## 基本使用\n\n配置完成后，按照以下步骤即可开始使用。\n\n### 第一步：启动与认证\n\n1.  重启 **Claude Desktop** 应用程序以加载新的 MCP 配置。\n2.  在对话框中输入指令触发认证，例如：\n    > \"Authenticate with Google Calendar\"\n    > （或者中文：\"请登录 Google 日历\"）\n3.  系统会自动在浏览器中打开 OAuth 授权页面。\n4.  登录你的 Google 账号并允许访问权限。\n5.  认证成功后，即可开始使用日历功能。\n\n> **注意**：如果是测试模式（默认），令牌有效期为 7 天。过期后再次请求时，Claude 会自动弹出浏览器窗口引导你重新认证。\n\n### 第二步：常用指令示例\n\n认证成功后，你可以使用自然语言与 AI 交互，执行复杂的日历操作：\n\n*   **查询空闲时间（跨日历）**：\n    > \"请查看我的工作和个人日历，找出下周与伦敦同事开会 1 小时的合适时间。\"\n\n*   **从图片创建事件**：\n    > \"根据这张截图中的信息，帮我把活动添加到日历里。\"\n    > *(支持 PNG, JPEG, GIF 格式，AI 会自动识别时间、地点和描述)*\n\n*   **管理会议邀请**：\n    > \"接受明天下午 2 点的团队会议邀请。\"\n    > \"拒绝周五的会议，并回复说我有时间冲突。\"\n\n*   **分析日程**：\n    > \"本周有哪些不属于我常规日程安排的会议？\"\n\n### 可用工具列表\n\n底层支持以下工具供 AI 调用：\n\n| 工具名称 | 功能描述 |\n| :--- | :--- |\n| `list-calendars` | 列出所有可用日历 |\n| `list-events` | 列出指定日期的事件 |\n| `create-event` | 创建新事件 |\n| `update-event` \u002F `delete-event` | 更新或删除事件 |\n| `get-freebusy` | 检查跨日历的空闲\u002F忙碌状态 |\n| `respond-to-event` | 响应邀请（接受\u002F拒绝\u002F暂定） |\n| `manage-accounts` | 管理多个连接的 Google 账号 |\n| `search-events` | 通过文本搜索事件 |\n\n现在你已经完成了设置，可以开始让 AI 助手帮你高效管理日程了！","某跨国项目经理需要在协调中美两地团队会议时，快速找出所有人空闲时段并处理复杂的周期性日程调整。\n\n### 没有 google-calendar-mcp 时\n- **多账号切换繁琐**：必须手动登录工作和个人两个 Google 账号，在不同标签页间反复切换查看日程，极易看错时间。\n- **冲突检测靠肉眼**：安排跨时区会议时，需人工比对多个日历的时间块，难以发现隐蔽的行程重叠，常导致会议撞车。\n- **自然语言解析困难**：无法直接对 AI 说“下周三下午找个大家都有空的一小时”，只能自己先查好具体时间再让 AI 写邮件。\n- **非结构化数据处理低效**：收到包含会议信息的 PDF 或截图时，需手动提取时间、地点并逐个录入日历，耗时且易出错。\n- **周期事件修改复杂**：调整每周例会的特定实例（如仅取消下周一次）时，容易误操作影响整个系列，修复成本高昂。\n\n### 使用 google-calendar-mcp 后\n- **多账号同步查询**：google-calendar-mcp 可同时连接工作与私人账号，一次性拉取所有日历数据，无需手动切换身份。\n- **智能冲突自动规避**：工具能自动检测跨账号、跨日历的行程冲突，直接在推荐时间段时排除所有忙时，确保零撞车。\n- **意图驱动的自然调度**：只需指令“帮我在下周三下午找一小时全员空闲”，google-calendar-mcp 即可理解语义并返回精准的可预约时段。\n- **多格式智能导入**：直接发送会议通知截图或 PDF 给 AI，google-calendar-mcp 能自动解析关键信息并一键创建日历事件。\n- **精细化周期管理**：支持对重复事件进行高级修改，可精准定位并调整单次实例而不影响后续系列，操作安全可控。\n\ngoogle-calendar-mcp 将碎片化的日历管理转化为流畅的自然语言交互，让跨团队协作的日程安排变得即时且零误差。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fnspady_google-calendar-mcp_8d738bb9.png","nspady","Nathan Spady","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fnspady_af629d94.jpg",null,"nspady@gmail.com","https:\u002F\u002Fgithub.com\u002Fnspady",[82,86,90,94,98,102],{"name":83,"color":84,"percentage":85},"TypeScript","#3178c6",95,{"name":87,"color":88,"percentage":89},"JavaScript","#f1e05a",1.9,{"name":91,"color":92,"percentage":93},"HTML","#e34c26",1.7,{"name":95,"color":96,"percentage":97},"Shell","#89e051",1,{"name":99,"color":100,"percentage":101},"CSS","#663399",0.4,{"name":103,"color":104,"percentage":105},"Dockerfile","#384d54",0.1,1075,304,"2026-04-03T13:14:15","MIT",4,"macOS, Windows, Linux","未说明",{"notes":114,"python":112,"dependencies":115},"该工具基于 Node.js 运行，非 Python 项目。必须配置 Google Cloud 项目并启用 Calendar API，创建 OAuth 2.0 桌面应用凭证。首次运行需通过浏览器完成 OAuth 认证流程。若在测试模式下运行，令牌有效期为 7 天，需定期重新认证；发布应用到生产模式可避免此限制。支持通过 npx、本地源码编译或 Docker 方式部署。",[116,117,118,119,120,121],"Node.js (LTS 版本)","npm","npx","Docker (可选)","Google Calendar API","OAuth 2.0 凭证 (Desktop app 类型)",[15,45],"2026-03-27T02:49:30.150509","2026-04-06T08:45:45.225695",[126,131,136,141,146,151],{"id":127,"question_zh":128,"answer_zh":129,"source_url":130},13316,"调用工具时出现 'MCP error -32602: Invalid arguments' 错误，提示 calendarId 类型应为字符串却收到了数组，如何解决？","该问题通常发生在尝试一次性从多个日历检索数据时。维护者已发布更新修复了此问题，请升级到最新版本。如果问题仍然存在，请检查您的客户端是否将 calendarId 作为数组传递，而当前版本可能仍期望字符串，或者确认您已正确应用了最新的补丁。","https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F95",{"id":132,"question_zh":133,"answer_zh":134,"source_url":135},13317,"在非 UTC 时区（如 UTC-7）中，全天事件（All-day events）的日期显示比实际日期早一天，怎么办？","这是一个已知的时区处理问题，原因是系统将全天事件视为 UTC 午夜时间戳并进行时区转换，导致日期偏移。该问题已在 v1.4.9 版本中修复。请通过 npm 更新到最新版本：`npm update` 或重新安装 v1.4.9+ 版本即可解决。","https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F83",{"id":137,"question_zh":138,"answer_zh":139,"source_url":140},13318,"如何为 MCP 服务器添加 Google Tasks（谷歌任务）功能？","维护者已在分支中实现了 Google Tasks 的支持。您可以尝试使用包含该功能的最新分支版本。注意目前可能存在一些限制：1. 无法为任务设定具体时间点（默认为全天）；2. 不支持创建重复任务；3. 无法直接创建任务列表（需手动创建）。","https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F147",{"id":142,"question_zh":143,"answer_zh":144,"source_url":145},13319,"遇到 OpenAI 报错 'Invalid schema for function... schema must have type object and not have oneOf\u002FanyOf...' 该如何修复？","这是由于工具定义中的 JSON Schema 包含了 OpenAI 不支持的 `oneOf` 或 `allOf` 结构。解决方法是修改 `\u002Fsrc\u002Fhandlers\u002FlistTools.ts` 文件：1. 将 `list-events` 工具的 `calendarId` 属性从 `oneOf` 改为 `type: [\"string\", \"array\"]`；2. 移除 `update-event` 工具中的 `allOf` 条件验证块。维护者已在最新更新中修复了这些问题，建议直接升级项目版本。","https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F39",{"id":147,"question_zh":148,"answer_zh":149,"source_url":150},13320,"出现 'MCP error -32600: Authentication tokens are no longer valid' 错误，提示认证令牌失效，如何重新认证？","这是因为您使用的 Google Cloud 应用处于“测试模式”，令牌有效期仅为 7 天。解决方法有两种：\n1. **临时解决**：重新运行认证命令刷新令牌：\n   ```sh\n   export GOOGLE_OAUTH_CREDENTIALS=\"\u002Fpath\u002Fto\u002Fyour\u002Fgcp-oauth.keys.json\"\n   npx @cocal\u002Fgoogle-calendar-mcp auth\n   ```\n2. **永久解决**：按照文档 `docs\u002Foauth-verification.md` 将应用发布为“生产模式”（即使仅供个人使用），这样可以获得长期有效的令牌，避免每 7 天过期一次。","https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F62",{"id":152,"question_zh":153,"answer_zh":154,"source_url":130},13321,"在使用多日历查询时，日志显示接收到了正确的 JSON 参数但依然报错，这是为什么？","这通常是由于旧版本代码对 `calendarId` 参数的类型校验过于严格（仅接受字符串而非数组）导致的。虽然调试日志显示客户端发送了包含多个日历 ID 的数组，但服务端校验失败。请确保您已更新到维护者发布的最新修复版本，该版本已放宽了对 `calendarId` 的类型限制，支持数组输入。",[156,161,166,171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251],{"id":157,"version":158,"summary_zh":159,"released_at":160},72026,"v2.6.1","## [2.6.1](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.6.0...v2.6.1) (2026-03-02)\n\n\n### Bug 修复\n\n* **ci:** 移除 registry-url，以便由 npm OIDC 处理认证 ([385fd02](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F385fd02875555aeceb9cb94a259b6d2a96493174))\n* **ci:** 将 npm 升级至 11.5.1+，以支持 OIDC 可信发布 ([934b5b5](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F934b5b58b47a615abe968517adc9df0f25daf633))","2026-03-02T05:41:33",{"id":162,"version":163,"summary_zh":164,"released_at":165},72027,"v2.6.0","## [2.6.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.5.0...v2.6.0) (2026-02-28)\n\n### 功能\n\n* 为 OAuth 安全性添加 PKCE 和 state 参数验证 ([#173](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F173))","2026-03-02T05:22:36",{"id":167,"version":168,"summary_zh":169,"released_at":170},72028,"v2.5.0","## [2.5.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.4.1...v2.5.0) (2026-02-28)\n\n\n### 功能\n\n* 添加批量创建日程工具，用于批量创建日程 ([#169](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F169)) ([fa7ab34](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Ffa7ab34daaec48ed953b16bb4ebe53d5ca912b36))\n* 为开始和结束时间支持按字段设置时区 ([#171](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F171)) ([6394e36](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F6394e36bb66cc85c8ab301c0e76995e962412a0c))\n\n\n### 错误修复\n\n* 优化 `create-events` 处理程序的错误处理和缓存逻辑 ([f4265c9](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Ff4265c980094dcc82abf633ec20ea0ac5de9d28e))\n* 通过 `recurringEventId` 检测重复事件实例 ([#164](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F164)) ([a26140c](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fa26140ce19b93d08dbbada70e768bd9ba8fa9463))","2026-02-28T22:35:57",{"id":172,"version":173,"summary_zh":174,"released_at":175},72029,"v2.4.1","## [2.4.1](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.4.0...v2.4.1) (2026-01-18)\n\n\n### Bug 修复\n\n* 添加 gaxios 作为直接依赖 ([00a0755](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F00a0755fd29cf4070a4534917d36c2860da695fa))","2026-01-18T05:13:00",{"id":177,"version":178,"summary_zh":179,"released_at":180},72030,"v2.4.0","## [2.4.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.3.1...v2.4.0) (2026-01-18)\n\n\n### 功能\n\n* 在 get-current-time 响应中添加 dayOfWeek 字段 ([#159](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F159)) ([cf588b8](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fcf588b8f77cf3754a84e2d2d98e5d1c7999c15a6))\n* 在 StructuredEvent 中添加 startDayOfWeek 和 endDayOfWeek 字段 ([#157](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F157)) ([49342fc](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F49342fccc5f01423b942d7af0663fa39e2f9fa3e))\n* 为 PR 添加工具描述的标记分析功能 ([ee56e8c](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fee56e8cbcc198f1de70fc2a0782ddbfab06af916))","2026-01-18T04:50:32",{"id":182,"version":183,"summary_zh":184,"released_at":185},72031,"v2.3.1","## [2.3.1](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.3.0...v2.3.1) (2026-01-06)\n\n\n### 功能\n\n* 将事件类型整合到创建事件工具中 ([#150](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F150)) ([633a0e5](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F633a0e5073e53a4b3a8b5084bcb2b5cb291d9173))","2026-01-06T05:40:55",{"id":187,"version":188,"summary_zh":189,"released_at":190},72032,"v2.3.0","## [2.3.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.2.0...v2.3.0) (2026-01-06)\n\n\n### 功能特性\n\n* 新增专注时间、外出中和工作地点事件类型 ([#144](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F144)) ([ee5f870](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fee5f870830d0c9f10b01d3624ebd2c24764bf928))\n* 增加通过 --enable-tools 标志进行工具过滤的功能 ([#149](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F149)) ([7cdba06](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F7cdba06a0339d37d6f3616d7a984039ffadc8e88))\n\n\n### 错误修复\n\n* **update-event:** 更新与会者时保留其响应状态 ([#148](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F148)) ([48d5f3f](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F48d5f3f28b563cc8b83d2a64a9ecb6fa59111761))","2026-01-06T04:55:13",{"id":192,"version":193,"summary_zh":194,"released_at":195},72033,"v2.2.0","## [2.2.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.1.0...v2.2.0) (2025-12-07)\n\n\n### 功能\n\n* 添加聊天内账户管理工具 manage-accounts ([#139](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F139)) ([9d938b0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F9d938b0856ad0e4c74a60bd50de22a367ced8630))\n* 在认证 CLI 命令中支持 account-id 参数 ([#137](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F137)) ([cbdf2db](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fcbdf2dbd13e8ad758b54281ba6248d0c0bf26165))","2025-12-07T23:54:09",{"id":197,"version":198,"summary_zh":199,"released_at":200},72034,"v2.1.0","## [2.1.0](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.7...v2.1.0) (2025-12-06)\n\n\n### 功能特性\n\n* 多账号支持，配备智能日历路由及安全加固措施（[#132](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F132)）（[11fff7f](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F11fff7f9206150f612c75fafca82c75dbff8268a)）\n* 带多账号支持的事件响应工具（[#136](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F136)）（[7ccfae4](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F7ccfae44be387d8f484a731a7ecd622490a424e2)）\n\n\n### 错误修复\n\n* 处理单账号模式下的“primary”日历别名（[b3949d2](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fb3949d2b0a1402f210332d61d53d35afc0168c1f)）\n* 防止通过 HTTP 传输中的子域名绕过来源限制（[f8cacd6](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Ff8cacd68d5509eb1872e6ebcf23723e672934ef4)）","2025-12-06T05:01:09",{"id":202,"version":203,"summary_zh":204,"released_at":205},72035,"v2.0.7","## [2.0.7](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.6...v2.0.7) (2025-11-05)\n\n\n### 错误修复\n\n* 将提醒和重复设置添加到默认事件字段中 ([#128](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F128)) ([#130](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F130)) ([5b32b9b](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F5b32b9b6f30866c9382bbbea578c457a06ac6d3f))\n* 返回请求时区的当前时间，而非 UTC 时间 ([#127](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F127)) ([63f7aed](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F63f7aed9f7725c90de858e1b75fa9a59d6f3c77f))","2025-11-05T00:13:50",{"id":207,"version":208,"summary_zh":209,"released_at":210},72036,"v2.0.6","## [2.0.6](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.5...v2.0.6) (2025-10-22)\n\n\n### Bug Fixes\n\n* support converting between timed and all-day events in update-event ([#119](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F119)) ([407e4c8](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F407e4c89753932e13f9ccd55800999b4b12288be))","2025-10-22T04:38:59",{"id":212,"version":213,"summary_zh":214,"released_at":215},72037,"v2.0.5","## [2.0.5](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.4...v2.0.5) (2025-10-19)\n\n\n### Bug Fixes\n\n* **list-events:** support native arrays for Python MCP clients ([#95](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F95)) ([#116](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F116)) ([0e91c23](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F0e91c23c9ae9db0c0ff863cd9019f6212544f62a))","2025-10-19T18:44:40",{"id":217,"version":218,"summary_zh":219,"released_at":220},72038,"v2.0.4","## [2.0.4](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.3...v2.0.4) (2025-10-15)\n\n\n### Bug Fixes\n\n* resolve macOS installation error and improve publish workflow ([ec13f39](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002Fec13f397652a864cccd003f05ddd03d4e046316f)), closes [#113](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F113)","2025-10-15T05:43:48",{"id":222,"version":223,"summary_zh":224,"released_at":225},72039,"v2.0.3","## [2.0.3](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.2...v2.0.3) (2025-10-15)\n\n\n### Bug Fixes\n\n* move esbuild to devDependencies and fix publish workflow ([3900358](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F39003589278dbab95c85f27af012293405f34f74)), closes [#113](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F113)","2025-10-15T05:35:20",{"id":227,"version":228,"summary_zh":229,"released_at":230},72040,"v2.0.2","## [2.0.2](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv2.0.1...v2.0.2) (2025-10-14)\n\n\n### Bug Fixes\n\n* **auth:** improve port availability error message ([9205fd7](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcommit\u002F9205fd75445702d9e49520e4183c96a93078ea46)), closes [#110](https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fissues\u002F110)","2025-10-14T18:04:57",{"id":232,"version":233,"summary_zh":234,"released_at":235},72041,"v2.0.1","Published to npm manually","2025-10-13T18:20:27",{"id":237,"version":238,"summary_zh":239,"released_at":240},72042,"v2.0.0","# 🎉 Version 2.0.0 - Major Update\n\n## 🚀 Breaking Changes\n\n- **Structured JSON Output**: All tools now return structured JSON responses for improved parsing and integration with AI models (#87)\n  - Consistent response format across all handlers\n  - Better error handling and validation\n  - Enhanced compatibility with MCP clients\n\n## ✨ New Features\n\n- **Quota Project Support**: Added centralized credential handling with quota project header support (#101)\n  - Resolves quota and billing issues\n  - Better support for GCP projects with billing enabled\n\n- **Array Format for Calendar IDs**: `list-events` now accepts native array format for multi-calendar queries (#100)\n  - Supports JSON array syntax: `[\"cal1\", \"cal2\"]`\n  - More intuitive for programmatic access\n\n- **Smart Conflict Detection**: Intelligent event scheduling conflict detection (#84)\n  - Detects overlapping events\n  - Identifies potential duplicate events\n  - Provides actionable conflict resolution suggestions\n\n- **Conference Data Support**: Added full support for Google Meet and other conference providers in `update-event` (#88)\n  - Create, update, and manage video conferences\n  - Support for multiple conference solutions\n\n- **Calendar Context Enhancements**: Improved calendar metadata and context retrieval (#80)\n  - Better timezone handling\n  - Enhanced calendar information in responses\n\n## 🐛 Bug Fixes\n\n- Fixed all-day event timezone handling (#85)\n- Corrected JavaScript examples in documentation (#91)\n- Improved event ID validation and error messages\n\n## 📚 Documentation\n\n- Comprehensive Docker deployment documentation (#98)\n- Updated setup instructions and troubleshooting guides\n- Enhanced README with clearer configuration examples\n\n## 🎨 Improvements\n\n- Color support in `list-events` responses (#78)\n- Better error messages and debugging information\n- Improved test coverage and reliability\n- Enhanced TypeScript type safety\n\n## 📦 Dependencies\n\n- Updated `@modelcontextprotocol\u002Fsdk` to v1.12.1\n- Updated Google APIs and auth libraries\n- All dependencies up to date\n\n---\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv1.4.8...v2.0.0","2025-10-11T03:33:17",{"id":242,"version":243,"summary_zh":244,"released_at":245},72043,"v1.4.8","## Changes in this Release\n\n- Package published to npm as `@cocal\u002Fgoogle-calendar-mcp@1.4.8`\n- Can be installed with: `npx @cocal\u002Fgoogle-calendar-mcp@1.4.8`\n\n### Installation\n```bash\n# Install globally\nnpm install -g @cocal\u002Fgoogle-calendar-mcp@1.4.8\n\n# Run directly with npx\nnpx @cocal\u002Fgoogle-calendar-mcp@1.4.8\n```\n\nSee the [CHANGELOG](CHANGELOG.md) for detailed changes.\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv1.4.7...v1.4.8","2025-07-03T19:34:50",{"id":247,"version":248,"summary_zh":249,"released_at":250},72044,"1.4.6","## What's Changed\r\n* Fix event update logic and improve responses by @nspady in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F58\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv1.4.3...1.4.6","2025-06-17T22:59:33",{"id":252,"version":253,"summary_zh":254,"released_at":255},72045,"v1.4.0","## What's Changed\r\n* Update docs to reflect usage of GOOGLE_OAUTH_CREDENTIALS by @nspady in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F42\r\n* Refactor README.md to streamline OAuth credential configuration by @nspady in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F43\r\n* Update README.md: notifications, add test user (under Audience) by @pandigita in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F47\r\n* Add Streamable HTTP Support & Enhanced Calendar Features by @nspady in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F40\r\n* Improved timezone handling by @nspady in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F52\r\n\r\n## New Contributors\r\n* @pandigita made their first contribution in https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fpull\u002F47\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fnspady\u002Fgoogle-calendar-mcp\u002Fcompare\u002Fv1.3.0...v1.4.0","2025-06-17T01:12:58"]