mcpField
G
Google Calendar MCP

Google Calendar MCP

ローカル
github.com生産性04 週間前に更新

Google Calendar MCP について

Google Calendar MCPは、AIアプリから自然言語でGoogle Calendarの予定を確認・管理するサービスです。繰り返し予定全体と単一の予定を区別し、デフォルトではゲストにメールを送りません。

主な機能

  1. 01カレンダー、予定、空き時間の確認
  2. 02会議や繰り返し予定の作成と編集
  3. 03繰り返し予定の個別回の管理
  4. 04Out of OfficeとFocus Timeの作成
  5. 05ゲストとGoogle Meetリンクの管理

活用シーン

  1. 01週の予定を確認し重複会議を特定
  2. 02複数人が空いている時間を検索
  3. 03ゲストとMeetリンク付きの会議を設定
  4. 04シリーズを残して繰り返し予定の一回分をキャンセル

MCP 対応

MCP サーバーとして、Google Calendarのカレンダー、予定、空き時間を読み取り・管理するツールをMCPクライアントに提供します。Google Calendar APIとOAuthでアカウントにアクセスし、書き込み時もデフォルトでは招待メールを送信しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"a1-x-tech-mcp-google-calendar": {
"command": "npx",
"args": [
"-y",
"@a1-x-tech/mcp-google-calendar"
],
"env": {
"GOOGLE_CALENDAR_CLIENT_ID": "<GOOGLE_CALENDAR_CLIENT_ID>",
"GOOGLE_CALENDAR_CLIENT_SECRET": "<GOOGLE_CALENDAR_CLIENT_SECRET>",
"GOOGLE_CALENDAR_REFRESH_TOKEN": "<GOOGLE_CALENDAR_REFRESH_TOKEN>",
"GOOGLE_CALENDAR_ACCESS_TOKEN": "<GOOGLE_CALENDAR_ACCESS_TOKEN>",
"GOOGLE_CALENDAR_OAUTH_PORT": "<GOOGLE_CALENDAR_OAUTH_PORT>",
"GOOGLE_CALENDAR_API_BASE": "<GOOGLE_CALENDAR_API_BASE>",
"GOOGLE_CALENDAR_TIMEOUT_MS": "<GOOGLE_CALENDAR_TIMEOUT_MS>",
"GOOGLE_CALENDAR_MAX_RETRIES": "<GOOGLE_CALENDAR_MAX_RETRIES>"
}
}
}
}
起動コマンドnpx -y @a1-x-tech/mcp-google-calendar
設定が必要な環境変数
GOOGLE_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@a1-x-tech/mcp-google-calendar1.0.0

ツール

19

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

A1 Google Calendar MCP

英語 | ロシア語

npm Glama CI License: MIT

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 認証情報が必要です。

  1. Google OAuth アクセスを準備する。
  2. MCP サーバーを AI アプリに追加します。
  3. 上記の読み取り専用の質問をします。
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

Codex MCP のドキュメント

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 Code の MCP ドキュメント

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 に保存します。

Claude Desktop の MCP ドキュメント

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"
      }
    }
  }
}

Cursor の MCP ドキュメント

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 で確認します。

VS Code の MCP ドキュメント

できること

スケジュールを確認する
  • 今週の会議を教えてください。定期的な会議も含めてください。
  • 明日の1対1の会議について、ゲスト、Meet のリンク、リマインダーを表示してください。
  • 3月のチーム同期の予定をすべて一覧表示してください。
会議を計画・変更する
  • 木曜日に、ゲスト2人と Google Meet のリンクを含む45分のレビュー会議を作成してください。
  • レトロスペクティブを1時間遅らせて、ゲストリストを更新してください。ただし、まだ誰にもメールを送らないでください。
  • 計画会議をチームのカレンダーに移動してください。
  • 金曜日のスタンドアップだけをキャンセルし、シリーズのほかの予定はそのままにしてください。
自分の時間を守る
  • 来週、Anna、Boris、私の全員が1時間空いているのはいつですか?
  • 休暇中の不在予定を登録し、新しい招待を自動的に辞退してください。
  • 明日の朝に2時間の集中時間を作成し、Google Chat の通知をミュートしてください。

イベントの変更方法

  1. calendar_id: "primary" はメインカレンダーです。それ以外のカレンダーは list_calendars から取得でき、書き込みには編集者アクセス権が必要です。
  2. 定期的なシリーズと単一の予定では ID が異なります。シリーズ ID を使うとすべての予定が変更またはキャンセルされ、インスタンス ID(list_event_instances から取得)を使うと特定の予定だけが変更されます。
  3. update_event で変更されるのは指定したフィールドだけですが、ネストされたオブジェクトは以前の内容全体を置き換えます。新しい attendees リストを指定すると、ゲストリスト全体が置き換えられます。
  4. 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_instructionsGoogle Cloud 側での手順を、現在の設定状況に合わせて順番に案内します
set_clientダウンロードした OAuth クライアント JSON を読み込みます。ファイルパスを指定するため、シークレットがチャットを経由することはありません
start_loginGoogle の認証リンクを返し、ブラウザーでの操作を待ちます
finish_loginログインを確認し、接続されたアカウントを報告します
auth_statusログインの有無、その取得元、有効期限を確認できます。トークン自体は表示されません
logoutGoogle でトークンを取り消し、ローカルファイルを削除します

ログインするとすぐに有効になり、AI クライアントを再起動せずに次のツール呼び出しを実行できます。トークンは ~/.config/mcp-google-calendar/credentials.json(Windows では %APPDATA% 以下)に保存されます。ファイルを読み取れるのは自分のアカウントだけで、マシンの外に送信されることはありません。

環境変数を設定する方法

従来の方法で、CI やヘッドレスインストールではこちらを使用してください。

  1. Google Cloud プロジェクトを作成または選択し、Google Calendar API を有効にします。

  2. OAuth 同意画面を設定し、Desktop app の OAuth クライアントを作成します。

  3. 管理するカレンダーがある Google アカウントを承認します。Use your own OAuth credentials を有効にすると、OAuth 2.0 Playground でリフレッシュトークンを取得できます。

  4. 次の両方のスコープをリクエストします。

    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 アプリがスケジュールタスクに対応している場合は、定期的にカレンダーを確認できます。

技術ドキュメント

サポート

バグを見つけた場合や、特定の利用シナリオについて相談したい場合は、Issue を作成するか、Telegram でお問い合わせください。


Две Моны дают пять

最後まで読んでいただき、ありがとうございます!

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。