Google Calendar MCP Server について
Google Calendar MCP Serverは、stdioまたはHTTP/SSEでMCPクライアントをGoogle Calendarに接続します。Google APIのOAuth認証情報を持つユーザー向けに、予定の管理や空き時間の検索を提供します。
主な機能
- 01カレンダー予定の一覧表示
- 02予定の作成・更新・削除
- 03空き時間の検索
- 04stdioとHTTP/SSEに対応
活用シーン
- 01指定期間内の予定確認
- 02会議の詳細や参加者の管理
- 03指定時間分の空き時間の検索
MCP 対応
予定の一覧表示、作成、更新、削除、空き時間の検索をMCPツールとして公開します。クライアントはstdioまたは記載されたSSEエンドポイントで接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Google Calendar MCP サーバー
Google Calendar 用の Model Context Protocol(MCP)実装です。CLI または 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)として実行
CLI ツールとして使用する場合は、stdio モードでサーバーを実行します。
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
}
リフレッシュトークンの取得
Google のリフレッシュトークンを取得するには、次のスクリプトを使用できます。
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 で実行して、指示に従ってリフレッシュトークンを取得してください。
開発
開発時には、次のコマンドを実行できます。
npm run dev
TypeScript が監視モードでコンパイルされるため、変更を加えてリアルタイムで結果を確認できます。
トラブルシューティング
よくある問題
-
Google の認証エラー
- 認証情報が正しいことを確認してください
- リフレッシュトークンが有効であることを確認してください
- 必要なスコープが有効になっていることを確認してください
-
サーバーが起動しない
- すべての環境変数が設定されていることを確認してください
- ビルドが正常に完了したことを確認してください
- build/index.js ファイルの権限を確認してください
-
SSE 接続の失敗
- ポート(デフォルト:3334)が使用可能であることを確認してください
- ログで具体的なエラーを確認してください
- エンドポイントが正しく設定されていることを確認してください
ライセンス
ISC
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。