此MCP服务器允许Claude与您的Google日历进行交互,实现诸如列出事件、创建会议和查找空闲时间段等功能。
https://www.googleapis.com/auth/calendarhttps://www.googleapis.com/auth/calendar.eventsgetToken.js的新文件:const { google } = require('googleapis');
const http = require('http');
const url = require('url');
// 替换为您的OAuth 2.0凭证
const CLIENT_ID = 'your-client-id';
const CLIENT_SECRET = 'your-client-secret';
const REDIRECT_URI = 'http://localhost:3000/oauth2callback';
// 配置OAuth2客户端
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'
];
async function getRefreshToken() {
return new Promise((resolve, reject) => {
try {
// 创建服务器以处理OAuth回调
const server = http.createServer(async (req, res) => {
try {
const queryParams = url.parse(req.url, true).query;
if (queryParams.code) {
// 从代码中获取令牌
const { tokens } = await oauth2Client.getToken(queryParams.code);
console.log('\n=================');
console.log('刷新令牌:', tokens.refresh_token);
console.log('=================\n');
console.log('请将此刷新令牌保存在您的配置中!');
// 发送成功响应
res.end('身份验证成功!您可以关闭此窗口。');
// 关闭服务器
server.close();
resolve(tokens);
}
} catch (error) {
console.error('获取令牌时出错:', error);
res.end('身份验证失败!请检查控制台中的错误。');
reject(error);
}
}).listen(3000, () => {
// 生成授权URL
const authUrl = oauth2Client.generateAuthUrl({
access_type: 'offline',
scope: scopes,
prompt: 'consent' // 强制显示同意屏幕以确保刷新令牌
});
console.log('1. 复制此URL并粘贴到浏览器中:');
console.log('\n', authUrl, '\n');
console.log('2. 按照Google的身份验证过程操作');
console.log('3. 等待刷新令牌在此处出现');
});
} catch (error) {
console.error('创建服务器时出错:', error);
reject(error);
}
});
}
// 运行令牌检索
getRefreshToken().catch(console.error);
npm install googleapis
使用您的OAuth凭证更新脚本:
your-client-id替换为您实际的客户端IDyour-client-secret替换为您实际的客户端密钥运行脚本:
node getToken.js
对于MacOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
对于Windows:
code %AppData%\Claude\claude_desktop_config.json
{
"mcpServers": {
"google-calendar": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/YOUR/build/index.js"
],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id_here",
"GOOGLE_CLIENT_SECRET": "your_client_secret_here",
"GOOGLE_REDIRECT_URI": "http://localhost",
"GOOGLE_REFRESH_TOKEN": "your_refresh_token_here"
}
}
}
}
mkdir google-calendar-mcp
cd google-calendar-mcp
npm init -y
npm install @modelcontextprotocol/sdk googleapis google-auth-library zod
npm install -D @types/node typescript
{
"compilerOptions": {
"target": "ES2022",
"module": "Node16",
1. "moduleResolution": "Node16",
"outDir": "./build",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true
},
"include": ["src/**/*"],
"exclude": ["node_modules"]
}
{
"type": "module",
"scripts": {
"build": "tsc && node -e \"require('fs').chmodSync('build/index.js', '755')\""
}
}
mkdir src
GOOGLE_CLIENT_ID=your_client_id_here
GOOGLE_CLIENT_SECRET=your_client_secret_here
GOOGLE_REDIRECT_URI=http://localhost
GOOGLE_REFRESH_TOKEN=your_refresh_token_here
npm run build
服务器提供以下工具:
list_events:列出指定时间范围内的日历事件create_event:创建新的日历事件update_event:更新现有的日历事件delete_event:删除日历事件find_free_time:查找日历中的可用时间段设置完成后,您可以使用如下命令:
工具未出现在Claude中:
tail -f ~/Library/Logs/Claude/mcp*.log认证错误:
服务器连接问题:
node /path/to/build/index.js要查看服务器日志:
# 对于MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
# 对于Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
如果您遇到环境变量错误,请验证每个变量:
MIT许可 - 详情见LICENSE文件。
如果您遇到任何问题: