google-chat-mcp-server について
互換クライアントから Google Chat のスペースやメッセージにアクセスする FastMCP サーバーです。独立した OAuth2 認証フローを備え、日付による取得やカードメッセージの表示に対応します。
主な機能
- 01Google OAuth2 認証
- 02アクセス可能なスペースの一覧表示
- 03日付範囲を指定したメッセージ取得
- 04メッセージとカード本文の検索
- 05カードメッセージの Markdown 表示
活用シーン
- 01チームスペースの最近のメッセージ確認
- 02期間を指定した議論の検索
- 03CI やアラートボットのカード確認
MCP 対応
MCP クライアントに、スペース一覧、メッセージ取得、内容検索のための Google Chat ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
はじめに
このプロジェクトは、FastMCP を使用して Python で記述された MCP(Model Control Protocol)サーバー向けの Google Chat 連携機能を提供します。MCP ツールを通じて、Google Chat のスペースやメッセージにアクセスし、操作できます。
構成
このプロジェクトは、主に次の 2 つのコンポーネントで構成されています。
-
Google Chat ツールを備えた MCP サーバー:Model Control Protocol を通じて Google Chat を操作するツールを提供します。
- FastMCP で記述されています
server.py:Google Chat ツールを備えた MCP サーバーのメイン実装google_chat.py:Google Chat API との連携および認証処理
-
認証サーバー:Google アカウント認証用の独立したコンポーネント
- FastAPI で記述されています
- Google との OAuth2 フローを処理します
- アクセストークンを保存および管理します
- 単独で実行することも、MCP サーバーの一部として実行することもできます
server_auth.py:認証サーバーの実装
認証フローでは、Google API トークンを取得して更新できます。取得したトークンは、MCP ツールが Google Chat のデータ(スペースとメッセージ)にアクセスするために使用します。
機能
- Google Chat API との OAuth2 認証
- 利用可能な Google Chat スペースの一覧表示
- 日付による絞り込みに対応した、指定スペースからのメッセージ取得
- カードメッセージ(ボット、Webhook、CI 通知)を Markdown としてレンダリングして読み込み
- セットアップが簡単なローカル認証サーバー
要件
- Python 3.13+
- 次の API を有効にした Google Cloud プロジェクト:
- Google Chat API
- People API(ユーザーの表示名用)
- Google Cloud Console で取得した OAuth2 認証情報
使い方
Google OAuth ログインの準備
- このプロジェクトをクローンします
git clone https://github.com/chy168/google-chat-mcp-server.git cd google-chat-mcp-server - Google Cloud プロジェクト(GCP)を準備します
- Google Cloud Console(https://console.cloud.google.com/auth/overview?project=<YOUR_PROJECT_NAME>)を開きます
- Google Auth Platform > Clients > (+) Create client > Web application
参考:https://developers.google.com/identity/protocols/oauth2/?hl=en
Authorized JavaScript origins に
http://localhost:8000を追加します Authorized redirect URIs にhttp://localhost:8000/auth/callbackを追加します - OAuth 2.0 クライアントを作成したら、クライアントシークレットを
.jsonファイルとしてダウンロードします。プロジェクトのトップレベルにcredentials.jsonとして保存します。
認証
利用できる認証モードは 2 つあります。
オプション 1:CLI モード(ヘッドレス環境/リモート環境に推奨)
uv run python server.py --auth cli
次の手順を実行します。
- 認証 URL が表示されます
- 任意のブラウザーで URL を開きます(別のデバイスでも構いません)
- Google の認証を完了します
- ブラウザーからリダイレクト URL をコピーし、ターミナルに貼り付けます
- トークンが
token.jsonとして保存されます
オプション 2:Web モード(ローカルブラウザーが利用できる環境向け)
uv run python server.py --auth web --port 8000
- http://localhost:8000/auth をブラウザーで開きます
- Google ログインを完了します
- トークンが
token.jsonとして保存されます
MCP の設定(mcp.json)
{
"mcpServers": {
"google_chat": {
"command": "uv",
"args": [
"--directory",
"<YOUR_REPO_PATH>/google-chat-mcp-server",
"run",
"server.py",
"--token-path",
"<YOUR_REPO_PATH>/google-chat-mcp-server/token.json"
]
}
}
Docker / Podman
コンテナーを実行する
# Mount your project directory containing token.json
docker run -it --rm \
-v /path/to/your/project:/data \
ghcr.io/chy168/google-chat-mcp-server:latest \
--token-path=/data/token.json
# or with podman
podman run -it --rm \
-v /path/to/your/project:/data \
ghcr.io/chy168/google-chat-mcp-server:latest \
--token-path=/data/token.json
コンテナー内で認証サーバーを実行する
# Web mode
docker run -it --rm \
-p 8000:8000 \
-v /path/to/your/project:/data \
ghcr.io/chy168/google-chat-mcp-server:latest \
--auth web --host 0.0.0.0 --port 8000 --token-path=/data/token.json
# CLI mode (for headless environments)
docker run -it --rm \
-v /path/to/your/project:/data \
ghcr.io/chy168/google-chat-mcp-server:latest \
--auth cli --token-path=/data/token.json
ツール
MCP サーバーは次のツールを提供します。
Google Chat ツール
get_chat_spaces()- ボットがアクセスできるすべての Google Chat スペースを一覧表示しますget_space_messages(space_name: str, start_date: str, end_date: str = None)- 時刻での絞り込み(任意)に対応し、指定した Google Chat スペースのメッセージを一覧表示しますsearch_messages(space_name: str, query: str, start_date: str = None, end_date: str = None)- メッセージ本文およびカードのテキストを、大文字と小文字を区別せずに部分一致検索します
カードメッセージ
ボットや Webhook(CI、監視、アラート)は通常、カードを投稿し、メッセージの text は空のままにします。
このようなメッセージには、カードを Markdown としてレンダリングした cards_text フィールドが追加されます。カードとセクションの見出しは見出しとして、ラベル付きの値はリスト項目として、ボタンとクリック可能なテキストはリンクとして表示されます。
{"sender": "CI", "text": null, "cards_text": "## ❌ my-pipeline #42\n\n_Build failed_\n\n- **Duration** : 11 sec\n[Open build](https://ci.example.com/42)"}
開発とデバッグ
イメージをビルドする
docker build -t google-chat-mcp-server:latest .
# or
podman build -t google-chat-mcp-server:latest .
デバッグ
fastmcp dev server.py --with-editable .
テストを実行する
uv run python -m unittest discover -s tests -t .
同じテストスイートが、プッシュとプルリクエストのたびに GitHub Actions で実行されます(.github/workflows/test.yml)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。