コンテンツにスキップ

Google Workspace統合(全8サービス、ネイティブ対応)

公開ステータス(v1.49.0で更新): ダッシュボードの「Integrations → Google」タブは、デフォルトで表示されるようになりました。以前のバージョンでは GoogleのOAuthアプリ審査待ちのため非表示にしていましたが、審査が制限するのは 「自前のOAuth clientを持ち込む」経路だけであり、サービスアカウントによる ドメイン全体委任やApps Scriptブリッジには影響しないことが確認できたため、 タブを隠しておく理由がなくなりました。ただし表示されていることは、ツールが 有効であることを意味しません。バックエンドには独立したマスタースイッチ config.toml [integrations] google_workspaceがあり、**デフォルトは false**です。オフのままだと認証情報の設定や接続テストは通りますが、 ツールがAI従業員の前に現れることはなく、ダッシュボードには明確な黄色い 警告が表示されます。3つの認証経路の選び方については google-workspace-integration.mdを参照してください。

設計上の判断(D5、2026-08-04): DuDuClawは共有のGoogle OAuth認証情報を 同梱しません。ユーザーは自分自身のOAuth clientを用意する(あるいは代わりに DWD/Apps Script経路を使う)必要があり、DuDuClawはその結果得られたトークンを 保存・更新するだけで、自前のclient id/secretを同梱することは決してありません。 判断の背景は google-workspace-integration.md(D5)を 参照してください。

Googleアカウントを接続すると、あなたのAI従業員はメールの検索・閲覧、返信下書きの 作成、カレンダーの一覧表示、イベントの作成(Google Meetリンク付き)、Googleスプレッド シートの行の読み取り・追記、Googleフォームの回答の読み取り、Google Tasksの管理が できるようになります。DuDuClawはGoogleのREST APIにネイティブに接続するため、 サードパーティのMCP serverをインストールする必要はありません。アクセストークンは DuDuClawの暗号化されたOAuth vaultに保存され、自動的に更新されます。

8つのWorkspaceサービスすべてがネイティブに対応しています。Gmail、Calendar、 Sheets、Drive、Docs、Slides、Forms、TasksはすべてGA(一般提供)のREST API上で 動くため、ここで説明する内容はGoogleのDeveloper Previewプログラムに一切依存せず、 どの顧客でも利用できます。(Google自身が提供する公式のremote MCP serverは 8つ中6つをカバーしますが、Preview限定であり、利用規約上Pre-GA APIを自分の ドメイン外のユーザーに公開することを禁じています。こちらは上級者向けの オプトインとして引き続き利用可能です: google-mcp.md)。

2つのスコープ(google:read / google:write)で管理される、19個のエージェント向け MCPツールです。

ツール 分類 内容
google_status read 接続状態の診断: 接続済みか、付与されたスコープ、トークンの有効性。ローカルの状態のみを読み取る。
gmail_search read Gmailのクエリ構文(from:… is:unreadなど)でメールボックスを検索。送信者/件名/日付/スニペットを返す。
gmail_read read 1件のメッセージを全文読み取る: ヘッダー、プレーンテキスト本文(長い場合は切り詰め)、添付ファイル一覧(ファイル名とサイズのみ、ダウンロードは行わない)。
gmail_create_draft write Gmailの下書きを作成する。送信は行わない。送信は常に人間が手動で行う。
calendar_list_events read プライマリカレンダーのイベントを一覧表示する(デフォルトは今後7日間)。
calendar_create_event write 実際に外部から見えるイベントを作成する。Google Meetリンクをオプションで付与可能。
sheets_read read スプレッドシートのセル範囲を読み取る(スプレッドシートIDまたはシートのURL全体を受け付ける)。最大200行の整形済みの値を返す。
sheets_append write USER_ENTERED入力モードでスプレッドシートに1行追記する(数値/日付/数式は手入力したのと同じように解釈される)。
forms_get read フォームの構造を読み取る: タイトル、説明、および各質問のquestion_id、種類、選択肢。
forms_list_responses read フォームに送信された回答を一覧表示する(最大50件)。回答はquestion_idをキーとするため、forms_getと組み合わせてIDをタイトルに対応付ける。
gtasks_lists read アカウントのGoogle Tasksリスト(id + タイトル)を一覧表示する。@defaultを使うとルックアップなしでデフォルトリストを指定できる。
gtasks_list read 1つのリスト内のタスクを一覧表示する(デフォルトは未完了のみ。show_completed=trueで完了済み・非表示のものも含む)。
gtasks_create write ユーザーのGoogle Tasksに実際のタスクを作成する。
gtasks_complete write タスクを完了済みとしてマークする。
drive_search read ファイル名と全文でDriveを検索する(ゴミ箱内のファイルは除外、新しい順)。オプションで厳密なMIMEフィルターを指定可能。
drive_read read Driveのファイルをテキストとして読み取る: Docs/Slidesはプレーンテキストとしてエクスポート、Sheetsは(最初のシートのみ)CSVとしてエクスポート、テキスト系のファイルはそのまま読み取る。バイナリ型はメタデータと注記のみを返し、バイナリ内容そのものは返さない。
docs_read read Google Documentの文書順にテキストを読み取る(表のセルのテキストを含む)。
docs_append write Docの末尾にテキストを追記する。追記のみで、既存の内容を書き換えたり削除したりするツールはない。
slides_read read プレゼンテーションのテキストをスライドごとに読み取る(図形、グループ化された図形、表のセル)。

