关于 Google Calendar MCP Server
Google Calendar MCP Server 通过 stdio 或 HTTP/SSE 将 MCP 客户端连接到 Google Calendar。它支持管理日历事件和查找空闲时段,适用于持有 Google API OAuth 凭据的用户。
主要功能
- 01列出日历事件
- 02创建、更新和删除事件
- 03查找空闲时段
- 04支持 stdio 和 HTTP/SSE
适用场景
- 01查看指定时间范围内的事件
- 02管理会议详情和参会者
- 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 凭据
配置
-
将
.env.example文件复制为.env:cp .env.example .env -
在
.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 -
安装依赖:
npm install -
编译代码:
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,让你能够进行修改并实时查看结果。
故障排除
常见问题
-
Google 身份验证错误
- 检查凭据是否正确
- 确认 refresh token 是否有效
- 确保已启用所需的作用域
-
服务无法启动
- 检查是否已设置所有环境变量
- 确认构建过程是否成功
- 检查文件 build/index.js 的权限
-
SSE 连接失败
- 确认端口(默认 3334)是否可用
- 检查日志中的具体错误
- 确保端点配置正确
许可证
ISC
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。