Google Workspace MCP Server

by aaronsb
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Allows managing Gmail inbox, drafting emails, sorting newsletters, setting up labels and filters, handling attachments, and tracking responses to threads

  • Integrates with Google Workspace, providing access to Gmail, Calendar, and Drive within a unified interface through authenticated API access

  • Enables calendar management including scheduling meetings, managing recurring events, finding available time slots, and handling timezone conflicts

Google Workspace MCP サーバー

このモデルコンテキストプロトコル(MCP)サーバーを使えば、Google Workspace を自在にコントロールできます。アカウントを接続すると(わずか 1 分で完了するシンプルで安全なプロセスです)、すぐに使い始めることができます。MCP サーバーはバックグラウンドで接続を安全かつアクティブに保つため、ログインや権限の管理に煩わされることなく、本来の業務に集中できます。

Gmailの受信トレイを、これまで考えられなかった方法で自在にコントロールしましょう。前四半期の提案書が欲しい?数秒で見つかります。ニュースレターが山積み?自動的にフォルダに振り分けられます。重要なスレッドへの返信を追跡したい?ラベルとフィルタがあなたの代わりに作業してくれます。完璧なメールの作成からチームとの会話の管理まで、すべてがクリックひとつで完了します。添付ファイル処理が合理化されているため、メールの添付ファイルを簡単に見つけて管理でき、複雑なメタデータはシステムが裏で処理します。

カレンダーは日々のスケジュール調整における頼れる味方になります。会議の重複予約やタイムゾーンの混乱はもうありません。チームの同期を計画しているなら、最適な時間枠を見つけてくれます。定期的なワークショップを開催したいなら、一度設定すれば完了です。予定が変更になっても、全員の都合の良い新しい時間を素早く簡単に見つけることができます。「いつ空いてますか?」というメールを延々と送る時代は終わりました。

Google ドライブを、ファイルの山からデジタルコマンドセンターに変えましょう。すべてのドキュメントが適切な場所に、すべてのフォルダが物語を語ります。ファイルを適切な相手と共有すれば、「誰が編集できるの?」という混乱はもうありません。先週の会議で使ったプレゼンテーションを探しているなら、名前だけでなく、ファイルの内容も検索できます。小規模なプロジェクトの整理でも、山積みのドキュメントの管理でも、すべてが必要な場所にきちんと収まります。

TL;DR セットアップ

