Skip to main content
Glama
dipseth

google-workspace-unlimited

🚀 GoogleUnlimited Google Workspace プラットフォーム

docs pypi license privacy terms

google_workspace_fastmcp2 MCP server

GoogleUnlimited は、高度なミドルウェアアーキテクチャを通じて Google Workspace とのシームレスな統合を提供する包括的な MCP フレームワークです。統合された安全な API を使用して、AI アシスタントや MCP クライアントが Gmail、Google Drive、Docs、Sheets、Slides、Calendar、Forms、Chat、Photos、Contacts(People API)の各サービスと連携できるようにします。

他との差別化ポイント:

  • Code Mode(デフォルト) — クライアントを90以上のツールスキーマで埋め尽くす代わりに、サーバーは7つの軽量なメタツールを公開します。AI はオンデマンドでツールを発見し、単一のサンドボックス化された execute ブロック内で実際の API 呼び出しを連鎖させます

  • 🚀 ゼロコンフィグ起動.env ファイルなしでサーバーが即座に起動します。OAuth は初回使用時に遅延処理されます

  • 🔧 セッション単位のツール制御 — URL ベースのサービスフィルタリングとセッション単位の有効化/無効化により、接続された各クライアントは必要なツールだけを正確に表示できます

  • 🎨 テンプレート&カード DSL システム — Jinja2 マクロとコンパクトなカード表記法により、生の API データをリッチなメール、ダッシュボード、Google Chat カードに変換します

  • 🧠 セマンティックメモリ — すべてのツール応答が Qdrant に埋め込まれ、後で自然言語で検索できます

📋 目次

Related MCP server: mcp-google-workspace

⚡ クイックインストール手順

GoogleUnlimited とは?

GoogleUnlimited は、Model Context Protocol(MCP)を通じて AI アシスタントに Google Workspace サービスへのアクセスを提供します。9つの Google サービスにわたる 92以上のツールをサポートし、革新的なパフォーマンス向上により、AI ワークフローと Google Workspace アプリケーションのシームレスな統合を実現します。

🛠️ インストール方法

方法1:uvx によるクイックインストール(推奨)

最も簡単な開始方法です。PyPI から直接インストールします:

{
  "mcpServers": {
    "google-workspace-unlimited": {
      "command": "uvx",
      "args": ["google-workspace-unlimited"],
      "disabled": false,
      "timeout": 300
    }
  }
}

これだけです! サーバーはデフォルトで stdio モードで実行され、Claude Desktop、Cursor、Roo などの MCP クライアントに最適です。Code Mode が初期状態で有効になっているため、クライアントには90以上のスキーマではなく、7つの軽量メタツールが表示されます。

方法1b:Claude Code プラグイン(サーバー+スキル)

Claude Code ユーザーは、2つのコマンドで、サーバーと、Claude にカード/メール DSL、コードモード、Qdrant 検索を教えるスキルをインストールできます:

/plugin marketplace add dipseth/google_workspace_fastmcp2
/plugin install google-workspace-unlimited@riversunlimited

詳細は plugins/google-workspace-unlimited を参照してください。

方法2:クローンと開発セットアップ

開発またはカスタマイズの場合:

  1. クローンとセットアップ:

    git clone https://github.com/dipseth/google_workspace_fastmcp2.git
    cd google_workspace_fastmcp2
    uv sync
  2. サーバーを起動:

    uv run python server.py

    サーバーは設定が一切不要で即座に起動します。起動時に OAuth 資格情報は必要ありません。認証は、Google サービスに初めてアクセスしたときに遅延処理されます。

  3. 準備ができたら認証:

    Google Workspace のツールを呼び出すと、サーバーは start_google_auth ツールによる認証を促します。これにより、ブラウザベースの OAuth フローが開きます。完了すると、資格情報はローカルに保存され、セッション間で再利用されます。

    OAuth 資格情報を事前設定する場合(任意)、.env ファイルを作成します:

    cp .env.example .env

    次に、Google Cloud Console の資格情報を追加します:

    # Option A: Client ID + Secret
    GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
    GOOGLE_CLIENT_SECRET=your-client-secret
    
    # Option B: Downloaded JSON credentials file
    GOOGLE_CLIENT_SECRETS_FILE=credentials.json

    OAuth 資格情報の作成と API の有効化については、Google Cloud Console のセットアップ手順 を参照してください。

📚 設定リソース:

📋 環境変数リファレンス