意図的にSlides書き込みツールは提供していません: DuDuClawのオフィス 文書スイートはすでに実際の.pptxファイルを生成できます。これはSlidesの batchUpdate要素APIを操作するより安全で、出力の質も上回ります。

命名規則: Google Tasks用のツールはgtasks_*という名前です。DuDuClaw 自身のタスクボードはtasks_*(tasks_list / tasks_create / tasks_complete / …)のままです。これは2つの別個のシステムであり、 エージェントが「自分の作業キュー」と「ユーザーのGoogle Tasks」を混同 しないよう、意図的に異なるプレフィックスを使っています。

FormsとTasksには公式のMCP serverが存在しません(2026-07-30に検証済み: formsmcptasksmcpの両エンドポイントとも404を返し、GoogleのMCP文書にも この2つのサービスは記載されていません)。これがここでネイティブに提供している 理由です。

  • 下書きは決して送信されません。 gmail_create_draftは下書きを保存する だけで、「送信」ツールは存在しません。送信は常に人間の判断です。

  • 読み取りは読み取りのままです。 read分類のツールはGmailやCalendarの 内容を一切変更できません。

  • Forms、Drive、Slidesは読み取り専用です。 フォームの作成・編集、Driveへの 書き込み、プレゼンテーションの変更を行うツールはありません。書き込み用ツールが あるのはGmail(下書き)、Calendar、Sheets、Docs(追記)、Tasksだけです。

  • 最小権限。 Driveはdrive.readonlyのみを要求します(drivedrive.fileは要求しません。Driveファイルを作成するツールが存在しないため)。 Slidesはpresentations.readonlyを要求します。Docsが完全なdocuments スコープを必要とするのは、docs_appendが書き込みを行うためだけです。

  • オプションの承認ゲート。 より慎重にしたい場合は、書き込み系ツールを エージェントのagent.toml [capabilities] approval_required_toolsに リストアップすることで、下書き・イベント・スプレッドシートへの書き込みの たびにHITL(human-in-the-loop)承認を待たせることができます。

    [capabilities]
    approval_required_tools = ["gmail_create_draft", "calendar_create_event", "sheets_append", "gtasks_create", "gtasks_complete", "docs_append"]

同じ19個のツールを認可する方法は3通りあります。違いは誰が設定を行うか、 そしてGoogleが事前にアプリを審査している必要があるかどうかです。

個人の @gmail.com Workspaceドメイン 誰が設定するか ツールの網羅範囲
OAuth client(下記) 各顧客が自分自身のGoogle Cloud OAuth clientを作成する 全19個
サービスアカウント + ドメイン全体委任 ドメインのスーパー管理者が1つのclient idを認可する 全19個
Apps Scriptブリッジ ✅(管理者がApps Scriptを無効化していない限り) エンドユーザーが自分のアカウントにスクリプトをデプロイする Gmail / Calendar / Sheetsのみ

複数が設定されている場合、優先順位はサービスアカウント → OAuth vault → Apps Scriptブリッジの順です。ブリッジはカバーするツールが最も少ないため 最後に配置されています。実際に有効になっているソースはgoogle_statusが 表示します。

認証情報を必要としない2つの経路については google-no-oauth-client.mdに記載しています。

前提条件: Google OAuth clientを作成する

Section titled “前提条件: Google OAuth clientを作成する”

