
Claude Code で Google カレンダーの予定を読み込み日報を作って Slack に投稿する
コーヒーが好きな emi です。
Claude Code に Google カレンダーと Slack を MCP 連携させ、「今日の予定を確認する」→「日報を作る」→「Slack に投稿する」という一連の流れを実際にやってみました。
途中、Claude Desktop で連携済みのはずのコネクタがターミナル(Claude Code)側では改めて認証を求められたり、Slack アプリのインストールが組織の管理者承認待ちになったりと、地味にハマりどころがあったので、その過程も含めて記録します。
なお、私は Windows 11 端末の WSL で Claude Code を動かしていて、IDE としては VSCode を使っています。このセットアップ手順は本記事では扱いませんので、以下の記事を参照してください。
Desktop で連携したのにターミナルでは使えない
以下の記事を参考に、あらかじめ Claude Desktop アプリ側で Google Calendar のコネクタを有効化しておいたので、そのままターミナルの Claude Code でも使えるだろうと思い、試しに予定を聞いてみました。
❯ googleカレンダーから今日の予定を教えて
Google Calendarとの連携がこのセッションではまだ認証されていないようです。認証フローを開始します。
Called Google Calendar
Google Calendarとの連携にはOAuth認証が必要ですが、この認証はこのツール経由では実行できず、/mcp コマンドから行う必要があります。
お手数ですが、次の手順で認証をお願いします。
1. ターミナルで /mcp と入力
2. 一覧から「claude.ai Google Calendar」を選択
3. 表示される案内に従ってブラウザでGoogleアカウントの認可を完了
認証が完了したら、もう一度「今日の予定を教えて」と言っていただければ、カレンダーの予定を取得します。
✻ Cogitated for 10s
✘ Auto-update failed · Try /doctor or npm i -g @anthropic-ai/claude-code
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Desktop 側ではすでにコネクタを有効化していたはずなので、「連携したのにターミナルでは読んでくれない」となりました。
※なお、ここで表示されている ✘ Auto-update failed · Try /doctor or npm i -g @anthropic-ai/claude-code という表示は今回の認証の話とは無関係です。
Auto-update failed の原因(本筋とは関係ないので折りたたみ)
/doctor で確認すると Auto-updates: enabled となっており、自動更新機能自体はオンでした。にもかかわらずインストールに失敗していた(Last update attempt: failed (install_failed))原因は、~/.npmrc に設定していた以下の行でした。
min-release-age=30240
min-release-age は、npm パッケージが公開されてから指定分数(ここでは 30240 分 = 21 日)経過するまでインストールを許可しない設定です。社内で発生した npm サプライチェーン型マルウェア「Shai-Hulud」への対策として、公開直後の悪性バージョンを取り込まないように設定していたものでした。
この設定の副作用で、Claude Code 自身の自動更新(内部的に最新バージョンを npm install する処理)も、公開から日が浅いバージョンに対してはブロックされ、install_failed になっていました。「自動更新がオフ」なのではなく、「npm レベルの安全策で新しいバージョンのインストール自体が一時的に拒否されていた」というのが実態です。
OAuth トークンはクライアントごとに個別発行される
ターミナルで /mcp を確認してみると、以下のようになりました。
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Manage MCP servers
22 servers
User MCPs (/home/emiki/.claude.json)
❯ aws-knowledge-server · ✘ failed
claude.ai
claude.ai Gmail · △ needs authentication
claude.ai Google Calendar · △ needs authentication
claude.ai Google Drive · △ needs authentication
→ Show unused connectors (18)
※ Run claude --debug to see error logs
https://code.claude.com/docs/en/mcp for help ↑/↓ to navigate · Enter to confirm · Esc to cancel
aws-knowledge-server が failed になっている件(本筋とは関係ないので折りたたみ)
一覧の一番上にある aws-knowledge-server · ✘ failed(AWSの公式ナレッジMCPサーバー)も、Auto-update failed と同じ原因でした。こちらは npx mcp-remote ... の形で起動する設定なのですが、デバッグログを見ると npm error code ENOVERSIONS / No versions available for mcp-remote と出ており、前述の min-release-age によって mcp-remote のバージョンが1つも解決できず起動に失敗していました。そのうち直そうと思いつつ、放置しています…アセアセ。
実際に Google のカレンダーにアクセスするには、「OAuth トークン」と呼ばれるものが必要になります。OAuth トークンとは、ユーザーが「このアプリに自分の Google カレンダーへのアクセスを許可します」と一度認可した際に発行される、いわば通行証のようなデータです。パスワードそのものを渡す代わりに、この通行証を使ってアプリが Google とやり取りする仕組みです。
そしてこの通行証はクライアント(Desktop アプリ / ターミナルの CLI)ごとに個別発行される仕組みのようで、Desktop アプリ側で発行済みの通行証があっても、ターミナル側は別のクライアントとして扱われるため、Desktop アプリ側で一度 MCP 連携を完了していても、別途ターミナル側で MCP 連携を使う際は改めて一度 /mcp から認可フローを通す必要がありました。
ターミナルで Google Calendar を認証する
ターミナルで /mcp を実行すると、MCP サーバーの一覧が表示されます。ここから claude.ai Google Calendar を選択すると、ステータスが △ needs authentication になっています。
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ Manage MCP servers
22 servers
User MCPs (/home/emiki/.claude.json)
❯ aws-knowledge-server · ✘ failed
claude.ai
claude.ai Gmail · △ needs authentication
claude.ai Google Calendar · △ needs authentication
claude.ai Google Drive · △ needs authentication
→ Show unused connectors (18)
※ Run claude --debug to see error logs
https://code.claude.com/docs/en/mcp for help ↑/↓ to navigate · Enter to confirm · Esc to cancel
claude.ai Google Calendar · △ needs authentication
❯ 1. Authenticate
2. Disable
1. Authenticate を選ぶと認証用 URL が表示され、ブラウザで Google アカウントの認可画面が開くはずなのですが、私の環境では自動で開かなかったので、c でリンクをコピーしてブラウザで開きました。
使用する Google アカウントを選択します。

