Google Calendar MCP について
Google Calendar MCPは、AIアプリから自然言語でGoogle Calendarの予定を確認・管理するサービスです。繰り返し予定全体と単一の予定を区別し、デフォルトではゲストにメールを送りません。
主な機能
- 01カレンダー、予定、空き時間の確認
- 02会議や繰り返し予定の作成と編集
- 03繰り返し予定の個別回の管理
- 04Out of OfficeとFocus Timeの作成
- 05ゲストとGoogle Meetリンクの管理
活用シーン
- 01週の予定を確認し重複会議を特定
- 02複数人が空いている時間を検索
- 03ゲストとMeetリンク付きの会議を設定
- 04シリーズを残して繰り返し予定の一回分をキャンセル
MCP 対応
MCP サーバーとして、Google Calendarのカレンダー、予定、空き時間を読み取り・管理するツールをMCPクライアントに提供します。Google Calendar APIとOAuthでアカウントにアクセスし、書き込み時もデフォルトでは招待メールを送信しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @a1-x-tech/mcp-google-calendarGOOGLE_CALENDAR_CLIENT_IDGoogle OAuth2 client id (refresh-token flow).GOOGLE_CALENDAR_CLIENT_SECRETシークレットGoogle OAuth2 client secret (refresh-token flow). Treat it as a secret.GOOGLE_CALENDAR_REFRESH_TOKENシークレットGoogle OAuth2 refresh token, exchanged for access tokens automatically. Treat it as a secret.GOOGLE_CALENDAR_ACCESS_TOKENシークレットStatic OAuth2 access token (~1h lifetime) — alternative to the refresh-token trio, mostly for testing.GOOGLE_CALENDAR_OAUTH_PORTシークレットFixed port for the loopback listener of the in-chat login (127.0.0.1 + PKCE). Set it when the client runs over SSH port forwarding; otherwise a free port is picked per login.GOOGLE_CALENDAR_API_BASEAPI root override.GOOGLE_CALENDAR_TIMEOUT_MSPer-request timeout in milliseconds.GOOGLE_CALENDAR_MAX_RETRIESRetries on transient errors (429 always; 5xx/network for reads).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
19掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
Google Calendar MCP
英語 | ロシア語
A1 Google Calendar MCPを使うと、AI アプリから自然な言葉で Google Calendar を管理できます。今週の予定を確認したり、ゲストと Google Meet のリンクを含めて会議を設定したり、予定を変更・キャンセルしたり、全員の空いている時間を探したり、外出中や集中時間をブロックしたりできます。
Google アカウントで Google Calendar API を使用します。定期的な予定のシリーズ全体と、単一の予定を区別し、Calendar API ですべてのカレンダー操作が可能であるかのように装うのではなく、その制限を明確にします。
- 19 個のツール。 カレンダー、予定、空き時間情報の確認、予定の作成と編集、定期的な予定シリーズの展開、外出中や集中時間のブロックに加え、Google アカウントへの接続用ツールが 6 個あります。
- チャットからサインイン。 手書きの認証情報ファイルは不要です。アシスタントに接続を依頼し、ブラウザーでアクセスを承認すれば、再起動せずに次のリクエストから使えます。クライアントシークレットはファイルパスとして渡され、会話を通じて送信されることはありません。
- 誤ってメールが送信されることはありません。 招待、変更、キャンセルについて Calendar API のデフォルトではメールは送信されません。
send_updatesで依頼した場合にのみ、ゲストにメールが送信されます。 - 書き込み操作は再実行されません。 曖昧な失敗が発生しても、サーバーは書き込みを再試行しません。予定が重複すると、すべてのゲストにメールが再送信される可能性があるためです。
- Google のスコープは最小限。 広範な
calendarスコープは使わず、calendar.eventsとcalendar.readonlyを使用します。
まずは、読み取り専用の質問から始めましょう。
今週のカレンダーの予定は何ですか?重複している会議があれば教えてください。
サーバーに接続する · ユースケースを見る · 技術ドキュメントを開く
1 分で動作を確認
あなた: 木曜日はどんな予定ですか?Anna と私の両方が空いている時間はいつですか?
アシスタント: 木曜日の予定と、あなたと Anna の両方が空いている時間を表示します。予定は変更されません。
あなた: 最初に二人とも空いている時間に、Anna との 45 分間のデザインレビューを Google Meet のリンク付きで予約してください。
アシスタント: 予定の候補日時、ゲスト一覧、Meet のリンクを表示し、予定を作成する前に確認を求めます。
あなた: 確定してください。
アシスタント: 予定を作成します。招待メールの送信を依頼しない限り、誰にもメールは送信されません。
目次
クイックスタート
Node.js 20 以降、Google アカウント、および Google Calendar API を有効にした Google Cloud プロジェクトの OAuth 認証情報が必要です。
- Google OAuth アクセスを準備する。
- MCP サーバーを AI アプリに追加します。
- 上記の読み取り専用の質問をします。
Codex
アプリ内の場合: Settings → MCP servers を開き、Add server を選択して、STDIO を選び、コマンド npx -y @a1-x-tech/mcp-google-calendar@latest と環境変数 GOOGLE_CALENDAR_CLIENT_ID、GOOGLE_CALENDAR_CLIENT_SECRET、GOOGLE_CALENDAR_REFRESH_TOKEN を入力し、Save、Restart の順に選択します。
コマンドラインからの場合:
codex mcp add google-calendar \
--env GOOGLE_CALENDAR_CLIENT_ID=your_client_id \
--env GOOGLE_CALENDAR_CLIENT_SECRET=your_client_secret \
--env GOOGLE_CALENDAR_REFRESH_TOKEN=your_refresh_token \
-- npx -y @a1-x-tech/mcp-google-calendar@latest
codex mcp list
Claude Code
claude mcp add \
--env GOOGLE_CALENDAR_CLIENT_ID=your_client_id \
--env GOOGLE_CALENDAR_CLIENT_SECRET=your_client_secret \
--env GOOGLE_CALENDAR_REFRESH_TOKEN=your_refresh_token \
--transport stdio --scope user google-calendar \
-- npx -y @a1-x-tech/mcp-google-calendar@latest
claude mcp list
Claude Desktop
現在の公式な手順は Settings → Extensions です。カスタムデスクトップ拡張機能を使うには、Advanced settings → Extension Developer → Install Extension… を開き、.mcpb ファイルを選択して、画面の指示に従います。
このリポジトリでは現在 npm の stdio パッケージを公開しており、.mcpb バンドルは含まれていません。引き続きローカル設定に対応している Claude Desktop ビルドでは、代替手段として次の JSON stdio 設定を使用してください。
{
"mcpServers": {
"google-calendar": {
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
"env": {
"GOOGLE_CALENDAR_CLIENT_ID": "your_client_id",
"GOOGLE_CALENDAR_CLIENT_SECRET": "your_client_secret",
"GOOGLE_CALENDAR_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
これらのビルドでは、macOS の場合は ~/Library/Application Support/Claude/claude_desktop_config.json に、Windows の場合は %APPDATA%\Claude\claude_desktop_config.json に保存します。
Cursor
macOS/Linux の場合は ~/.cursor/mcp.json に、Windows の場合は %USERPROFILE%\.cursor\mcp.json に次の内容を追加します。
{
"mcpServers": {
"google-calendar": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
"env": {
"GOOGLE_CALENDAR_CLIENT_ID": "your_client_id",
"GOOGLE_CALENDAR_CLIENT_SECRET": "your_client_secret",
"GOOGLE_CALENDAR_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
VS Code
MCP: Open User Configuration を実行して、次の内容を追加します。
{
"servers": {
"google-calendar": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-calendar@latest"],
"env": {
"GOOGLE_CALENDAR_CLIENT_ID": "${input:calendar_client_id}",
"GOOGLE_CALENDAR_CLIENT_SECRET": "${input:calendar_client_secret}",
"GOOGLE_CALENDAR_REFRESH_TOKEN": "${input:calendar_refresh_token}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "calendar_client_id", "description": "Google OAuth client ID" },
{ "type": "promptString", "id": "calendar_client_secret", "description": "Google OAuth client secret", "password": true },
{ "type": "promptString", "id": "calendar_refresh_token", "description": "Google OAuth refresh token", "password": true }
]
}
MCP: List Servers で確認します。
できること
スケジュールを確認する
- 今週の会議を教えてください。定期的な会議も含めてください。
- 明日の1対1の会議について、ゲスト、Meet のリンク、リマインダーを表示してください。
- 3月のチーム同期の予定をすべて一覧表示してください。
会議を計画・変更する
- 木曜日に、ゲスト2人と Google Meet のリンクを含む45分のレビュー会議を作成してください。
- レトロスペクティブを1時間遅らせて、ゲストリストを更新してください。ただし、まだ誰にもメールを送らないでください。
- 計画会議をチームのカレンダーに移動してください。
- 金曜日のスタンドアップだけをキャンセルし、シリーズのほかの予定はそのままにしてください。
自分の時間を守る
- 来週、Anna、Boris、私の全員が1時間空いているのはいつですか?
- 休暇中の不在予定を登録し、新しい招待を自動的に辞退してください。
- 明日の朝に2時間の集中時間を作成し、Google Chat の通知をミュートしてください。
イベントの変更方法
calendar_id: "primary"はメインカレンダーです。それ以外のカレンダーはlist_calendarsから取得でき、書き込みには編集者アクセス権が必要です。- 定期的なシリーズと単一の予定では ID が異なります。シリーズ ID を使うとすべての予定が変更またはキャンセルされ、インスタンス ID(
list_event_instancesから取得)を使うと特定の予定だけが変更されます。 update_eventで変更されるのは指定したフィールドだけですが、ネストされたオブジェクトは以前の内容全体を置き換えます。新しいattendeesリストを指定すると、ゲストリスト全体が置き換えられます。send_updatesで指定しない限り、書き込みによってメールが送信されることはありません。Calendar API のデフォルトでは通知されません。
不在(Out of Office)と集中時間のブロックを作成できるのは、Google Workspace アカウントのメインカレンダーのみです。個人用 Gmail とセカンダリカレンダーでは拒否されます。イベントの作成時に競合は確認されないため、まず空き状況を確認してください。終日イベントの終了日は含まれません。金曜日までのイベントは、土曜日の日付で終了します。
変更できる内容
| 操作 | 内容 | 確認が必要な変更 |
|---|---|---|
| カレンダー、イベント、空き状況の読み取り | スケジュールデータを読み取ります。空き状況にはタイトルを含まない予定ブロックが表示されます | 変更なし |
| イベントの作成 | ゲストや Google Meet を指定して、時刻指定、終日、または定期的なイベントを追加します | カレンダーを変更します |
| 不在または集中時間のブロックの作成 | 招待を自動辞退したり、Google Chat をミュートしたりできる特別なイベントを追加します | カレンダーを変更します |
| イベントの更新 | イベントの日時を変更したり編集したりします。シリーズ ID を使うとすべての予定が編集されます | カレンダーを変更します |
| イベントの移動 | イベントを別のカレンダーに移します | 2 つのカレンダーを変更します |
| イベントの削除 | イベントまたはシリーズ全体をキャンセルします。削除を取り消すことはできません | 元に戻せない操作です |
| 生の API リクエスト | 専用ツールがなくても API メソッドを呼び出せます | 取り消せない操作になる可能性があります |
確認プロンプトは AI クライアントが制御します。サーバーは読み取り、書き込み、削除系のツールを区別できるようにマークしているため、クライアントは状態の確認と実際の変更を見分けられます。
アクセスの取得
自分のカレンダーにアクセスするには OAuth 2.0 が必要です。API キーだけでは不十分です。接続方法は 2 つあり、1 つ目の方法では設定ファイルは一切必要ありません。
チャットからサインインする
認証情報なしでサーバーを起動し、アシスタントに接続を依頼します。次の 6 つの組み込みツールを使って手順を案内します。
| ツール | 内容 |
|---|---|
setup_instructions | Google Cloud 側での手順を、現在の設定状況に合わせて順番に案内します |
set_client | ダウンロードした OAuth クライアント JSON を読み込みます。ファイルパスを指定するため、シークレットがチャットを経由することはありません |
start_login | Google の認証リンクを返し、ブラウザーでの操作を待ちます |
finish_login | ログインを確認し、接続されたアカウントを報告します |
auth_status | ログインの有無、その取得元、有効期限を確認できます。トークン自体は表示されません |
logout | Google でトークンを取り消し、ローカルファイルを削除します |
ログインするとすぐに有効になり、AI クライアントを再起動せずに次のツール呼び出しを実行できます。トークンは ~/.config/mcp-google-calendar/credentials.json(Windows では %APPDATA% 以下)に保存されます。ファイルを読み取れるのは自分のアカウントだけで、マシンの外に送信されることはありません。
環境変数を設定する方法
従来の方法で、CI やヘッドレスインストールではこちらを使用してください。
-
Google Cloud プロジェクトを作成または選択し、Google Calendar API を有効にします。
-
OAuth 同意画面を設定し、Desktop app の OAuth クライアントを作成します。
-
管理するカレンダーがある Google アカウントを承認します。Use your own OAuth credentials を有効にすると、OAuth 2.0 Playground でリフレッシュトークンを取得できます。
-
次の両方のスコープをリクエストします。
https://www.googleapis.com/auth/calendar.events https://www.googleapis.com/auth/calendar.readonly広範な
https://www.googleapis.com/auth/calendarスコープが必要なのは、カレンダーや共有ルール自体を管理するraw_request呼び出しのみです。
環境変数はチャットで行ったログインより常に優先されるため、既存の設定済みインストールはこれまでとまったく同じように動作します。
テストモードの OAuth リフレッシュトークンは、7 日後に期限切れになる場合があります。長期間アクセスする必要がある場合は、OAuth アプリを公開するか、Workspace ドメインで Internal アプリを使用してください。クライアントシークレットとリフレッシュトークンはパスワードとして扱ってください。
設定
| 変数 | 必須 | 説明 |
|---|---|---|
GOOGLE_CALENDAR_CLIENT_ID | はい* | OAuth クライアント ID。 |
GOOGLE_CALENDAR_CLIENT_SECRET | はい* | OAuth クライアントシークレット。 |
GOOGLE_CALENDAR_REFRESH_TOKEN | はい* | OAuth リフレッシュトークン。 |
GOOGLE_CALENDAR_ACCESS_TOKEN | はい* | OAuth の 3 つの値の代わりに使用できる、短期間(約 1 時間)のトークン。 |
GOOGLE_CALENDAR_API_BASE | いいえ | Google API のベース URL の上書き。デフォルトは https://www.googleapis.com です。 |
GOOGLE_CALENDAR_TIMEOUT_MS | いいえ | リクエストごとのタイムアウト。デフォルトは 60000 ms です。 |
GOOGLE_CALENDAR_MAX_RETRIES | いいえ | 一時的なエラーの再試行回数。デフォルトは 3 です。 |
* OAuth の 3 つの値、またはアクセストークンのいずれかを指定してください。認証情報がなくてもサーバーは起動して MCP ハンドシェイクを完了しますが、最初のツール呼び出し時に設定すべき正確な変数名が示されます。
データ、制限、バックグラウンド処理
- リクエストは Google Calendar に送信されます。 ローカルサーバーは Google OAuth トークンを更新し、Calendar API を呼び出します。匿名テレメトリに含まれるのは、インストール ID、パッケージバージョン、AI クライアントとプラットフォームのバージョン、ツール名のみです。OAuth トークン、カレンダーデータ、ツールの引数、プロンプトは含まれません。オプトアウトするには
ASKADS_TELEMETRY=0を設定してください。 - Google はプロジェクトごとのクォータを適用します。
429が返された場合、サーバーはバックオフして再試行します。読み取りはネットワークエラーや5xxエラーの後も再試行しますが、失敗が不確かな場合、書き込みは再実行されません。予定が重複すると、すべてのゲストにメールが再送される可能性があるためです。 - バックグラウンドでのポーリングはありません。 サーバーは呼び出されたときのみ動作します。
list_eventsはupdated_minによる差分チェックに対応しています。AI アプリがスケジュールタスクに対応している場合は、定期的にカレンダーを確認できます。
技術ドキュメント
- MCP 機能カタログ — 各ツールのタスク別ページ。
- すべてのツールと入力
- 開発ドキュメント
- 公開ドキュメント
- Google Calendar API リファレンス
サポート
バグを見つけた場合や、特定の利用シナリオについて相談したい場合は、Issue を作成するか、Telegram でお問い合わせください。
最後まで読んでいただき、ありがとうございます!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。