CH 03 / PLAY 05 実務化編 2026.05.14 公開

Google Calendarの予定を、
AIと一緒に動かす

本物の予定をAIへ渡し、練習ではなく実際の仕事で使える状態へ36行で変えます。 Play 04 で組んだ /daily-schedule、じつはまだ ニセモノの予定 で動いていました。この記事でやることは、たった1つ。あなたの Google カレンダーを、Claude に読ませる。36行の設定ファイルを書くだけで、明日の朝から本物の予定が画面に流れ込んできます。まずはその36行を、いっしょに書いていきましょう。

この記事で得られるもの
  • Claude Code に Google Calendar を読ませるための36行の設定(コピペで足りる量)
  • Google 側で何を許可すれば、何が読めるようになるか(読み取りだけに絞る理由)
  • 同じ /daily-schedule が、仮データから本物のカレンダーに切り替わる流れ
  • 外部接続で踏みやすい失敗 2件(認証範囲を広げすぎた/タイムゾーンが UTC で動いた)
実コード行数 36 = mcp.json 1ファイル ・ 写経できる量
実運用コスト 0円/月 Google API 無料枠の範囲内
失敗ログ 2 認証範囲の広げすぎ・タイムゾーン混乱
前提

本記事は /setup/setup/mcp が完了している前提で書かれています。Google Cloud Console で OAuth クライアントが作成済み、mcp-server-gcal が npm 経由で入っている状態です。

第1章朝、もう一度同じ場所で躓いた

Play 04 で /daily-schedule を組んだ翌週。月曜の朝、満を持してターミナルに打ち込みました。

ところが、出てきた工程表をよく見ると、ありもしない予定が並んでいるんです。今日入っていないはずの会議が、しれっと9時に座っている。Claude は memory と knowledge はちゃんと読んでいました。でも肝心の 今日のカレンダー だけ、読めていなかったんです。

考えてみれば当たり前でした。Claude Code は、まだ Google カレンダーと一度もつながっていない。つなぐための部品(MCP)を入れていない。ただそれだけのことです。

でも、この空っぽの工程表を見た瞬間、はっきり分かりました。話し相手でいるだけじゃ、もう足りない。本当に仕事を任せるなら、AIに 本物のデータを触らせるしかない。次の章で、その「つなぐ」を実際にやります。

第2章Claude が、初めて外のデータを読む日

ここまでの Play 01〜04 でやってきたのは、Claude に あなた自身のことを覚えさせる作業でした。文体も、今週の優先度も、抱えてる案件も、ぜんぶ手元のテキストファイルに書いてあった情報です。家の中の話、と言ってもいい。

この Play 05 で、初めて家の外に手が伸びます。Claude が、自分の Google アカウントの中身を読みにいく。今日つなぐのは Google カレンダーです。Gmail も Slack も Notion も、つなぎ方の基本はぜんぶ同じ。これがその記念すべき1本目になります。

つなぐ部品の名前は MCP(Model Context Protocol)といいます。難しそうな名前ですが、Claude が外のサービスを覗くための共通プラグ、くらいに思っておけば十分です。コンセントの形が合えば刺さる。中身の仕組みは知らなくていい。次の章で、その「プラグ」を1ファイル書いて差し込みます。

第3章36行の設定で、つなぐ

やることは、ファイルを1つ書くだけです。Claude Code の MCP 設定ファイルに、Google カレンダー用の数行を書き足します。下の中身を、まるごと写してみてください。

~/.config/claude-code/mcp.json 36 行 ・ MCP設定
{
  "mcpServers": {
    "gcal": {
      "command": "mcp-server-gcal",
      "env": {
        "GCAL_CLIENT_ID": "123...xyz.apps.googleusercontent.com",
        "GCAL_CLIENT_SECRET": "GOCSPX-...",
        "GCAL_SCOPES": "https://www.googleapis.com/auth/calendar.readonly",
        "GCAL_TIMEZONE": "Asia/Tokyo"
      }
    }
  }
}

本当にこれだけです。途中に出てくる長い鍵のような文字列は、あなたの Google アカウントを Claude に貸し出すための合鍵だと思ってください。これは準備ガイドの /setup/mcp で取ったものを、そのまま貼り付けます。そして calendar.readonly の1行。これが 読むだけ、書き換えはしないという宣言です。だから Claude が勝手に予定を増やしたり消したりすることは、起きません。書き込みが要る場面は、ずっと先の Play でそのとき足します。

36行で済んでしまうのは、面倒な処理を MCP サーバーが裏で全部引き受けてくれているからです。あなたが書くのは どこにつなぐか、それだけ。書けたら、次の章で実際に走らせます。

第4章/daily-schedule が、本物で動く

書けたら、Claude Code を一度閉じて、開き直してください。あとは Play 04 で作った /daily-schedule を、何も変えずにそのまま打つだけです。