すべての環境変数はオプションです。サーバーは妥当なデフォルト値で起動するため、.env ファイルは不要です。OAuth 資格情報が必要になるのは、start_google_auth で新しい認証フローを開始するときだけです。

Google OAuth(初回認証に必要):

変数

デフォルト

説明

GOOGLE_CLIENT_ID

(empty)

Google Cloud Console の OAuth 2.0 クライアント ID

GOOGLE_CLIENT_SECRET

(empty)

OAuth 2.0 クライアントシークレット

GOOGLE_CLIENT_SECRETS_FILE

(empty)

代替:ダウンロードした OAuth JSON ファイルへのパス

OAUTH_REDIRECT_URI

http://localhost:8002/oauth2callback

Google Console のリダイレクト URI と一致する必要があります

初回の OAuth フロー前に、GOOGLE_CLIENT_IDGOOGLE_CLIENT_SECRET または GOOGLE_CLIENT_SECRETS_FILEいずれかを指定してください。認証が完了すると資格情報はローカルに保存されるため、これらの変数は以後不要になります。

サーバー:

変数

デフォルト

説明

SERVER_HOST

localhost

サーバーのバインドアドレス

SERVER_PORT

8002

サーバーのポート

ENABLE_HTTPS

false

HTTPS/SSL を有効にする

SSL_CERT_FILE

-

SSL 証明書へのパス(HTTPS 有効時に必須)

SSL_KEY_FILE

-

SSL 秘密鍵へのパス(HTTPS 有効時に必須)

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

セキュリティとセッション:

変数

デフォルト

説明

CREDENTIAL_STORAGE_MODE

FILE_ENCRYPTED

FILE_ENCRYPTED, FILE_PLAINTEXT, MEMORY_ONLY

CREDENTIALS_DIR

./credentials

保存された資格情報のディレクトリ

MCP_API_KEY

(empty)

サーバー API キー — 暗号にバインドされた資格情報の暗号化(HKDF-SHA256)とユーザーごとのキー生成にも使用されます

SESSION_TIMEOUT_MINUTES

60

セッションのアイドルタイムアウト

GMAIL_ALLOW_LIST

(empty)

カンマ区切りの信頼済みメールアドレス

ツール管理:

変数

デフォルト

説明

MINIMAL_TOOLS_STARTUP

true

保護された5つのツールのみを有効にして起動

MINIMAL_STARTUP_SERVICES

(empty)

