Google日历管理库

一个基于TypeScript的Google日历MCP服务器,可作为标准MCP服务器运行或直接作为库使用,提供日历和事件管理功能。

  • by appler1009
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 appler1009/google-calendar-mcp-lib

使用说明

谷歌日历mcp库

谷歌日历 主控程序 用TypeScript编写的服务器。可以作为stdio MCP服务器运行,也可以直接用作具有导入函数的库。

工具

所有工具都以前缀 googleCalendar:

工具 说明
googleCalendarListCalendars 列出经过身份验证的用户可访问的所有日历
googleCalendarListEvents 使用可选筛选器列出日历中的事件
googleCalendarGetEvent 按ID获取特定事件
googleCalendarCreateEvent 创建新事件
googleCalendarUpdateEvent 更新现有事件
googleCalendarDeleteEvent 删除事件

认证

每个工具都接受可选的身份验证参数。如果没有提供,服务器将回退到环境变量。

参数 环境变量
accessToken GOOGLE_ACCESS_TOKEN
refreshToken GOOGLE_REFRESH_TOKEN
clientId GOOGLE_CLIENT_ID
clientSecret GOOGLE_CLIENT_SECRET

仅 accessToken 是必需的。 clientId 和 clientSecret 仅当您希望客户端使用 refreshToken.

要获取凭据,请在 谷歌云控制台 随着 https://www.googleapis.com/auth/calendar 范围。

用法

作为MCP stdio服务器

构建并运行:

npm install
npm run build
node dist/index.js

或者在开发过程中:

npm run dev

Claude桌面配置

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "google-calendar": {
      "command": "node",
      "args": ["/absolute/path/to/dist/index.js"],
      "env": {
        "GOOGLE_ACCESS_TOKEN": "ya29.xxx",
        "GOOGLE_REFRESH_TOKEN": "1//xxx",
        "GOOGLE_CLIENT_ID": "xxx.apps.googleusercontent.com",
        "GOOGLE_CLIENT_SECRET": "xxx"
      }
    }
  }
}

作为一个图书馆

直接导入和调用函数,每次调用传递凭据:

import {
  googleCalendarListEvents,
  googleCalendarCreateEvent,
  googleCalendarDeleteEvent,
} from "./dist/api.js";

// List upcoming events
const events = await googleCalendarListEvents({
  accessToken: "ya29.xxx",
  calendarId: "primary",
  timeMin: new Date().toISOString(),
  maxResults: 10,
});

// Create an event
const event = await googleCalendarCreateEvent({
  accessToken: "ya29.xxx",
  summary: "Team standup",
  start: { dateTime: "2026-03-10T09:00:00-08:00", timeZone: "America/Los_Angeles" },
  end:   { dateTime: "2026-03-10T09:30:00-08:00", timeZone: "America/Los_Angeles" },
  attendees: [{ email: "colleague@example.com" }],
  sendUpdates: "all",
});

// Delete it
await googleCalendarDeleteEvent({
  accessToken: "ya29.xxx",
  eventId: event.id,
});

或者依赖环境变量并完全省略auth-parms:

export GOOGLE_ACCESS_TOKEN=ya29.xxx
const calendars = await googleCalendarListCalendars({});

发展

npm install          # install dependencies
npm run build        # compile TypeScript → dist/
npm run dev          # run stdio server with tsx (no build step)

项目结构

src/
  auth.ts      — credential resolution and OAuth2Client factory
  calendar.ts  — Google Calendar API v3 wrappers
  tools.ts     — callable functions + Zod input schemas
  server.ts    — MCP server with all tools registered
  api.ts       — library entry point (re-exports everything)
  index.ts     — stdio entry point (bin)