mcpField
G
Google Calendar MCP Server

Google Calendar MCP Server

本地服务
github.com/ymello生产力182 周前更新

关于 Google Calendar MCP Server

Google Calendar MCP Server 通过 stdio 或 HTTP/SSE 将 MCP 客户端连接到 Google Calendar。它支持管理日历事件和查找空闲时段,适用于持有 Google API OAuth 凭据的用户。

主要功能

  1. 01列出日历事件
  2. 02创建、更新和删除事件
  3. 03查找空闲时段
  4. 04支持 stdio 和 HTTP/SSE

适用场景

  1. 01查看指定时间范围内的事件
  2. 02管理会议详情和参会者
  3. 03查找指定时长的空闲时间

MCP 相关

它将 Google Calendar 操作作为 MCP 工具提供,包括列出、创建、更新和删除事件,以及查找空闲时间。客户端可通过 stdio 或文档所述的 SSE 端点连接。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Google Calendar MCP 服务

Google Calendar 的 Model Context Protocol(MCP)实现,支持通过命令行或 Server-Sent Events(SSE)与日历事件交互。

功能

  • 列出日历事件
  • 创建新事件
  • 更新现有事件
  • 删除事件
  • 查找空闲时间

前提条件

  • Node.js 18 或更高版本
  • 拥有 Google Calendar API 访问权限的 Google 账号
  • Google Cloud Console 的 OAuth 2.0 凭据

配置

  1. 将 .env.example 文件复制为 .env:

    cp .env.example .env
    
  2. 在 .env 文件中配置 Google OAuth 2.0 凭据:

    GOOGLE_CLIENT_ID=seu-client-id
    GOOGLE_CLIENT_SECRET=seu-client-secret
    GOOGLE_REDIRECT_URI=http://localhost:3000/oauth2callback
    GOOGLE_REFRESH_TOKEN=seu-refresh-token
    PORT=3334
    
  3. 安装依赖:

    npm install
    
  4. 编译代码:

    npm run build
    

使用

作为 HTTP/SSE 服务运行

启动 HTTP/SSE 服务:

npm run start:http

这将在指定端口启动服务(默认:3334)。

可用端点:

  • GET /sse - 连接到 SSE 流
  • POST /messages - 向服务发送消息
作为 CLI(stdio)运行

以 stdio 模式运行服务,将其用作 CLI 工具:

npm run start:stdio

与 MCP 客户端集成

Claude Desktop

若要将此服务与 Claude Desktop 配合使用,请将以下配置添加到 Claude 配置文件中:

在 MacOS 上:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

在 Windows 上:

code %AppData%\Claude\claude_desktop_config.json

添加以下配置:

{
  "mcpServers": {
    "google-calendar": {
      "command": "node",
      "args": [
        "/caminho/absoluto/para/o/build/index.js"
      ],
      "env": {
        "GOOGLE_CLIENT_ID": "seu-client-id",
        "GOOGLE_CLIENT_SECRET": "seu-client-secret",
        "GOOGLE_REDIRECT_URI": "seu-redirect-uri",
        "GOOGLE_REFRESH_TOKEN": "seu-refresh-token"
      }
    }
  }
}
与其他 MCP 客户端集成

对于支持通过 SSE 通信的其他 MCP 客户端,请将其指向以下端点:

  • SSE 端点:http://localhost:3334/sse
  • 消息端点:http://localhost:3334/messages

可用工具

Google Calendar MCP 服务提供以下工具:

list_events

列出指定时间范围内的事件。

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "maxResults": 10
}
create_event

在日历中创建新事件。

{
  "summary": "Reunião importante",
  "description": "Discussão sobre o projeto XYZ",
  "startTime": "2023-09-15T14:00:00Z",
  "endTime": "2023-09-15T15:00:00Z",
  "attendees": ["[email protected]", "[email protected]"]
}
update_event

更新现有事件。

{
  "eventId": "abc123xyz",
  "summary": "Reunião atualizada",
  "startTime": "2023-09-15T14:30:00Z",
  "endTime": "2023-09-15T15:30:00Z"
}
delete_event

删除日历事件。

{
  "eventId": "abc123xyz"
}
find_free_time

查找指定时间范围内的空闲时间。

{
  "timeMin": "2023-09-01T00:00:00Z",
  "timeMax": "2023-09-30T23:59:59Z",
  "duration": 60
}

获取 Refresh Token

若要获取 Google 的 refresh token,可以使用以下脚本:

const { google } = require('googleapis');
const http = require('http');
const url = require('url');

// Substituir com suas credenciais
const CLIENT_ID = 'seu-client-id';
const CLIENT_SECRET = 'seu-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('Refresh Token:', tokens.refresh_token);
        res.end('Autenticação bem-sucedida! Você pode fechar esta janela.');
        server.close();
      } catch (error) {
        console.error('Erro ao obter tokens:', error);
        res.end('Falha na autenticação!');
      }
    }
  }).listen(3000, () => {
    const authUrl = oauth2Client.generateAuthUrl({
      access_type: 'offline',
      scope: scopes,
      prompt: 'consent'
    });

    console.log('Acesse esta URL no navegador:');
    console.log(authUrl);
  });
}

getRefreshToken();

将此脚本保存为 getToken.js,使用 node getToken.js 运行,并按照说明获取 refresh token。

开发

开发时,可以运行:

npm run dev

这将以观察模式编译 TypeScript,让你能够进行修改并实时查看结果。

故障排除

常见问题
  1. Google 身份验证错误

    • 检查凭据是否正确
    • 确认 refresh token 是否有效
    • 确保已启用所需的作用域
  2. 服务无法启动

    • 检查是否已设置所有环境变量
    • 确认构建过程是否成功
    • 检查文件 build/index.js 的权限
  3. SSE 连接失败

    • 确认端口(默认 3334)是否可用
    • 检查日志中的具体错误
    • 确保端点配置正确

许可证

ISC

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。