「次へ」で進めます。

Claude for Google Calendar はすでに一部のアクセス権限を付与されています
Claude for Google Calendar が一部のアクセス権限を付与されている 5 件のサービスを確認します。
と書かれています。5 件のサービスはこの後のスクリーンショットで確認します。ここでは「続行」で進めます。

アクセスを許可すると、ブラウザ側に「コネクタが接続されました」と表示されます。

ターミナルに戻って再度 /mcp を確認すると、無事に ✔ connected へ変わりました。
claude.ai Google Calendar · ✔ connected · 9 tools
この状態で「今日の予定を教えて」と聞くと、ツール利用の承認プロンプトを経て、実際の予定が返ってきました。(xx には実際の予定が入っていました)
❯ Google カレンダーから今日の予定を教えて
Called Google Calendar
今日(2026-07-13)の予定はこちらです。
┌──────────────┬─────────────────────────────────────────────┐
│ 時間 │ 予定 │
├──────────────┼─────────────────────────────────────────────┤
│ 8:30〜9:00 │ xx │
├──────────────┼─────────────────────────────────────────────┤
│ 9:00〜9:30 │ xx │
├──────────────┼─────────────────────────────────────────────┤
│ 13:00〜13:30 │ xx │
└──────────────┴─────────────────────────────────────────────┘
3件中2件が確定予定、「xx」は欠席回答済みのため実質参加予定はなさそうです。
✻ Crunched for 14s
出欠ステータスまで踏まえて要約してくれるんですね。
なお、こうしたツール利用時に表示される承認プロンプトの要否は、Claude Desktop 側のコネクタ設定画面で権限レベル(常に許可・承認が必要など)としてツールごとに細かく設定できます。先ほど「5 件のサービスはこの後のスクリーンショットで確認します。」と書いたのが、以下の「読み取り専用ツール」の 5 つです。

書き込み・削除系のツールはデフォルトで「承認が必要」になっていました。