terminal 朝の動作
$ claude
> /daily-schedule

# 数秒後、画面に流れ出すのは、もはや仮データではありません。

09:00 ─ Play 05 草稿 (memory/priorities.md から)
10:30 ─ 取引先 A 月次面談 (gcal から ← NEW)
12:00 ─ 昼休み
14:00 ─ 商談準備 ・ B社 (gcal から ← NEW)
16:00 ─ MCP検証 ・ Slack統合 (memory/priorities.md から)

気づいてほしいのは、Play 04 で書いた /daily-schedule の手順書(50行)を、1文字も触っていないことです。プラグを1つ差しただけ。それだけで、コマンドが拾ってくる予定が、ニセモノから本物に入れ替わりました。

これが、このシリーズで何度も出てくる感覚です。AIの動きを変えたいのに、コードはいじらない。つなぐ先を差し替えるだけで、出てくるものが変わる。次の章で、これがなぜタダで動くのかを見ておきます。

第5章月¥0 で動く理由

カレンダーを読みにいく窓口(Google Calendar API)は、Google アカウントさえあれば無料の範囲で使えます。あなたが朝に1回コマンドを打つくらい、1日に数十回呼ぶ程度では、その無料枠にはかすりもしません。

つなぎ役の MCP サーバー(mcp-server-gcal)も、誰でもタダで使える公開ソフトです。Claude Code が Pro プランの中で動くのも、これまでどおり変わりません。

だから、Play 05 でかかった追加費用も ¥0。「AIを仕事に組み込む」と聞くと、毎月数万円の利用料を覚悟する方が多いはずです。そこが空振りする、というのがこの章の言いたいことです。安心したら、次は逆に、私がここで踏んだ失敗を2つ見てください。

第6章2回踏んだ、失敗

失敗 01

カレンダーに「書き込み」の権限まで渡してしまった。

最初、サンプルをそのままコピーして https://www.googleapis.com/auth/calendar、つまり読みも書きも全部できる権限でつないでいました。動かして3日目。Claude の出力にまぎれて "calling: events.update(...)" というログが流れてきたんです。ぞっとしました。実際に書き換わってはいなかったけれど、Claude は確かに何かをいじろうとしていた。しかも何をしようとしたのか、追えなかった。その時点ではログを残す設定すらしていなかったからです。

すぐに権限を calendar.readonly に絞り直し、Google Cloud Console で合鍵を作り直して、つなぎ直しました。それ以降、あのログは一度も出ていません。教訓はシンプルで、最初は読むだけにしておく。書き込みが本当に要る Play が来たら、そのとき、その Play のためだけに権限を足す。あなたも、まず readonly から始めてください。

失敗 02

時差の設定を、書き忘れた。

初めて試したのは土曜の夜22時でした。/daily-schedule を打つと、翌週月曜の予定に「月曜 02:00 ・ 取引先 A 月次面談」と出てくる。深夜2時に面談、なわけがない。これ、時刻が 世界標準時のままだったんです。本当は11:00の面談が、9時間ずれて02:00に表示されていた。mcp.jsonGCAL_TIMEZONE="Asia/Tokyo" を1行足したら、あっさり直りました。

外のサービスをつなぐときは、時差・通貨・言語。この3つだけは、最初の設定ではっきり書いておいてください。動かし始めてから直すと、それまでに見ていた数字が全部「ほんとに合ってた?」と疑わしくなります。ここまで来たら、いよいよ本物の朝です。

第7章動き出した、本物の朝

翌週の月曜。ターミナルを開いて、/daily-schedule

取引先 A の月次面談も、商談の準備時間も、画面に出てきたのは全部、本物のスケジュールでした。コードは一行も書き直していません。

ここで、はっきり手応えが来ます。さっきまで「AIと話していた」はずが、いつのまにか業務システムを動かしている。その境目を、自分の朝でまたいだ瞬間です。

次からは、いま開いたこの MCP という入口に、別のサービスを順番に差していきます。Gmail、Slack、Notion。1つ差すごとに、片付く仕事が1つ増える。すぐ下のカードが、その2本目です。読み終えたら、そのまま進んでください。

創刊号 10本の旅

いま、4合目に到達。

— 次の Play
CH 03 / PLAY 06 ・ 公開中

たまったメールの整理を、毎朝の自動仕分けに。

朝の受信箱で10分が消える話を、Gmail MCPで NOW/TODO/LATER/SKIP の4分類に変えた110行のやってみた記録。Play 05 でつないだ入口の、2つ目の使い方。

→ 読む
本記事は、個人学習と社内共有のために無料公開しています。転載・教材化・有料講座への流用など、対価を得る目的での利用は禁止します。詳しくは利用規約をご確認ください。