: Cline などの AI アシスタントについては、特別なインストール ガイダンスについてはllms-install.md を参照してください。

  1. Google Cloud プロジェクトを作成します。
    # Go to Google Cloud Console https://console.cloud.google.com → Create Project → Enable Gmail API and Calendar API → Configure OAuth consent screen (External) → Create OAuth Desktop Client ID and Secret
  2. Cline 設定に追加します (例: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json ):
    { "mcpServers": { "google-workspace-mcp": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/home/aaron/.mcp/google-workspace-mcp:/app/config", "-v", "/home/aaron/Documents/workspace-mcp-files:/app/workspace", "-e", "GOOGLE_CLIENT_ID", "-e", "GOOGLE_CLIENT_SECRET", "-e", "LOG_MODE=strict", "ghcr.io/aaronsb/google-workspace-mcp:latest" ], "env": { "GOOGLE_CLIENT_ID": "123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com", "GOOGLE_CLIENT_SECRET": "GOCSPX-abcdefghijklmnopqrstuvwxyz1234" }, "autoApprove": [], "disabled": false } } }
    ログモード:
    • normal (デフォルト):各ログレベルに適切なコンソールメソッドを使用します
    • strict : JSON-RPC以外のすべてのメッセージをstderrにルーティングします(Claudeデスクトップに推奨)
  3. クライン/クロードを再起動
  4. AI に「Google アカウントを追加して」と尋ねるだけで、会話形式で認証プロセスを案内します。

詳細については、詳細なセットアップ ガイドを参照してください。

前提条件

この MCP サーバーを使用する前に、Google Workspace API にアクセスできる独自の Google Cloud プロジェクトを設定する必要があります。

  1. Google Cloud Consoleで新しいプロジェクトを作成する
  2. 必要な API を有効にします。
    • Gmail API
    • Google カレンダー API
    • GoogleドライブAPI
  3. OAuth 同意画面を設定します。
    • 「外部」として設定
    • 自分をテストユーザーとして追加する
    • Gmail、カレンダー、ドライブに必要なスコープを追加する
  4. OAuth 2.0 認証情報を作成します。
    • 「デスクトップアプリケーション」タイプを選択
    • クライアントIDとクライアントシークレットをメモしてください
    • リダイレクトURIとして「urn:ietf:wg:oauth:2.0:oob」を使用します(これにより、帯域外認証が有効になります)

MCP サーバーには次のものが必要です。

  1. 上記の手順で取得した Google OAuth クライアント ID とシークレット
  2. 構成を保存するためのローカル ディレクトリ パス (推奨: ~/.mcp/google-workspace-mcp )

注: このサーバーは帯域外 (OOB) 認証フローを使用するため、各アカウントの初期設定時に認証コードを手動でコピーして貼り付ける必要があります。

Clineと併用

Cline MCP 設定に次の構成を追加します。

{ "mcpServers": { "google-workspace-mcp": { "command": "docker", "args": [ "run", "--rm", "-i", "-v", "/home/aaron/.mcp/google-workspace-mcp:/app/config", "-e", "GOOGLE_CLIENT_ID", "-e", "GOOGLE_CLIENT_SECRET", "-e", "LOG_MODE=strict", "ghcr.io/aaronsb/google-workspace-mcp:latest" ], "env": { "GOOGLE_CLIENT_ID": "123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com", "GOOGLE_CLIENT_SECRET": "GOCSPX-abcdefghijklmnopqrstuvwxyz1234" }, "autoApprove": [], "disabled": false } } }

ファイル管理

サーバーは構造化された方法でファイルを自動的に管理します。

~/Documents/workspace-mcp-files/ ├── [email_1@domain.com]/ │ ├── downloads/ # Files downloaded from Drive │ └── uploads/ # Files staged for upload ├── [email_2@domain.com]/ │ ├── downloads/ │ └── uploads/ └── shared/ └── temp/ # Temporary files (cleaned up automatically)

WorkspaceManager はこの構造を自動的に作成し、維持します。

  • ファイルのダウンロード/アップロード時に必要に応じてディレクトリを作成します
  • ユーザーのメールアドレスでファイルを整理します
  • 一時ファイルのクリーンアップを処理します
  • 適切な権限を維持する

WORKSPACE_BASE_PATH環境変数を設定することで、ワークスペースの場所をカスタマイズできます。

手動使用

重要:サーバーはマウントされたconfigディレクトリにaccounts.jsonファイルを必要とします。初回セットアップ時は、コンテナを起動する前に、 accounts.example.json configディレクトリのaccounts.jsonにコピーしてください。

コンテナを直接実行できます。

docker run -i --rm \ -v ~/.mcp/google-workspace-mcp:/app/config \ -v ~/Documents/workspace-mcp-files:/app/workspace \ -e GOOGLE_CLIENT_ID=123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com \ -e GOOGLE_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz1234 \ -e LOG_MODE=strict \ ghcr.io/aaronsb/google-workspace-mcp:latest

サーバーは自動的に次の処理を実行します。

  • 必要なすべての構成ファイルを作成して管理する
  • 資格情報とトークンの安全な保管を処理する
  • 適切なファイル権限を維持する

開発ビルド

ローカルビルドスクリプト

高速で CI のようなローカル ビルドと Docker イメージの作成を行うには、提供されているスクリプトを使用します。

# Run the local build pipeline (installs, lints, tests, builds, and creates Docker image) ./scripts/build-local.sh
  • デフォルトでは、イメージはgoogle-workspace-mcp:localとしてタグ付けされます。
  • 詳細出力(すべてのログをコンソールに出力)を使用するには、 --verboseを追加します。
    ./scripts/build-local.sh --verbose
  • Docker イメージ タグを変更するには:
    ./scripts/build-local.sh --tag my-custom-tag
  • ログ ファイルは確認のために/tmp/google-workspace-mcp/に書き込まれます。

ビルドスクリプトは、プラットフォーム固有の設定やBuildKitの機能を使用せずにローカル開発向けに最適化されたDockerfile.localを使用します。これにより、異なる開発環境間での互換性が確保されます。

手動Dockerビルド

コンテナを手動でビルドして実行することもできます。

# Build the image using the standard Dockerfile docker build -t google-workspace-mcp:local . # Or build using the local development Dockerfile (recommended for local development) docker build -t google-workspace-mcp:local -f Dockerfile.local . # Run with required environment variables docker run -i --rm \ -v ~/.mcp/google-workspace-mcp:/app/config \ -v ~/Documents/workspace-mcp-files:/app/workspace \ -e GOOGLE_CLIENT_ID=123456789012-abcdef3gh1jklmn2pqrs4uvw5xyz6789.apps.googleusercontent.com \ -e GOOGLE_CLIENT_SECRET=GOCSPX-abcdefghijklmnopqrstuvwxyz1234 \ -e LOG_MODE=strict \ google-workspace-mcp:local

特徴

  • 自動メタデータ管理による添付ファイル処理の簡素化
  • 重要な情報に重点を置いた合理化された電子メール応答
  • 堅牢な添付ファイルのインデックス作成および検索システム
  • Gmailとカレンダーをまたいだ効率的なファイル管理
  • 期限切れの添付ファイルの自動クリーンアップ

利用可能なツール

アカウント管理

  • list_workspace_accounts (エイリアス: list_accounts、get_accounts、show_accounts)
    • 設定されているすべてのGoogleアカウントと認証ステータスを一覧表示する
    • 他の操作の前に最初に呼び出す必要があります
    • 必要なAPIスコープを検証する
    • 複数のアカウント選択を処理
  • authenticate_workspace_account (エイリアス: auth_account、add_account、connect_account)
    • APIアクセス用のGoogleアカウントを追加して認証する
    • アカウントの分類(仕事用、個人用)をサポート
    • ユーザーインタラクションによるOAuthフローを処理する
    • トークンの更新を自動的に管理します
  • remove_workspace_account (エイリアス: delete_account、disconnect_account、remove_account)
    • Googleアカウントと関連トークンを削除する
    • 保存された資格情報をクリーンアップする

Gmailの操作

メッセージと検索

  • search_workspace_emails (エイリアス: search_emails、find_emails、query_emails)
    • 高度な電子メール フィルタリング機能:
      • 送信者/受信者フィルタリング
      • 件名と内容の検索
      • 日付範囲フィルタリング
      • 添付ファイルの存在
      • ラベルベースのフィルタリング
      • 複雑な Gmail クエリ構文のサポート
    • 一般的な検索パターン:
      • 会議メール
      • 人事/管理コミュニケーション
      • チームの最新情報
      • ニュースレター
  • send_workspace_email (エイリアス: send_email、send_mail、create_email)
    • 完全なフォーマットでメールを送信する
    • CC/BCC受信者のサポート
    • 添付ファイルの処理
    • メールスレッドのサポート

設定と構成

  • get_workspace_gmail_settings (エイリアス: get_gmail_settings、gmail_settings、get_mail_settings)
    • アカウント設定にアクセスする
    • 言語設定
    • 署名の設定
    • 休暇対応者ステータス
    • フィルタと転送ルール

ドラフト管理

  • manage_workspace_draft (エイリアス: manage_draft、draft_operation、handle_draft)
    • ドラフトの CRUD 操作を完了します。
      • 新しい下書きを作成する
      • 既存の下書きを読む
      • 下書きコンテンツを更新する
      • 下書きを削除する
      • 下書きを送信
    • サポート対象:
      • 新しいメールの下書き
      • スレッドで下書きに返信する
      • 草案の修正
      • ドラフト送信

ラベル管理

  • manage_workspace_label (エイリアス: manage_label、label_operation、handle_label)
    • 完全なラベルCRUD操作
    • ネストされたラベルのサポート
    • カスタムカラー設定
    • 表示設定
  • manage_workspace_label_assignment (エイリアス: assign_label、modify_message_labels、change_message_labels)
    • メッセージにラベルを適用/削除する
    • 一括ラベル変更
    • システムラベルの更新
  • manage_workspace_label_filter (エイリアス: manage_filter、handle_filter、filter_operation)
    • ラベルフィルターの作成と管理
    • 複雑なフィルタリング基準:
      • 送信者/受信者のパターン
      • 件名/内容の一致
      • 添付ファイルの存在
      • メッセージサイズのルール
    • 自動化されたアクション:
      • ラベルの適用
      • 重要度のマーク
      • 読み取りステータス
      • アーカイブ

カレンダー操作

イベント管理

  • list_workspace_calendar_events (エイリアス: list_events、get_events、show_events)
    • フィルタリング機能を使用してカレンダーイベントを一覧表示する
    • 日付範囲の指定
    • イベント内のテキスト検索
    • カスタマイズ可能な結果制限
  • get_workspace_calendar_event (エイリアス: get_event、view_event、show_event)
    • イベント詳細情報
    • 出席者のステータス
    • イベント設定
  • manage_workspace_calendar_event (エイリアス: manage_event、update_event、respond_to_event)
    • イベント対応管理:
      • 招待を承諾/辞退する
      • 暫定としてマーク
      • 新しい時間を提案する
      • イベント時間の更新
    • コメントサポート
    • タイムゾーンの処理
  • create_workspace_calendar_event (エイリアス: create_event、new_event、schedule_event)
    • 新しいカレンダーイベントを作成する
    • サポート対象:
      • 単一イベント
      • 定期的なイベント(RRULE形式)
      • 複数の参加者
      • タイムゾーンの指定
      • イベントの説明
      • 競合チェック
  • delete_workspace_calendar_event (エイリアス: delete_event、remove_event、cancel_event)
    • カレンダーイベントを削除する
    • 参加者への通知オプション

ドライブ操作

ファイル管理

  • list_drive_files (エイリアス: list_files、get_files、show_files)
    • オプションのフィルタリングを使用してファイルを一覧表示する
    • フォルダでフィルタリング
    • カスタムクエリのサポート
    • ソートとページ付け
    • フィールド選択
  • search_drive_files (エイリアス: search_files、find_files、query_files)
    • ファイル内容全体の全文検索
    • MIMEタイプでフィルタリング
    • フォルダでフィルタリング
    • ゴミ箱内のファイルを含める/除外する
    • 高度なクエリオプション
  • upload_drive_file (エイリアス: upload_file、create_file、add_file)
    • 新しいファイルをアップロードする
    • ファイルのメタデータを設定する
    • 親フォルダを指定する
    • さまざまなファイル形式のサポート
  • download_drive_file (エイリアス: download_file、get_file_content、fetch_file)
    • あらゆるファイル形式をダウンロード
    • Google Workspace ファイルをエクスポートする
    • フォーマット変換オプション
    • 自動MIMEタイプ処理
  • delete_drive_file (エイリアス: delete_file、remove_file、trash_file)
    • ファイルとフォルダを削除する
    • ドライブからのクリーンな削除

フォルダー操作

  • create_drive_folder (エイリアス: create_folder、new_folder、add_folder)
    • 新しいフォルダを作成する
    • ネストされたフォルダのサポート
    • 親フォルダの指定
    • フォルダのメタデータ

権限

  • update_drive_permissions (エイリアス: share_file、update_sharing、modify_permissions)
    • 共有設定を更新する
    • 複数の権限タイプ:
      • ユーザー権限
      • グループ権限
      • ドメイン共有
      • パブリックアクセス
    • さまざまなアクセス ロール:
      • 所有者
      • 主催者
      • ファイルオーガナイザー
      • ライター
      • コメント投稿者
      • リーダー
    • 公開ファイルの検出設定

詳細な使用方法については、 API ドキュメントを参照してください。

近日公開

将来のサービス

  • 管理者SDKのサポート
  • その他のGoogleサービス

テスト戦略

ユニットテストのアプローチ

  1. 簡略化されたモック
    • 予測可能なテストには静的な模擬応答を使用する
    • ユニットテストで複雑なエンドツーエンドのシミュレーションを避ける
    • 一度に1つの機能のテストに集中する
    • シンプルな実装で外部依存関係(OAuth、ファイルシステム)をモックする
  2. テスト組織
    • 機能別にテストをグループ化する(例:アカウント操作、ファイル操作)
    • 明確で説明的なテスト名を使用する
    • テストを集中的かつ分離した状態に保つ
    • テスト間でモックとモジュールをリセットする
  3. 模擬管理
    • jest.resetModules() を使用してクリーンな状態を確保する
    • モックの変更後にモジュールを再度要求する
    • モック関数の呼び出しを明示的に追跡する
    • 関数呼び出しと結果の両方を検証する
  4. ファイルシステムのテスト
    • シンプルなJSON構造を使用する
    • フォーマットよりもデータの正確さを重視する
    • テストエラーのシナリオ(ファイルが見つからない、JSONが無効)
    • 実装の詳細なしでファイル操作を検証する
  5. トークン処理
    • 静的レスポンスによるモックトークン検証
    • 成功と失敗のシナリオを個別にテストする
    • OAuth の複雑さなしでトークン操作を検証する
    • アカウントマネージャーのトークン処理ロジックに焦点を当てる

テストの実行

# Run all tests npm test # Run specific test file npm test path/to/test.ts # Run tests with coverage npm test -- --coverage # CI builds run all tests with coverage reporting npm run test:ci

ベストプラクティス

  1. 認証
    • MCP設定で資格情報を安全に保存する
    • 必要最小限のスコープを使用する
    • トークンの更新を適切に処理する
  2. エラー処理
    • 応答ステータスを確認する
    • 認証エラーを適切に処理する
    • 適切な再試行を実装する
  3. 構成とセキュリティ
    • 各ユーザーは独自のGoogle Cloudプロジェクトを管理します
    • MCP設定でOAuth認証情報を構成する
    • ~/.mcp/google-workspace-mcp 内のトークンの安全な保存
    • 定期的なトークンローテーション
    • 機密ファイルをgitにコミットしない
    • 設定ディレクトリに適切なファイル権限を使用する
  4. ローカル開発環境
    • MCP設定でOAuth認証情報を構成する
    • ~/.mcp/google-workspace-mcp ディレクトリを作成する
    • 機密トークンをバージョン管理から除外する
    • 各アカウントの認証スクリプトを実行する

トラブルシューティング

一般的なセットアップの問題

  1. 構成がありません
    • エラー: 「GOOGLE_CLIENT_ID 環境変数が必要です」
    • 解決策: MCP 設定ファイルで OAuth 認証情報を設定します (詳細については、docs/API.md を参照してください)。
  2. 認証エラー
    • エラー:「OAuth 認証情報が無効です」
    • 解決:
      • Google Cloud プロジェクトが適切に構成されていることを確認する
      • OAuth同意画面で自分自身をテストユーザーとして追加したことを確認してください
      • Gmail APIとGoogleカレンダーAPIの両方が有効になっていることを確認します
      • MCP設定の資格情報がOAuthクライアント構成と一致していることを確認します
  3. トークン発行
    • エラー:「トークンの更新に失敗しました」
    • 解決策: remove_workspace_accountを使用してアカウントを削除し、再認証します
    • Google Cloud プロジェクトで必要な API スコープが有効になっていることを確認します
  4. ディレクトリ構造
    • エラー:「ディレクトリが見つかりません」
    • 解決策: ~/.mcp/google-workspace-mcp が適切な権限で存在することを確認します
    • Dockerがconfigディレクトリをマウントできることを確認する

さらに詳しいヘルプについては、エラー処理のドキュメントを参照してください。

ライセンス

MITライセンス - 詳細はLICENSEファイルを参照

-
security - not tested
A
license - permissive license
-
quality - not tested

Gmail の操作と計画されているカレンダーのサポートに重点を置いた、Google Workspace API への認証済みアクセスを提供します。安全な OAuth 認証と、詳細なエラー処理による複数アカウント管理が特徴です。

  1. TL;DR Setup
    1. Prerequisites
      1. Using with Cline
      2. File Management
      3. Manual Usage
      4. Development Build
    2. Features
      1. Available Tools
        1. Account Management
        2. Gmail Operations
        3. Calendar Operations
        4. Drive Operations
      2. Coming Soon
        1. Future Services
      3. Testing Strategy
        1. Unit Testing Approach
        2. Running Tests
      4. Best Practices
        1. Troubleshooting
          1. Common Setup Issues
        2. License
          ID: 0finyxgwlk