返回 MCP 目录
public公开dns本地运行

mcp-google-calendar-server

一个基于Model Context Protocol (MCP)的Google Calendar服务实现,提供日历事件的增删改查和空闲时间查找功能,支持CLI和SSE两种交互方式。

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"
  }
}

📚 详细文档

获取刷新令牌

步骤说明

  1. 运行以下脚本以启动授权流程:
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();
  1. 根据脚本输出的 URL,在浏览器中访问并按照提示完成授权流程。
  2. 授权完成后,控制台将显示新的刷新令牌。

开发与调试

npm run dev

常见问题解决

  • 认证错误:检查客户端 ID、密码和重定向 URI 是否正确配置。
  • 服务器启动失败:确保端口未被占用或权限设置正确。

📄 许可证

本项目的使用遵循 ISC 协议。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端