自分自身のGoogle OAuth clientを用意する必要があります(DuDuClawは共有の 認証情報を同梱しません)。初回セットアップ:

  1. Google Cloud Console → Credentials ページを開く(先にプロジェクトを作成/選択)。

  2. プロジェクトに対して以下の8つのAPIを有効化する(APIs & Services → Library)。またはコマンド1つで:

    ターミナルウィンドウ
    gcloud services enable gmail.googleapis.com calendar-json.googleapis.com \
    sheets.googleapis.com drive.googleapis.com docs.googleapis.com \
    slides.googleapis.com forms.googleapis.com tasks.googleapis.com \
    --project=PROJECT_ID
  3. OAuth同意画面を設定する(ExternalまたはInternal)。アプリが「Testing」の ままであれば、自分自身のGoogleアカウントをテストユーザーとして追加する。

  4. Web applicationタイプのOAuth client IDを作成する。

  5. Authorized redirect URIsに、正確に以下を追加する:

    http://localhost:18789/api/mcp/oauth/callback

    18789はgatewayのデフォルトポートです。別のポートで実行している場合 (DUDUCLAW_PORT)は、そのポートを代わりに登録してください。ダッシュボードの セットアップ手順には、gatewayが実際にリッスンしているポートから導出された 正確なURIが表示されます。ここが一致していないと、失敗は静かに起こります。 Googleはブラウザを何も待ち受けていないポートにリダイレクトするため、 トークンが届くことはなく、ページは「未接続」のままになります。

  6. 生成されたClient IDClient secretをコピーする。

要求されるスコープは以下のとおりです:

https://www.googleapis.com/auth/gmail.readonly
https://www.googleapis.com/auth/gmail.compose
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/spreadsheets
https://www.googleapis.com/auth/drive.readonly
https://www.googleapis.com/auth/documents
https://www.googleapis.com/auth/presentations.readonly
https://www.googleapis.com/auth/forms.body.readonly
https://www.googleapis.com/auth/forms.responses.readonly
https://www.googleapis.com/auth/tasks
https://www.googleapis.com/auth/userinfo.email

スコープ変更(v1.45): Sheetsツールのためにspreadsheetsスコープが 追加されました。v1.45より前に接続されたGoogleアカウントは、トークンが このスコープの追加前に発行されたものであるため、Sheets APIから403を 受け取ります。google_statusは不足しているスコープを警告し、ダッシュボードから 再接続するとフルセットのスコープで再度同意を求められます。

スコープ変更(v1.47): 新しいネイティブツールのために、Drive (drive.readonly)、Docs(documents)、Slides (presentations.readonly)、Forms(forms.body.readonlyforms.responses.readonly)、Tasks(tasks)が追加されました。上記と 同じルールが適用されます。古いトークンは403と再認証の案内を受け取ります。 Integrations → Googleから再接続して再度同意してください。

  1. Integrations → Google(/manage/integrations?tab=google)に移動する。
  2. Client IDとClient secretを貼り付け、Connect Googleをクリックする。
  3. Googleの同意ウィンドウが開きます。アクセスを承認すると、ウィンドウに 成功が表示され、ダッシュボードはGoogle is connectedに切り替わります。

client認証情報は永続化されます(secretは保存時に暗号化)。これによりアクセス トークンを自動的に更新でき、後で再認可する際にsecretを再入力する必要も ありません。

切断するには、接続済み画面でDisconnectをクリックします。保存されている client認証情報は保持されるためワンクリックで再接続できますが、アクセス トークンは削除されます。

Googleはオフラインアクセスが要求された場合にのみrefresh tokenを発行するため、 接続フローはGoogle向けに自動的にaccess_type=offline&prompt=consentを 付与します。アクセストークンが期限切れになると、get_valid_google_tokenが 保存されているclient認証情報でrefresh grantを実行し、新しいトークンを保存して 処理を継続します。更新ができない場合(refresh tokenがない、または保存された 認証情報が見つからない)、ツールは明確なメッセージを返し、Integrations → Googleページに戻って再接続するよう案内します。

この統合が提供される前(古いスコープセット)に認可されたトークンは、新しい 書き込みAPIから403を受け取ります。ツールはこれを検知し、付与すべき スコープの一覧を含む案内を返します。Integrations → Googleから再接続すると、 現在のスコープセットで再度同意できます。

  • 「Google is not connected.」: トークンが保存されていません。 ダッシュボードから接続してください。
  • 401 Unauthorized: 認可が取り消された、または無効です。 再接続してください。
  • スコープ一覧付きの403: トークンに必要なスコープが不足しています。 再接続して再同意してください。
  • 同意中のRedirect URI不一致: Google OAuth clientのredirect URIは 正確にhttp://localhost:18789/api/mcp/oauth/callbackである必要があります。

いつでもgoogle_statusを実行すれば、その場で診断結果を確認できます。