Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Dec 31, 2025 - 日記

fastmcp-gsuite: 決算作業で活躍したMCPサーバとこの2週間のアップデート

fastmcp-gsuite: 決算作業で活躍したMCPサーバとこの2週間のアップデート cover image

会社の決算作業で、メール、カレンダー、ドライブから経費などを発掘する作業が発生しました。そんな時に大活躍したのが、自作のMCPサーバ (Model Context Protocol)であるfastmcp-gsuite です。

このツールを使えば、Claude Desktop や他のMCP対応クライアントから、Google Workspace のGmail、Google Calendar、Google Driveに直接アクセスして検索や操作ができます。特に、Gmail添付ファイルをLLMのコンテキストに入れずに直接Driveに保存できる機能が決算作業で大活躍しました。

fastmcp-gsuiteとは?

fastmcp-gsuiteは、Google Workspace(Gmail、Calendar、Drive)をMCP プロトコル経由で操作できるPython 製のサーバです。

このプロジェクトは、MarkusPfundstein氏のmcp-gsuite をベースに、fastmcpライブラリを使った実装に書き換えたフォーク版です。元プロジェクトの素晴らしい設計思想を引き継ぎつつ、パフォーマンスと開発体験の向上を目指しています。

主な特徴:

  • 複数アカウント対応: 個人用と仕事用など、複数のGoogleアカウントを切り替えて使用可能
  • Gmail操作: メール検索、下書き作成、返信、添付ファイル保存
  • Calendar操作: イベントの検索、作成、削除、更新
  • Drive操作: ファイル検索、アップロード、ダウンロード、削除(ゴミ箱対応)
  • fastmcpベース: fastmcp ライブラリを使用した高速実装

2025年12月10日にGoogleがMCP公式サポートを発表 しましたが、Gmail/Calendar/Driveのサポートはまだ提供されていないため、それまでの命として使い倒しています。

決算作業での実践例

実際の決算作業で、以下のようなプロンプトでClaude Desktopに指示を出していました:

「2025年12月の経理メールから、交通費の領収書添付メールを全て検索して」
「先月のカレンダーから、取引先との打ち合わせ日時を一覧にして」
「ドライブの『2025決算』フォルダから請求書PDFを全部ダウンロード」

これらの操作をClaude Desktopが自動で実行してくれるため、手作業でメールを探し回る必要がなくなりました。

この2週間の主要アップデート

最近の機能追加・改善をまとめます(2025年12月中旬以降)。

1. インタラクティブOAuth設定CLI(12月21日)

OAuth2認証のセットアップが面倒だったため、対話型のセットアップコマンドを追加しました。

# インストール
pip install fastmcp-gsuite

# 対話型セットアップ実行
fastmcp-gsuite-setup

セットアップ時間が約15分から約5分に短縮されました。

主な機能:

  • ステップバイステップのウィザード形式
  • ブラウザベースのOAuth認証フロー
  • 複数アカウント管理(追加・削除・一覧表示)
  • 自動バリデーションとエラーハンドリング

2. Driveゴミ箱操作対応(12月21日)

ファイル削除機能が「完全削除のみ」だったため、ソフトデリート(ゴミ箱移動)に対応しました。

新規追加ツール:

  • trash_drive_file: ファイルをゴミ箱に移動
  • trash_drive_folder: フォルダをゴミ箱に移動
  • untrash_drive_file: ゴミ箱から復元

誤削除のリスクが減り、安心してファイル操作ができるようになりました。

3. Gmail添付ファイル→Drive直接保存(12月22日)⭐

これが最大の目玉機能です。 Gmail添付ファイルをLLMのコンテキストに入れずに、直接Google Driveに保存できるようになりました。

従来の問題:

  • 添付ファイルをBase64エンコードでMCPレスポンスに含めると、大量のトークンを消費
  • 大きなPDFや画像ファイルでコンテキストウィンドウを圧迫

新しいアプローチ:

  • save_gmail_attachment_to_drive: 添付ファイルを直接Driveに保存
  • bulk_save_gmail_attachments_to_drive: 複数の添付ファイルを一括保存
  • MCPレスポンスには保存先のDrive URLのみを返す(ファイル内容は返さない)

これにより、大容量の添付ファイルを扱う際のトークン消費が劇的に削減されました。

4. Gmail添付ファイル抽出の改善(12月21日)

ネストされたマルチパート構造のメールで、添付ファイルが取得できない問題を修正しました。

改善内容:

  • 複雑な構造のメール(HTMLメール + 添付ファイル)に対応
  • 添付ファイル検出ロジックの最適化
  • partIdベースの安定した添付ファイル識別

5. Gmail本文ページネーション(12月29日)

メール本文が長い場合、MCP経由で取得するとトークン数が膨大になる問題を解決しました。

新規パラメータ:

  • max_body_chars: 本文の最大文字数を指定
  • body_offset: 長いメール本文のページネーション用オフセット

大量のメールを処理する際のトークン消費が大幅に削減されました。

6. Calendar イベント更新機能(12月29日)

既存のカレンダーイベントの内容を更新できる機能を追加しました。

# イベントの時間やタイトルを変更
update_calendar_event(
    account_email="[email protected]",
    calendar_id="primary",
    event_id="abc123",
    summary="新しいタイトル",
    start_time="2025-01-15T10:00:00+09:00",
    end_time="2025-01-15T11:00:00+09:00"
)

7. OAuth2トークン自動更新(12月22日)

期限切れのOAuth2認証情報を自動的にリフレッシュする機能を追加しました。

以前は手動で再認証が必要でしたが、現在はトークンの有効期限が切れた場合に自動的に更新されます。

8. Drive APIにMD5チェックサム追加(12月21日)

ファイルの重複検出用に、Drive API レスポンスにmd5Checksumフィールドを追加しました。

これにより、同じファイルが複数アップロードされている場合の検出が容易になりました。

今後の展望

Google公式のMCPサーバがリリースされるまでの間は、このツールを使い続ける予定です。

個人的な改善予定:

  • エラーハンドリング改善: より詳細なエラーメッセージ
  • パフォーマンス最適化: レスポンス時間の短縮

まとめ

決算作業という実務での利用を通じて、fastmcp-gsuiteの便利さを再確認できました。特に、Gmail添付ファイルを直接Driveに保存する機能は、LLMのコンテキスト消費を気にせず大量の資料を処理できるため、実運用で非常に重宝しています。

2025年もこのツールを改善しながら、実務での生産性向上に役立てていきます。GoogleがGmail/Calendar/Drive向けのMCP公式サーバをリリースするその日まで、このプロジェクトを使い倒していく予定です。

2025年が皆様にとって素晴らしい年になりますように。本年もお世話になりました。来年もよろしくお願いいたします。

参考リンク