ターミナルで Slack を認証する
続けて Slack 連携も試しました。こちらも同じ記事を参考に、あらかじめ Claude Desktop アプリ側で Slack のコネクタを有効化しておきます。
ターミナル側での手順自体は Google Calendar と同じで、/mcp から claude.ai Slack を選んで Authenticate するだけです。

ただし Slack 側は組織(ワークスペース)にアプリをインストールする形になるため、利用目的を Slack 管理者宛てのメッセージとして入力する必要がありました。

リクエストを送信すると、Slack App Directory 上は「リクエストが送信されました」という表示になり、Slackbot からも「レビューに送られました」という通知が届きました。


管理者の承認が下りると、ターミナル側の /mcp 画面でも Google Calendar と Slack の両方が ✔ connected になっているのが確認できました。

claude.ai Google Calendar · ✔ connected · 9 tools
claude.ai Slack · ✔ connected · 18 tools
カレンダーの予定から日報を作って Slack に投稿する
「2026/7/7 のカレンダーから日報を作成して」と伝えると、Claude Code が Google Calendar の予定を取得してくれました。
❯ Google カレンダーの予定から 2026/7/7 の日報を作成して、Slackに投稿する文案を作成して。Skills は使わないで。
● Calling Google Calendar…
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Tool use
claude.ai Google Calendar - Lists calendar events in a given calendar.(startTime: "2026-07-07T00:00:00+09:00", endTime: "2026-07-08T00:00:00+09:00", timeZone: "Asia/Tokyo", orderBy: "startTime") (MCP)
Returns events on the given calendar matching all specified constraints. Time constraints should not be specified unless requested by the user. For open-ended keyword or topic-based searches on the primary calendar, the search_events tool must be used instead.
Do you want to proceed?
❯ 1. Yes
2. Yes, and don't ask again for claude.ai Google Calendar - Lists calendar events in a given calendar. commands in /home/emiki/work/xxx/xxx
3. No
Yes
❯ Google カレンダーの予定から 2026/7/7 の日報を作成して、Slackに投稿する文案を作成して。Skills は使わないで。
Searched for 1 pattern, called Google Calendar, ran 1 shell command
2026/7/7の予定を取得しました。以下の日報文案です。投稿前に内容を確認してください。
---📋 日報(2026/7/7)
業務内容
- 8:15〜10:00 xxx
- 10:00〜11:30 xxx
- 11:30〜12:00 xxx
その他
- 13:00〜17:00 子体調不良のため対応(午後は看病のため業務を中断)
---
この内容で #times-kitani-emi に投稿してよいでしょうか?(「xxx」にはGeminiメモの添付がありましたが、ドキュメント取得用のツールが今回の環境になかったため内容は反映できていません。必要であれば手動で補足してください。)
✻ Sautéed for 27s
「Skills は使わないで」としたのは、まだ試していない日報作成 Skills をインストールしてあったからです。またあとで試してみようと思っています。
内容を確認して「この内容で Slack #times-kitani-emi チャンネルに投稿してよいです」と伝えると、私の分報チャンネルである #times-kitani-emi に実際に投稿されました。

カレンダーの予定取得から日報の下書き作成、内容確認、Slack 投稿まで、実際にひと通り試すことができました。
まとめ
- MCP 連携の際、OAuth トークンはクライアント(Desktop / ターミナル)ごとに個別発行されるため、Desktop で認証済みでもターミナルでは改めて
/mcpから認証が必要 - Google カレンダーや Slack 等の業務ツールと連携する場合、管理者承認が必要になることがある。申請前に事前確認を忘れずに
- 一度連携してしまえば、「カレンダーの予定を読む」→「日報にまとめる」→「内容を確認して Slack に投稿する」までを、チャット越しの指示だけで一気通貫にこなせる
定型業務は Claude Code と MCP 連携の組み合わせでかなり自動化できそうです。
本記事への質問やご要望については画面下部の「DevelopersIOへのご意見」からお問い合わせいただけます。
参考記事