起動時に有効にするサービスのカンマ区切りリスト(例:drive,gmail

ENABLE_CODE_MODE

true

Code Mode(デフォルト)— 完全なツールカタログを7つのメタツール+サンドボックス化された execute に置き換えます。false に設定すると従来のカタログを使用

ENABLE_SKILLS_PROVIDER

false

動的なスキル生成を行う FastMCP SkillsDirectoryProvider を有効にする

SKILLS_DIRECTORY

~/.claude/skills

生成されたスキルドキュメントのディレクトリ

RESPONSE_LIMIT_MAX_SIZE

500000

ツール応答の最大サイズ(バイト単位。0 = 無効)

RESPONSE_LIMIT_TOOLS

(empty)

制限するツール名のカンマ区切りリスト(空 = すべて)

Qdrant ベクターデータベース:

変数

デフォルト

説明

QDRANT_URL

http://localhost:6333

Qdrant ベクターデータベースの URL

QDRANT_KEY

NONE

Qdrant API キー(認証なしの場合は NONE を使用)

QDRANT_AUTO_LAUNCH

true

到達できない場合に Docker 経由で Qdrant を自動起動

QDRANT_DOCKER_IMAGE

qdrant/qdrant:latest

自動起動用の Docker イメージ

QDRANT_DOCKER_CONTAINER_NAME

mcp-qdrant

自動起動された Qdrant のコンテナ名

その他:

変数

デフォルト

説明

MCP_CHAT_WEBHOOK

(empty)

Google Chat カードツール用のデフォルト Webhook URL

FASTMCP_CLOUD

false

クラウドデプロイメントモードを有効にする(MEMORY_WITH_BACKUP ストレージに自動切り替え)

🔗 クライアント接続

GoogleUnlimited は複数の接続方法をサポートしています。最も一般的な2つの開始方法は次のとおりです:

🎯 クイックセットアップオプション

オプション 1: Cursor IDE (STDIO - コミュニティ検証済み ✅):

{
  "mcpServers": {
    "google-workspace": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/google_workspace_fastmcp2",
        "run", "python", "server.py"
      ],
      "env": {
        "GOOGLE_CLIENT_SECRETS_FILE": "/path/to/client_secrets.json",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

オプション 2: HTTP Streamable (VS Code Roo、Claude Code、Claude Desktop など):

# Start server in HTTP mode
uv run python server.py --transport http --port 8002

基本的な単一接続設定:

{
  "google-workspace": {
    "type": "streamable-http",
    "url": "https://localhost:8002/mcp",
    "disabled": false
  }
}

マルチ接続設定URLクエリパラメータを使用して、同じクライアント(または複数のクライアント)を異なるツールセットで同じサーバーに接続します:

{
  "google-email": {
    "type": "streamable-http",
    "url": "https://localhost:8002/mcp?service=gmail"
  },
  "google-chat": {
    "type": "streamable-http",
    "url": "https://localhost:8002/mcp?service=chat"
  },
  "google-productivity": {
    "type": "streamable-http",
    "url": "https://localhost:8002/mcp?service=drive,docs,sheets,slides"
  }
}

各接続は、要求されたサービスのツールのみが有効な、独自の分離されたセッションを取得します。また、?uuid= でセッションIDを固定すると、再接続時に同じセッション状態を再開できます:

{
  "google-workspace": {
    "type": "streamable-http",
    "url": "https://localhost:8002/mcp?uuid=my-workspace&service=gmail,drive,calendar"
  }
}

クエリパラメータの完全なリストについては、URLベースのサービスフィルタリングを参照してください。

🤖 Claude Code と Claude Desktop

Claude Code (CLI) — 公開されているPyPIパッケージを使用した1コマンド:

# Local stdio (recommended): uvx fetches and runs the server on demand
claude mcp add google-workspace -- uvx google-workspace-unlimited

# Or connect to an already-running HTTP server
claude mcp add --transport http google-workspace https://localhost:8002/mcp

Claude Desktop (ローカル開発パス)claude_desktop_config.json に追加します (設定 → 開発者 → 設定を編集):

{
  "mcpServers": {
    "google-workspace-unlimited": {
      "command": "uvx",
      "args": ["google-workspace-unlimited"]
    }
  }
}

Claude.ai / Claude Desktop (ホステッドコネクタ) — サーバーを公開HTTPSエンドポイント(例: Cloudflare や ngrok トンネル)の背後で実行し、設定 → コネクタ → カスタムコネクタを追加https://your-domain/mcp URL を追加します。サーバーの OAuth 2.1 + PKCE フローが認証を処理し、https://claude.ai/api/mcp/auth_callback リダイレクトも含みます。詳細な手順については、Claude.ai 統合ガイド を参照してください。

📚 完全な接続ガイド

以下を含む、サポートされているすべてのクライアント向けの詳細なセットアップ手順、トラブルシューティング、構成については:

  • Claude Code CLI (HTTP & STDIO)

  • Claude Desktop

  • VS Code / Roo / GitHub Copilot

  • Claude.ai with Cloudflare Tunnel

  • その他...

🔗 完全なクライアント接続ガイド - サポートされているすべてのAIクライアントと開発環境向けの包括的なセットアップ手順、トラブルシューティング、高度な構成

⚡ コードモード(デフォルト)

コードモードはGoogleUnlimitedの主力機能であり、デフォルトでオンです。90以上のツールスキーマを事前に読み込む代わりに(トークン消費が大きい)、MCPクライアントには7つのメタツールだけが表示されます。AIはオンデマンドでツールを発見し、サンドボックス化された単一のPython execute ブロック内で任意の数の実際のAPI呼び出しを連鎖させます。

Meta-Tool

Purpose

tags

サービスカテゴリ(Gmail、Drive、Calendarなど)でツールを閲覧する

search

BM25ベースのキーワード検索でツール名と説明を横断検索する

get_schema

選択したツールの完全なパラメータスキーマを取得する

semantic_search

保存済みのツール応答に対する自然言語検索(Qdrantベース)

fetch_document

検索結果のポイントIDから保存済みの完全な応答を取得する

tool_activity

最近のツール使用パターンとアクティビティを要約する

execute

await call_tool(name, params) を介して実際のツール呼び出しを連鎖させるサンドボックス化されたPythonブロックを実行する

重要な理由:

  • 💰 大幅なトークン節約 — 90以上ではなく7つのスキーマで、実際に使用するツールの完全なスキーマのみを取得

  • 🔗 多数のラウンドトリップではなく1回で — 検索 → フィルタ → 実行は、クライアントのラウンドトリップの連鎖ではなく、単一の execute ブロック内で行われます

  • 🧰 バッテリー同梱のサンドボックス — 40以上の組み込みヘルパー(now()days_ago()to_json()re_find()gather_tools() など)が、インポートなしで日付、JSON、URL、正規表現、数学、バッチ呼び出しをカバーします

# One execute block: find a Drive file, then email its link
files = await call_tool("search_drive_files", {"query": "Q4 report"})
link = files["files"][0]["webViewLink"]
result = await call_tool("send_gmail_message", {
    "to": "manager@company.com",
    "subject": "Q4 Report",
    "body": "Here's the Q4 report: " + link,
})
return result

従来のカタログがお好みですか? オプトアウトすると、すべてのツールがクライアントに直接公開されます:

ENABLE_CODE_MODE=false   # expose the full 90+ tool catalog instead

コードモードと従来のカタログは相互排他的です — コードモードが有効な場合、直接のツール呼び出しは検索 + execute パターンに置き換えられます。ディスカバリツールは、セッションレベルのフィルタリングに関係なく、常に完全なカタログを参照します。

🎯 サービス機能

GoogleUnlimitedは、90以上の専門ツールを備えた10のGoogle Workspaceサービスをサポートしています:

Service

Icon

Tools

Key Features

Documentation

Gmail

📧

14

送信、返信、ラベル、フィルタ、検索、許可リスト

api-reference/gmail/

Drive

📁

9

アップロード、ダウンロード、共有、Officeドキュメント、ファイル管理

api-reference/drive/

Docs

📄

4

作成、編集、フォーマット、バッチ操作

api-reference/docs/

Sheets

📊

7

読み取り、書き込み、数式、フォーマット

api-reference/sheets/

Slides

🎯

5

プレゼンテーション、テンプレート、エクスポート

api-reference/slides/

Calendar

📅

9

イベント、スケジュール、参加者、タイムゾーン

api-reference/calendar/

Forms

📝

8

作成、回答、検証、公開

api-reference/forms/

Chat

💬

24

メッセージング、カード、スペース、ウェブフック、ユニファイドカード

api-reference/chat/

Photos

📷

12

アルバム、アップロード、検索、メタデータ、スマート検索

api-reference/photos/

People

👤

4

名前→メール検索(連絡先 + 組織ディレクトリ)、連絡先ラベル

people/

📚 APIドキュメントリソース:

🧠 ミドルウェアアーキテクチャ

GoogleUnlimitedは、シームレスなサービス統合、インテリジェントなリソース管理、強力なテンプレート機能を提供するミドルウェアアーキテクチャを使用しています。

Middleware Architecture

🔧 コアミドルウェアコンポーネント

  • 🏷️ TagBasedResourceMiddleware: URIパターン(service://gmail/messagesuser://current/email)を使用したインテリジェントなリソース発見

  • 🧠 QdrantUnifiedMiddleware: ベクトル埋め込みによる全ツール応答にわたるAI駆動のセマンティック検索

  • 🎨 TemplateMiddleware: 美しく構造化された出力フォーマットのための高度なJinja2テンプレートシステム

✨ アーキテクチャの利点

  • 🔄 統合リソースアクセス: API呼び出しなしでサービスデータへのURIベースのアクセス

  • 🧠 セマンティックインテリジェンス: 保存されたすべての応答にわたる自然言語検索

  • 🎨 視覚的優秀性: AIが最適に消費できる、一貫性のある美しい出力フォーマット

  • 💰 トークン効率: テンプレートマクロが構造化データレンダリングによりトークン使用量を60〜80%削減

  • ⚡ パフォーマンス: インテリジェントキャッシュにより従来のアプローチより30倍高速

📚 ミドルウェアドキュメントリソース:

🚀 最小ツール起動

デフォルトでは、GoogleUnlimitedは最適なパフォーマンスとセキュリティのために、保護された5つのツールのみを有効にして起動します。これにより、クライアントは必要なツールだけを有効にできます。

保護されたツール(常に利用可能):

  • manage_tools - ツールをグローバルまたはセッションごとに有効/無効にする

  • manage_tools_by_analytics - アナリティクスベースのツール管理

  • health_check - サーバーのヘルスと構成ステータス

  • start_google_auth - OAuth認証を開始する

  • check_drive_auth - 認証ステータスを確認する

構成:

# Default: Start with minimal tools (only 5 protected tools)
MINIMAL_TOOLS_STARTUP=true

# Optional: Pre-enable specific services at startup
MINIMAL_STARTUP_SERVICES=drive,gmail,calendar

# Disable minimal startup (enable all 92+ tools immediately)
MINIMAL_TOOLS_STARTUP=false

実行時のツール有効化:

# Enable all tools globally
manage_tools(action="enable_all")

# Enable specific tools
manage_tools(action="enable", tool_names=["search_drive_files", "list_gmail_labels"])

# List all registered tools (shows enabled/disabled status)
manage_tools(action="list")

🔧 セッションスコープのツール管理

GoogleUnlimitedはセッションごとのツール有効/無効機能をサポートしており、他の接続中のクライアントに影響を与えることなく、異なるMCPクライアントが異なるツール利用状況を持つことができます。

主な機能:

  • セッション分離: 他のセッションに影響を与えずに、1つのクライアントセッションのツールを無効にする

  • 非侵襲: セッションスコープの操作はグローバルツールレジストリを変更しない

  • 保護されたツール: コア管理ツール(manage_toolshealth_check など)は常に利用可能

  • ミドルウェアベース: プロトコルレベルのフィルタリングに SessionToolFilteringMiddleware を使用

使用例:

# Disable tools for this session only (other clients unaffected)
manage_tools(action="disable", tool_names=["send_gmail_message"], scope="session")

# Disable all except specific tools for this session
manage_tools(action="disable_all_except", tool_names=["search_drive_files", "list_events"], scope="session")

# Re-enable all tools for this session
manage_tools(action="enable_all", scope="session")

# Global operations (original behavior, affects all clients)
manage_tools(action="disable", tool_names=["send_gmail_message"], scope="global")

レスポンス構造:

{
  "success": true,
  "action": "disable_all_except",
  "scope": "session",
  "enabledCount": 94,
  "disabledCount": 0,
  "toolsAffected": ["tool1", "tool2", "..."],
  "sessionState": {
    "sessionId": "f725be09...",
    "sessionAvailable": true,
    "sessionDisabledTools": ["tool1", "tool2"],
    "sessionDisabledCount": 89
  },
  "message": "Kept 5 tools, disabled 89 tools for this session"
}

📚 スキルプロバイダー

ENABLE_SKILLS_PROVIDER=true で有効にすると、GoogleUnlimitedはModuleWrapperインスタンスからスキルドキュメントを生成し、FastMCPの SkillsDirectoryProvider を介して提供します。スキルは、LLMが複雑なマルチステップタスクのために参照できる構造化された知識を提供します。

現在サポートされているモジュール:

  • card_frameworkgchat-cards スキル (Google ChatカードDSLリファレンス、コンポーネント階層、例)

構成:

ENABLE_SKILLS_PROVIDER=true     # Enable skill generation
SKILLS_DIRECTORY=~/.claude/skills  # Output directory (default)

スキルは起動のたびに自動再生成され、FastMCPスキルシステムを介してすぐに利用可能になります。

🖥️ ツール管理ダッシュボード

GoogleUnlimitedには、MCP Appsの ui:// リソーススキームを介して提供される組み込みのツール管理ダッシュボードが含まれています。これは、セッション全体のツール利用状況を監視および管理するための視覚的インターフェースを提供します。

Tool Management Dashboard

機能:

  • サービス別ツールビュー — Googleサービス(Gmail、Drive、Sheetsなど)ごとに整理されたツールと件数

  • セッション状態の可視性 — 有効、無効、またはセッション無効のツールをひと目で確認

  • フィルタチップ — サービスですばやくフィルタリングして関連ツールに集中

  • ライブデータDashboardCacheMiddleware によって駆動され、list-tool結果をキャッシュして ui://data-dashboard リソースへ即座にアクセス

ダッシュボードは wire_dashboard_to_list_tools() を介してすべてのlistツールに自動的に配線されます — ツールごとの設定は不要です。

🔗 URLベースのサービスフィルタリング(HTTPトランスポート)

HTTP/SSEトランスポートを使用する場合、URLクエリパラメータを介してサービスごとにツールを直接フィルタリングできます - コードは不要です:

# Enable only Gmail tools
http://localhost:8002/mcp?service=gmail

# Enable Gmail + Drive + Calendar
http://localhost:8002/mcp?service=gmail,drive,calendar

# Resume a previous session
http://localhost:8002/mcp?uuid=your-session-id

# Resume session with specific services
http://localhost:8002/mcp?uuid=abc123&service=gmail,drive

# Disable minimal startup (enable all tools)
http://localhost:8002/mcp?minimal=false

利用可能なURLパラメータ:

パラメータ

説明

service または services

?service=gmail,drive

有効にするサービスのカンマ区切りリスト

uuid

?uuid=abc123

ID で以前のセッションを再開

minimal

?minimal=false

最小限の起動モードを上書き

利用可能なサービス: gmaildrivecalendardocssheetsslidesphotoschatformspeople

📚 セッションツール管理リソース:

🎨 テンプレートシステム

GoogleUnlimited は強力な Jinja2 テンプレートマクロ を備えており、生の Google Workspace データを視覚的に美しく、AI に最適化された形式に変換します。

🎯 利用可能なテンプレートマクロ

テンプレートファイル

マクロ

目的

主な機能

email_card.j2

render_gmail_labels_chips()

Gmail ラベルの可視化

インタラクティブなチップ、未読数、Gmail への直接リンク

calendar_dashboard.j2

render_calendar_dashboard()

カレンダー&イベントダッシュボード

プライマリ/共有カレンダー、今後のイベント、ダークテーマ

dynamic_macro.j2

render_calendar_events_dashboard()

カレンダーイベントダッシュボード

イベントカード、時刻/場所の詳細、クリック可能なリンク、ダークテーマ

document_templates.j2

generate_report_doc()

プロフェッショナルなレポート

メトリクス、テーブル、チャート、会社ブランディング

colorfuL_email.j2

render_beautiful_email3()

リッチな HTML メール

複数の署名、グラデーション、レスポンシブデザイン

💡 テンプレートマクロの例

Gmail ラベルの可視化 - ラベルリストを美しいインタラクティブなチップに変換:

{{ render_gmail_labels_chips( service://gmail/labels , 'Label summary for: ' + user://current/email ) }}

カレンダーダッシュボード - 包括的なカレンダー概要を作成:

{{ render_calendar_dashboard( service://calendar/calendars, service://calendar/events, 'My Calendar Overview' ) }}

カレンダーイベントダッシュボード - カレンダーイベントを美しくインタラクティブなイベントカードに変換:

{{ render_calendar_events_dashboard( service://calendar/events , 'Upcoming Events for: ' + user://current/email.email ) }}

Calendar Events Dashboard Example

このマクロは、見事なダークテーマのダッシュボードを作成します:

  • 📅 インタラクティブなイベントカード: 各イベントは Google カレンダーで開くクリック可能なカードとしてレンダリングされます

  • 🕐 スマートな時刻表示: 終日イベントと時刻指定イベントをタイムゾーン対応で自動的にフォーマット

  • 📍 場所の統合: 会議の場所とバーチャル会議リンクを表示

  • 👥 参加者情報: 参加者数と参加者の詳細を表示

  • ステータスインジケーター: 色分けされたステータス(確定、仮予定、キャンセル)と視覚的なフィードバック

  • 📱 レスポンシブデザイン: タッチ操作に最適化されたモバイル対応レイアウト

  • 🎨 ダークテーマのスタイリング: グラデーション背景とホバーエフェクトを備えたプロフェッショナルな外観

プロフェッショナルなドキュメント - メトリクスとチャートを含むレポートを生成:

{{ generate_report_doc(
    report_title='Q4 Performance Report',
    metrics=[{'value': '$1.2M', 'label': 'Revenue', 'change': 15}],
    company_name='Your Company'
) }}

🔍 マクロの発見と動的作成

テンプレートリソースシステムを使用して、利用可能なすべてのマクロを探索:

# Access the template://macros resource to discover all available macros
macros = await access_resource("template://macros")
# Returns comprehensive macro information with usage examples

# Access specific macro details
macro_details = await access_resource("template://macros/render_gmail_labels_chips")

🎯 動的マクロ作成

create_template_macro ツールを使用して、実行時にカスタムマクロを作成:

# Create a new macro dynamically
await create_template_macro(
    macro_name="render_task_status_badge",
    macro_content='''
    {% macro render_task_status_badge(status, size='small') %}
    {% if status == 'completed' %}
    <span class="status-badge status-completed {{ size }}">✅ Complete</span>
    {% elif status == 'in_progress' %}
    <span class="status-badge status-in-progress {{ size }}">🔄 In Progress</span>
    {% else %}
    <span class="status-badge status-pending {{ size }}">⏳ {{ status|title }}</span>
    {% endif %}
    {% endmacro %}
    ''',
    description="Renders visual status badges for task states with appropriate icons",
    usage_example="{{ render_task_status_badge('completed', 'large') }}",
    persist_to_file=True
)

# Immediately use the newly created macro
await send_gmail_message(
    html_body="Task Status: {{ render_task_status_badge('completed', 'large') }}"
)

DSL 駆動のマクロ — 動的マクロは Google Chat カード DSL 表記 を埋め込んで、リッチで構造化されたカードを生成することもできます。DSL シンボルがカードレイアウトを定義し、Jinja2 が動的コンテンツを処理します:

{# workspace_dashboard.j2 — a dynamic macro that outputs a Google Chat card #}
{% macro workspace_dashboard(user_email, stats=None, quick_actions=None) %}
{% set username = user_email.split('@')[0] if user_email else 'User' %}
{% set default_stats = stats or [
    {'label': 'Emails', 'value': '12 unread'},
    {'label': 'Calendar', 'value': '3 meetings today'},
    {'label': 'Tasks', 'value': '5 pending'}
] %}

§[δ×3, ℊ[ǵ×4], §[δ×2, Ƀ[ᵬ×3]]]

Welcome back, {{ username | title }}!

Your Workspace Overview:
{% for stat in default_stats %}
- {{ stat.label }}: {{ stat.value }}
{% endfor %}

Actions:
- Button: Open Gmail → https://mail.google.com
- Button: Open Calendar → https://calendar.google.com
- Button: Open Drive → https://drive.google.com
{% endmacro %}

DSL 行 §[δ×3, ℊ[ǵ×4], §[δ×2, Ƀ[ᵬ×3]]] はカード構造を定義します: 3 つの DecoratedText ウィジェットを持つセクション、4 つのアイテムを持つグリッド、2 つの DecoratedText ウィジェットと 3 つのボタンを持つ ButtonList を含むネストされたセクション。Jinja2 テンプレートが動的にコンテンツを埋め込みます — そして templates/dynamic/ に永続化されるため、send_dynamic_card や他のツールですぐに利用できます。

主な機能:

  • 即時利用可能性: マクロは作成後すぐに利用可能

  • 🎯 リソース統合: template://macros/macro_name 経由で自動的に利用可能

  • 💾 オプションの永続化: マクロをディスクに保存して恒久的に利用可能に

  • 🔄 テンプレート処理: 完全な Jinja2 構文検証とエラーハンドリング

  • 💬 DSL 統合: マクロはリッチな Google Chat カード用のカード DSL 表記を出力可能

🚀 実世界での使用例

テンプレートはツール呼び出しで直接使用でき、美しく構造化された出力を実現します:

# Send a beautiful email with calendar dashboard
await send_gmail_message(
    to="manager@company.com",
    subject="Weekly Schedule Update",
    html_body="{{ render_calendar_events_dashboard( service://calendar/events, 'My upcoming events') }}",
    content_type="mixed"
)

# Generate and send a professional report
await create_doc(
    title="Q4 Performance Report",
    content="{{ generate_report_doc( report_title='Quarterly Results', company_name='GoogleUnlimited' ) }}"
)

📚 テンプレートシステムリソース:

🗂️ リソースディスカバリー

GoogleUnlimited は強力な MCP リソースシステム を提供し、インテリジェントな URI パターンを通じて API 呼び出しなしで電光石火のデータアクセスを実現します。

Resource Discovery

🎯 リソース URI パターン

パターン

目的

戻り値

user://profile/{email}

ユーザー認証ステータス

user://profile/john@gmail.com

プロフィール + 認証状態

service://{service}/lists

利用可能なサービスリスト

service://gmail/lists

[フィルター、ラベル]

service://{service}/{list_type}

リスト内のすべてのアイテム

service://gmail/labels

すべての Gmail ラベル

service://{service}/{list_type}/{id}

特定アイテムの詳細

service://gmail/labels/INBOX

INBOX ラベルの詳細

recent://{service}

最近のアイテム

recent://drive

最近の Drive ファイル

qdrant://search/{query}

セマンティック検索

qdrant://search/gmail errors

関連する応答

🏗️ 主要なリソースファイル

⚡ 電光石火のアクセス

# Instant Gmail labels (no API call needed)
labels = await access_resource("service://gmail/labels")

# Current user info from session
user = await access_resource("user://current/email")

# Semantic search across all tool responses
results = await access_resource("qdrant://search/gmail errors today")

# Recent calendar events
events = await access_resource("recent://calendar")

📚 リソースシステムのドキュメント:

🧪 テストフレームワーク

GoogleUnlimited には、LLM が実際に体験するのとまったく同じ方法で MCP の使用を検証する クライアントテスト を含む包括的なテストが含まれています。さらに追加のテストスイートもあります。559 件のテストが 100% の合格率で成功しています

🎯 クライアントテストの焦点

Testing Framework

クライアントテスト は最も重要なコンポーネントです。実際のリソース統合と、92 以上のツール9 つの Google サービス にわたる標準化されたパターンを使用して、MCP 操作の決定的なテストを提供します。これらのテストは、明示的なメール認証とミドルウェアインジェクションパターンの両方を検証します。

🚀 クイックテストコマンド

# 🧪 Run all client tests (primary test suite)
uv run pytest tests/client/ -v

# 📧 Test specific service
uv run pytest tests/client/ -k "gmail" -v

# 🔐 Authentication required tests
uv run pytest tests/client/ -m "auth_required" -v

🔬 実際のリソース ID 統合

テストフレームワークは、現実的なテストのためにサービスリソースから 実際の ID を取得します:

# Available fixtures for real resource testing
real_gmail_message_id      # From service://gmail/messages
real_drive_document_id     # From service://drive/items
real_calendar_event_id     # From service://calendar/events
real_photos_album_id       # From service://photos/albums
real_forms_form_id         # From service://forms/forms
real_chat_space_id         # From service://chat/spaces

🔄 CI/CD パイプライン

GitHub Actions による自動テストと公開:

  • CI ワークフロー: すべての PR と main へのプッシュ時に実行

    • Python 3.11 & 3.12 マトリックステスト

    • ruff check によるリンティングと ruff format によるフォーマット

    • 完全なテストスイートの実行

  • TestPyPI 公開: テスト用の自動パッケージ公開

📚 テストリソース:

🔒 セキュリティと認証

GoogleUnlimited は、OAuth 2.1 + PKCE、高度なセッション管理、包括的な監査機能を備えた エンタープライズグレードのセキュリティ を実装しています。

Security Architecture

🛡️ 認証フロー

  1. 🌐 MCP Inspector OAuth: 動的クライアント登録に対応した MCP 仕様準拠

  2. 🖥️ ダイレクトサーバー OAuth: 直接アクセスのための Web ベース認証

  3. 🔧 開発用 JWT: 生成されたトークンによるテストモード

  4. 📁 拡張ファイル資格情報: 暗号化オプション付きの永続ストレージ

  5. 🔑 カスタム OAuth クライアント: 自動フォールバック付きで独自の OAuth 資格情報を使用

  6. 🪪 ユーザーごとの API キー: OAuth 完了時に資格情報の分離を備えて生成される個別キー

✨ セキュリティ機能

  • 🔐 OAuth 2.1 + PKCE: 鍵交換の証明による最新の認証(パブリッククライアントをサポート)

  • 🔑 ユーザーごとの API キー: ハッシュのみの保存とタイミングセーフなルックアップを備えた、ユーザーごとの一意で失効可能なキー

  • 🛡️ 資格情報の分離: 認証由来に基づくアクセス制御により、ユーザー間の資格情報の継承を防止

  • 🔗 アカウントリンク: ユーザーごとのキーアクセスのための複数アカウント対応の双方向アカウントリンク

  • 🔒 暗号バウンド暗号化: MCP_API_KEY にバインドされた HKDF-SHA256 派生暗号化キー

  • 🔒 セッション分離: データ漏洩を防ぐマルチテナントサポート

  • 🏷️ 27 以上の API スコープ: すべてのサービスにわたるきめ細かな権限管理

  • 📊 監査ログ: 認証由来を含む完全なセキュリティイベント追跡

  • 🔐 AES-256 暗号化: レガシーキー移行サポート付きの資格情報ストレージ

  • 🔄 3 層フォールバック: サーバー再起動をまたぐ堅牢な資格情報の永続化(State Map → UnifiedSession → Context Storage)

  • 🧹 機密データの除去: 保存前に Qdrant 埋め込みから認証メタデータを削除

⚙️ セキュリティ設定

# 🔒 Security settings in .env
CREDENTIAL_STORAGE_MODE=FILE_ENCRYPTED
SESSION_SECRET_KEY=your-secret-key
SESSION_TIMEOUT_MINUTES=30
ENABLE_AUDIT_LOGGING=true
GMAIL_ALLOW_LIST=trusted@example.com

📚 セキュリティドキュメントリソース:


🚀 Google Workspace 統合に革命を起こす準備はできましたか?

📚 ドキュメント🔧 設定🎯 API リファレンス🧪 テスト

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
24dResponse time
5dRelease cycle
41Releases (12mo)
Commit activity
Issues opened vs closed

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dipseth/google_workspace_fastmcp2'

If you have feedback or need assistance with the MCP directory API, please join our Discord server