Skip to main content
Glama
dipseth

google-workspace-unlimited

🚀 GoogleUnlimited Google Workspace Plattform

docs pypi license privacy terms

google_workspace_fastmcp2 MCP server

GoogleUnlimited ist ein umfassendes MCP-Framework, das eine nahtlose Google Workspace-Integration durch eine fortschrittliche Middleware-Architektur bietet. Es ermöglicht KI-Assistenten und MCP-Clients, mit Gmail, Google Drive, Docs, Sheets, Slides, Calendar, Forms, Chat, Photos und Contacts (People API) über eine einheitliche, sichere API zu interagieren.

Was es auszeichnet:

  • Code Mode standardmäßig – statt Ihren Client mit über 90 Tool-Schemas zu überfluten, stellt der Server 7 schlanke Meta-Tools bereit; die KI entdeckt Tools bei Bedarf und verkettet echte API-Aufrufe in einem einzigen Sandbox-execute-Block.

  • 🚀 Start ohne Konfiguration – der Server läuft sofort ohne .env-Datei; OAuth erfolgt erst bei der ersten Nutzung.

  • 🔧 Tool-Steuerung pro Sitzung – URL-basierte Dienstfilterung und sitzungsbezogenes Aktivieren/Deaktivieren, sodass jeder verbundene Client genau die Tools sieht, die er benötigt.

  • 🎨 Template- und Karten-DSL-System – Jinja2-Makros und eine kompakte Kartenschreibweise verwandeln rohe API-Daten in reichhaltige E-Mails, Dashboards und Google-Chat-Karten.

  • 🧠 Semantisches Gedächtnis – jede Tool-Antwort wird in Qdrant eingebettet und später mit natürlicher Sprache durchsuchbar.

📋 Inhaltsverzeichnis

Related MCP server: mcp-google-workspace

⚡ Schnellinstallationsanleitung

Was ist GoogleUnlimited?

GoogleUnlimited bietet KI-Assistenten Zugriff auf Google Workspace-Dienste über das Model Context Protocol (MCP). Es unterstützt 92+ Tools in 9 Google-Diensten und ermöglicht eine nahtlose Integration zwischen KI-Workflows und Google Workspace-Anwendungen mit revolutionären Leistungsverbesserungen.

🛠️ Installationsmethoden

Methode 1: Schnellinstallation über uvx (Empfohlen)

Der schnellste Weg, um loszulegen – direkt von PyPI installieren:

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

Das war's! Der Server läuft standardmäßig im Stdio-Modus, perfekt für MCP-Clients wie Claude Desktop, Cursor, Roo usw. Code-Modus ist standardmäßig aktiviert, sodass Ihr Client 7 schlanke Meta-Tools anstelle von über 90 Schemas sieht.

Methode 1b: Claude Code Plugin (Server + Fähigkeiten)

Claude Code-Benutzer können den Server und die Fähigkeiten installieren, die Claude seine Karten-/E-Mail-DSL, den Code-Modus und die Qdrant-Suche in zwei Befehlen beibringen:

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

Siehe plugins/google-workspace-unlimited für Details.

Methode 2: Klonen und Entwicklungseinrichtung

Für Entwicklung oder Anpassung:

  1. Klonen und einrichten:

    git clone https://github.com/dipseth/google_workspace_fastmcp2.git
    cd google_workspace_fastmcp2
    uv sync
  2. Server starten:

    uv run python server.py

    Der Server startet sofort mit keiner erforderlichen Konfiguration. OAuth-Anmeldeinformationen werden beim Start nicht benötigt – die Authentifizierung erfolgt erst, wenn Sie zum ersten Mal mit einem Google-Dienst interagieren.

  3. Authentifizieren, wenn bereit:

    Wenn Sie ein Google Workspace-Tool aufrufen, fordert der Server Sie auf, sich über das Tool start_google_auth zu authentifizieren. Dadurch wird ein browserbasierter OAuth-Ablauf geöffnet. Nach Abschluss werden die Anmeldeinformationen lokal gespeichert und über Sitzungen hinweg wiederverwendet.

    Um OAuth-Anmeldeinformationen vorzukonfigurieren (optional), erstellen Sie eine .env-Datei:

    cp .env.example .env

    Fügen Sie dann Ihre Google Cloud Console-Anmeldeinformationen hinzu:

    # 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

    Siehe die Google Cloud Console-Einrichtungsschritte zum Erstellen von OAuth-Anmeldeinformationen und Aktivieren von APIs.

📚 Konfigurationsressourcen:

📋 Referenz der Umgebungsvariablen

Alle Umgebungsvariablen sind optional – der Server startet mit sinnvollen Standardwerten und ohne erforderliche .env-Datei. OAuth-Anmeldeinformationen werden nur benötigt, wenn Sie einen neuen Authentifizierungsablauf über start_google_auth starten.

Google OAuth (für die erstmalige Authentifizierung erforderlich):

Variable

Default

Description

GOOGLE_CLIENT_ID

(empty)

OAuth-2.0-Client-ID aus der Google Cloud Console

GOOGLE_CLIENT_SECRET

(empty)

OAuth-2.0-Client-Geheimnis

GOOGLE_CLIENT_SECRETS_FILE

(empty)

Alternative: Pfad zur heruntergeladenen OAuth-JSON-Datei

OAUTH_REDIRECT_URI

http://localhost:8002/oauth2callback

Muss mit der Weiterleitungs-URI der Google Console übereinstimmen

Geben Sie entweder GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET oder GOOGLE_CLIENT_SECRETS_FILE vor Ihrem ersten OAuth-Ablauf an. Nach der Authentifizierung werden die Anmeldeinformationen lokal gespeichert und diese Variablen werden nicht mehr benötigt.

Server:

Variable

Default

Description

SERVER_HOST

localhost

Server-Bindungsadresse

SERVER_PORT

8002

Server-Port

ENABLE_HTTPS

false

HTTPS/SSL aktivieren

SSL_CERT_FILE

-

Pfad zum SSL-Zertifikat (erforderlich, wenn HTTPS aktiviert ist)

SSL_KEY_FILE

-

Pfad zum SSL-privaten Schlüssel (erforderlich, wenn HTTPS aktiviert ist)

LOG_LEVEL

INFO

DEBUG, INFO, WARNING, ERROR

Sicherheit & Sitzungen:

Variable

Default

Description

CREDENTIAL_STORAGE_MODE

FILE_ENCRYPTED

FILE_ENCRYPTED, FILE_PLAINTEXT, MEMORY_ONLY

CREDENTIALS_DIR

./credentials

Verzeichnis für gespeicherte Anmeldeinformationen

MCP_API_KEY

(empty)

Server-API-Schlüssel – wird auch für kryptografisch gebundene Anmeldeinformationsverschlüsselung (HKDF-SHA256) und die Generierung benutzerspezifischer Schlüssel verwendet

SESSION_TIMEOUT_MINUTES

60

Sitzungs-Timeout bei Inaktivität

GMAIL_ALLOW_LIST

(empty)

Durch Kommas getrennte vertrauenswürdige E-Mail-Adressen

Tool-Verwaltung:

Variable

Default

Description

MINIMAL_TOOLS_STARTUP

true

Nur mit 5 geschützten aktivierten Tools starten

MINIMAL_STARTUP_SERVICES

(empty)

Durch Kommas getrennte Dienste, die beim Start aktiviert werden sollen (z. B. drive,gmail)

ENABLE_CODE_MODE

true

Code-Modus (Standard) – ersetzt den vollständigen Tool-Katalog durch 7 Meta-Tools + Sandbox-execute; setzen Sie false für den klassischen Katalog

ENABLE_SKILLS_PROVIDER

false

FastMCP SkillsDirectoryProvider für dynamische Fähigkeitengenerierung aktivieren

SKILLS_DIRECTORY

~/.claude/skills

Verzeichnis für generierte Fähigkeitendokumente

RESPONSE_LIMIT_MAX_SIZE

500000

Maximale Tool-Antwortgröße in Bytes (0 = deaktiviert)

RESPONSE_LIMIT_TOOLS

(empty)

Durch Kommas getrennte Tool-Namen, die begrenzt werden sollen (leer = alle)

Qdrant-Vektordatenbank:

Variable

Default

Description

QDRANT_URL

http://localhost:6333

Qdrant-Vektordatenbank-URL

QDRANT_KEY

NONE

Qdrant-API-Schlüssel (verwenden Sie NONE für keine Authentifizierung)

QDRANT_AUTO_LAUNCH

true

Qdrant automatisch über Docker starten, wenn nicht erreichbar

QDRANT_DOCKER_IMAGE

qdrant/qdrant:latest

Docker-Image für den automatischen Start

QDRANT_DOCKER_CONTAINER_NAME

mcp-qdrant

Container-Name für automatisch gestartetes Qdrant

Sonstiges:

Variable

Default

Description

MCP_CHAT_WEBHOOK

(empty)

Standard-Webhook-URL für Google-Chat-Karten-Tools

FASTMCP_CLOUD

false

Cloud-Bereitstellungsmodus aktivieren (wechselt automatisch zu MEMORY_WITH_BACKUP-Speicher)

🔗 Client-Verbindungen

GoogleUnlimited unterstützt mehrere Verbindungsmethoden. Hier sind die zwei beliebtesten Möglichkeiten, um loszulegen:

🎯 Schnellstart-Optionen

Option 1: Cursor IDE (STDIO - Community-verifiziert ✅):

{
  "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"
      }
    }
  }
}

Option 2: HTTP Streamable (VS Code Roo, Claude Code, Claude Desktop, etc.):

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

Einfache Einzelverbindungskonfiguration:

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

Multi-Verbindungs-Setup – verbinden Sie denselben Client (oder mehrere Clients) mit demselben Server und verschiedenen Tool-Sets mithilfe von URL-Abfrageparametern:

{
  "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"
  }
}

Jede Verbindung erhält ihre eigene isolierte Sitzung, in der nur die angeforderten Service-Tools aktiviert sind. Sie können eine Sitzungs-ID außerdem mit ?uuid= festlegen, um denselben Sitzungszustand über Wiederverbindungen hinweg fortzusetzen:

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

Siehe URL-basierte Service-Filterung für die vollständige Liste der Abfrageparameter.

🤖 Claude Code & Claude Desktop

Claude Code (CLI) – ein einziger Befehl, mit dem veröffentlichten PyPI-Paket:

# 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 (lokaler Entwicklungspfad) – fügen Sie Folgendes zu claude_desktop_config.json hinzu (Einstellungen → Entwickler → Konfiguration bearbeiten):

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

Claude.ai / Claude Desktop (gehosteter Connector) – führen Sie den Server hinter einem öffentlichen HTTPS-Endpunkt aus (z. B. einem Cloudflare- oder ngrok-Tunnel) und fügen Sie ihn dann unter Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen mit Ihrer https://your-domain/mcp-URL hinzu. Der OAuth-2.1- und PKCE-Ablauf des Servers übernimmt die Authentifizierung, einschließlich der Weiterleitung an https://claude.ai/api/mcp/auth_callback. Siehe die Claude.ai-Integrationsanleitung für die vollständige Schritt-für-Schritt-Anleitung.

📚 Vollständiger Verbindungsleitfaden

Detaillierte Einrichtungsanleitungen, Fehlerbehebung und Konfigurationen für alle unterstützten Clients, einschließlich:

  • Claude Code CLI (HTTP & STDIO)

  • Claude Desktop

  • VS Code / Roo / GitHub Copilot

  • Claude.ai mit Cloudflare-Tunnel

  • Und weitere ...

🔗 Vollständiger Client-Verbindungsleitfaden – Umfassende Einrichtungsanleitungen, Fehlerbehebung und erweiterte Konfigurationen für alle unterstützten KI-Clients und Entwicklungsumgebungen

⚡ Code-Modus (Standard)

Der Code-Modus ist das Flaggschiff-Feature von GoogleUnlimited – und er ist standardmäßig aktiviert. Statt 90+ Tool-Schemas im Voraus zu laden (teuer in Bezug auf Tokens), sieht Ihr MCP-Client nur 7 Meta-Tools. Die KI entdeckt Tools bei Bedarf und verknüpft dann beliebig viele echte API-Aufrufe innerhalb eines einzigen isolierten Python-execute-Blocks.

Meta-Tool

Zweck

tags

Tools nach Servicekategorie durchsuchen (Gmail, Drive, Kalender usw.)

search

BM25-gestützte Schlüsselwortsuche über Tool-Namen und -Beschreibungen

get_schema

Vollständige Parameterschemas für ausgewählte Tools abrufen

semantic_search

Natürlichsprachliche Suche über zuvor gespeicherte Tool-Antworten (Qdrant-gestützt)

fetch_document

Eine vollständige gespeicherte Antwort anhand der Point-ID aus den Suchergebnissen abrufen

tool_activity

Aktuelle Tool-Nutzungsmuster und -Aktivitäten zusammenfassen

execute

Einen isolierten Python-Block ausführen, der echte Tool-Aufrufe über await call_tool(name, params) verknüpft

Warum das wichtig ist:

  • 💰 Massive Token-Ersparnis – 7 Schemas statt 90+, wobei vollständige Schemas nur für die tatsächlich verwendeten Tools abgerufen werden

  • 🔗 Ein Round-Trip statt vieler – Suche → Filtern → Handeln erfolgt in einem einzigen execute-Block, nicht in einer Kette von Client-Round-Trips

  • 🧰 Komplett ausgestattete Sandbox – 40+ eingebaute Helfer (now(), days_ago(), to_json(), re_find(), gather_tools(), …) decken Datumsangaben, JSON, URLs, Regex, Mathematik und Batch-Aufrufe ab, ganz ohne Importe

# 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

Klassischen Katalog bevorzugt? Deaktivieren Sie den Code-Modus, und jedes Tool wird direkt für den Client bereitgestellt:

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

Code-Modus und klassischer Katalog schließen sich gegenseitig aus – wenn der Code-Modus aktiv ist, werden direkte Tool-Aufrufe durch das Such- + execute-Muster ersetzt. Discovery-Tools sehen immer den vollständigen Katalog, unabhängig von der Filterung auf Sitzungsebene.

🎯 Service-Funktionen

GoogleUnlimited unterstützt 10 Google-Workspace-Dienste mit 90+ spezialisierten Tools:

Service

Icon

Tools

Hauptfunktionen

Dokumentation

Gmail

📧

14

Senden, Antworten, Labels, Filter, Suche, Allowlist

api-reference/gmail/

Drive

📁

9

Hochladen, Herunterladen, Freigabe, Office-Dokumente, Dateiverwaltung

api-reference/drive/

Docs

📄

4

Erstellen, Bearbeiten, Formatieren, Batch-Operationen

api-reference/docs/

Sheets

📊

7

Lesen, Schreiben, Formeln, Formatierung

api-reference/sheets/

Slides

🎯

5

Präsentationen, Vorlagen, Export

api-reference/slides/

Calendar

📅

9

Ereignisse, Terminplanung, Teilnehmer, Zeitzonen

api-reference/calendar/

Forms

📝

8

Erstellung, Antworten, Validierung, Veröffentlichung

api-reference/forms/

Chat

💬

24

Messaging, Karten, Spaces, Webhooks, Unified Cards

api-reference/chat/

Photos

📷

12

Alben, Hochladen, Suche, Metadaten, intelligente Suche

api-reference/photos/

People

👤

4

Name→E-Mail-Suche (Kontakte + Organisationsverzeichnis), Kontaktlabels

people/

📚 Ressourcen zur API-Dokumentation:

🧠 Middleware-Architektur

GoogleUnlimited verwendet eine Middleware-Architektur, die eine nahtlose Service-Integration, intelligente Ressourcenverwaltung und leistungsstarke Templating-Funktionen bietet.

Middleware-Architektur

🔧 Kernkomponenten der Middleware

  • 🏷️ TagBasedResourceMiddleware: Intelligente Ressourcenermittlung mithilfe von URI-Mustern (service://gmail/messages, user://current/email)

  • 🧠 QdrantUnifiedMiddleware: KI-gestützte semantische Suche über alle Tool-Antworten mit Vektor-Embeddings

  • 🎨 TemplateMiddleware: Fortschrittliches Jinja2-Templatesystem für eine schöne, strukturierte Ausgabeformatierung

✨ Vorteile der Architektur

  • 🔄 Einheitlicher Ressourcenzugriff: URI-basierter Zugriff auf Servicedaten ohne API-Aufrufe

  • 🧠 Semantische Intelligenz: Suche in natürlicher Sprache über alle gespeicherten Antworten

  • 🎨 Visuelle Exzellenz: Konsistente, schöne Ausgabeformatierung für eine optimale KI-Verarbeitung

  • 💰 Token-Effizienz: Vorlagen-Makros reduzieren den Token-Verbrauch um 60–80 % durch strukturierte Datenausgabe

  • ⚡ Leistung: 30-mal schneller als herkömmliche Ansätze durch intelligentes Caching

📚 Ressourcen zur Middleware-Dokumentation:

🚀 Minimaler Tool-Start

Standardmäßig startet GoogleUnlimited mit nur 5 aktivierten geschützten Tools für optimale Leistung und Sicherheit. Clients können so nur die Tools aktivieren, die sie tatsächlich benötigen.

Geschützte Tools (immer verfügbar):

  • manage_tools – Tools global oder pro Sitzung aktivieren/deaktivieren

  • manage_tools_by_analytics – Analytikbasierte Tool-Verwaltung

  • health_check – Serverzustand und Konfigurationsstatus

  • start_google_auth – OAuth-Authentifizierung starten

  • check_drive_auth – Authentifizierungsstatus überprüfen

Konfiguration:

# 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

Aktivieren von Tools zur Laufzeit:

# 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")

🔧 Sitzungsbezogene Tool-Verwaltung

GoogleUnlimited unterstützt die sitzungsweise Aktivierung/Deaktivierung von Tools, sodass verschiedene MCP-Clients unterschiedliche Tool-Verfügbarkeiten haben können, ohne andere verbundene Clients zu beeinträchtigen.

Hauptfunktionen:

  • Sitzungsisolation: Tools für eine Client-Sitzung deaktivieren, ohne andere zu beeinträchtigen

  • Nicht-invasiv: Sitzungsbezogene Operationen ändern niemals die globale Tool-Registrierung

  • Geschützte Tools: Zentrale Verwaltungstools (manage_tools, health_check usw.) bleiben immer verfügbar

  • Middleware-basiert: Verwendet SessionToolFilteringMiddleware für Filterung auf Protokollebene

Nutzungsbeispiele:

# 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")

Antwortstruktur:

{
  "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"
}

📚 Skills-Anbieter

Wenn dies über ENABLE_SKILLS_PROVIDER=true aktiviert wird, generiert GoogleUnlimited Skill-Dokumente aus ModuleWrapper-Instanzen und stellt sie über FastMCPs SkillsDirectoryProvider bereit. Skills bieten strukturiertes Wissen, auf das LLMs bei komplexen mehrstufigen Aufgaben zurückgreifen können.

Derzeit unterstützte Module:

  • card_frameworkgchat-cards-Skill (Google-Chat-Karten-DSL-Referenz, Komponentenhierarchie, Beispiele)

Konfiguration:

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

Skills werden bei jedem Start automatisch neu generiert und sind über das FastMCP-Skillsystem sofort verfügbar.

🖥️ Tool-Verwaltungs-Dashboard

GoogleUnlimited enthält ein integriertes Tool-Verwaltungs-Dashboard, das über das ui://-Ressourcenschema der MCP-Apps bereitgestellt wird. Es bietet eine visuelle Oberfläche zur Überwachung und Verwaltung der Tool-Verfügbarkeit über Sitzungen hinweg.

Tool-Verwaltungs-Dashboard

Funktionen:

  • Nach Diensten gruppierte Tool-Ansicht – Tools, organisiert nach Google-Dienst (Gmail, Drive, Sheets usw.), mit Zählern

  • Sitzungsstatus auf einen Blick – Erkennen Sie auf einen Blick, welche Tools aktiviert, deaktiviert oder sitzungsbezogen deaktiviert sind

  • Filter-Chips – Schnelles Filtern nach Dienst, um sich auf relevante Tools zu konzentrieren

  • Live-Daten – Unterstützt durch DashboardCacheMiddleware, die List-Tool-Ergebnisse zwischenspeichert, um sofortigen Zugriff auf die Ressource ui://data-dashboard zu ermöglichen

Das Dashboard wird automatisch über wire_dashboard_to_list_tools() mit allen List-Tools verbunden – keine Konfiguration pro Tool erforderlich.

🔗 URL-basierte Service-Filterung (HTTP-Transport)

Wenn Sie den HTTP/SSE-Transport verwenden, können Sie Tools direkt über URL-Abfrageparameter nach Dienst filtern – ganz ohne Code:

# 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

Verfügbare URL-Parameter:

Parameter

Beispiel

Beschreibung

service oder services

?service=gmail,drive

Kommagetrennte Liste der zu aktivierenden Dienste

uuid

?uuid=abc123

Vorherige Sitzung per ID fortsetzen

minimal

?minimal=false

Minimalen Startmodus überschreiben

Verfügbare Dienste: gmail, drive, calendar, docs, sheets, slides, photos, chat, forms, people

📚 Ressourcen zur Sitzungs-Tool-Verwaltung:

🎨 Vorlagensystem

GoogleUnlimited verfügt über leistungsstarke Jinja2-Vorlagenmakros, die rohe Google-Workspace-Daten in optisch ansprechende, KI-optimierte Formate umwandeln.

🎯 Verfügbare Vorlagenmakros

Vorlagendatei

Makro

Zweck

Hauptfunktionen

email_card.j2

render_gmail_labels_chips()

Gmail-Label-Visualisierung

Interaktive Chips, ungelesene Zähler, direkte Gmail-Links

calendar_dashboard.j2

render_calendar_dashboard()

Kalender- & Ereignis-Dashboard

Primäre/freigegebene Kalender, anstehende Ereignisse, dunkles Theme

dynamic_macro.j2

render_calendar_events_dashboard()

Kalenderereignis-Dashboard

Ereigniskarten, Zeit-/Ortsdetails, klickbare Links, dunkles Theme

document_templates.j2

generate_report_doc()

Professionelle Berichte

Metriken, Tabellen, Diagramme, Unternehmensbranding

colorfuL_email.j2

render_beautiful_email3()

Rich-HTML-E-Mails

Mehrere Signaturen, Verläufe, responsives Design

💡 Beispiele für Vorlagenmakros

Gmail-Label-Visualisierung - Listen von Labels in wunderschöne interaktive Chips verwandeln:

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

Kalender-Dashboard - Umfassende Kalenderübersichten erstellen:

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

Kalenderereignis-Dashboard - Kalenderereignisse in wunderschöne, interaktive Ereigniskarten verwandeln:

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

Beispiel für das Kalenderereignis-Dashboard

Dieses Makro erstellt ein beeindruckendes dunkel gestaltetes Dashboard mit folgenden Funktionen:

  • 📅 Interaktive Ereigniskarten: Jedes Ereignis wird als klickbare Karte dargestellt, die sich in Google Kalender öffnet

  • 🕐 Intelligente Zeitanzeige: Formatiert automatisch ganztägige Ereignisse vs. terminierte Ereignisse mit Zeitzonenunterstützung

  • 📍 Standortintegration: Zeigt Besprechungsorte und Links zu virtuellen Besprechungen an

  • 👥 Teilnehmerinformationen: Zeigt Teilnehmerzahlen und Details zu Teilnehmenden an

  • Statusindikatoren: Farbcodierter Status (bestätigt, vorläufig, abgesagt) mit visuellem Feedback

  • 📱 Responsives Design: Für Mobilgeräte optimiertes Layout mit touch-freundlichen Interaktionen

  • 🎨 Dunkles Theme-Styling: Professionelles Erscheinungsbild mit Verlaufs-Hintergründen und Hover-Effekten

Professionelle Dokumente - Berichte mit Metriken und Diagrammen generieren:

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

🔍 Makro-Erkennung & dynamische Erstellung

Alle verfügbaren Makros über das Vorlagenressourcen-System erkunden:

# 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")

🎯 Dynamische Makro-Erstellung

Zur Laufzeit benutzerdefinierte Makros mit dem Tool create_template_macro erstellen:

# 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-gestützte Makros — dynamische Makros können auch die Google-Chat-Karten-DSL-Notation einbetten, um umfangreiche, strukturierte Karten zu generieren. Die DSL-Symbole definieren das Kartenlayout, während Jinja2 die dynamischen Inhalte übernimmt:

{# 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 %}

Die DSL-Zeile §[δ×3, ℊ[ǵ×4], §[δ×2, Ƀ[ᵬ×3]]] definiert die Kartenstruktur: ein Abschnitt mit 3 DecoratedText-Widgets, ein Grid mit 4 Elementen und ein verschachtelter Abschnitt mit 2 DecoratedText-Widgets und einer ButtonList mit 3 Schaltflächen. Die Jinja2-Vorlage füllt die Inhalte dynamisch aus – und da sie in templates/dynamic/ gespeichert wird, ist sie sofort für send_dynamic_card und andere Tools verfügbar.

Hauptfunktionen:

  • Sofortige Verfügbarkeit: Makros sind direkt nach der Erstellung verfügbar

  • 🎯 Ressourcenintegration: Automatisch über template://macros/macro_name verfügbar

  • 💾 Optionale Speicherung: Makros zur dauerhaften Verfügbarkeit auf der Festplatte speichern

  • 🔄 Vorlagenverarbeitung: Vollständige Jinja2-Syntaxvalidierung und Fehlerbehandlung

  • 💬 DSL-Integration: Makros können Karten-DSL-Notation für umfangreiche Google-Chat-Karten ausgeben

🚀 Praxisnahe Verwendung

Vorlagen können direkt in Tool-Aufrufen verwendet werden, um eine schöne, strukturierte Ausgabe zu erzielen:

# 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' ) }}"
)

📚 Ressourcen zum Vorlagensystem:

🗂️ Ressourcen-Erkennung

GoogleUnlimited bietet ein leistungsstarkes MCP-Ressourcensystem, das blitzschnellen Datenzugriff ohne API-Aufrufe durch intelligente URI-Muster ermöglicht.

Ressourcen-Erkennung

🎯 Ressourcen-URI-Muster

Muster

Zweck

Beispiel

Rückgabe

user://profile/{email}

Benutzer-Authentifizierungsstatus

user://profile/john@gmail.com

Profil + Auth-Status

service://{service}/lists

Verfügbare Dienstlisten

service://gmail/lists

[Filter, Labels]

service://{service}/{list_type}

Alle Elemente in der Liste

service://gmail/labels

Alle Gmail-Labels

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

Details zu bestimmten Elementen

service://gmail/labels/INBOX

INBOX-Label-Details

recent://{service}

Aktuelle Elemente

recent://drive

Aktuelle Drive-Dateien

qdrant://search/{query}

Semantische Suche

qdrant://search/gmail errors

Relevante Antworten

🏗️ Zentrale Ressourcendateien

⚡ Blitzschneller Zugriff

# 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")

📚 Dokumentation zum Ressourcensystem:

🧪 Test-Framework

GoogleUnlimited enthält umfassende Tests mit Client-Tests, die die MCP-Nutzung exakt so validieren, wie ein LLM sie erleben würde, sowie zusätzliche Test-Suiten. 559 Tests bestehen mit einer Erfolgsquote von 100 %.

🎯 Fokus der Client-Tests

Test-Framework

Die Client-Tests sind die wichtigste Komponente – sie bieten deterministische Tests von MCP-Operationen mit echter Ressourcenintegration und standardisierten Mustern über alle 92+ Tools und 9 Google-Dienste. Diese Tests validieren sowohl die explizite E-Mail-Authentifizierung als auch die Middleware-Injektionsmuster.

🚀 Schnelle Testbefehle

# 🧪 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

🔬 Integration echter Ressourcen-IDs

Das Test-Framework ruft echte IDs aus Dienstressourcen für realistische Tests ab:

# 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-Pipeline

Automatisierte Tests und Veröffentlichung über GitHub Actions:

  • CI-Workflow: Wird bei jedem PR und Push auf main ausgeführt

    • Python 3.11- und 3.12-Matrix-Tests

    • Linting mit ruff check und Formatierung mit ruff format

    • Ausführung der vollständigen Test-Suite

  • TestPyPI-Veröffentlichung: Automatisierte Paketveröffentlichung für Tests

📚 Testressourcen:

🔒 Sicherheit & Authentifizierung

GoogleUnlimited implementiert Sicherheit auf Unternehmensniveau mit OAuth 2.1 + PKCE, erweiterter Sitzungsverwaltung und umfassenden Prüffunktionen.

Sicherheitsarchitektur

🛡️ Authentifizierungsabläufe

  1. 🌐 MCP-Inspector-OAuth: MCP-Spezifikationskonform mit dynamischer Client-Registrierung

  2. 🖥️ Direkter Server-OAuth: Webbasierte Authentifizierung für den direkten Zugriff

  3. 🔧 Entwicklungs-JWT: Testmodus mit generierten Tokens

  4. 📁 Erweiterte Datei-Anmeldedaten: Dauerhafte Speicherung mit Verschlüsselungsoptionen

  5. 🔑 Benutzerdefinierte OAuth-Clients: Eigene OAuth-Anmeldedaten verwenden mit automatischem Fallback

  6. 🪪 Pro-Benutzer-API-Schlüssel: Einzelne Schlüssel, die beim Abschluss der OAuth-Authentifizierung generiert werden, mit Isolierung der Anmeldedaten

✨ Sicherheitsfunktionen

  • 🔐 OAuth 2.1 + PKCE: Moderne Authentifizierung mit Schlüsselnachweis-Austausch (unterstützt öffentliche Clients)

  • 🔑 Pro-Benutzer-API-Schlüssel: Eindeutige, widerrufbare Schlüssel pro Benutzer mit Nur-Hash-Speicherung und timing-sicherer Suche

  • 🛡️ Isolierung der Anmeldedaten: Zugriffskontrolle basierend auf der Authentifizierungsherkunft verhindert die Vererbung von Anmeldedaten zwischen Benutzern

  • 🔗 Kontoverknüpfung: Bidirektionale Kontoverknüpfung für den Mehrkonten-Zugriff mit Pro-Benutzer-Schlüsseln

  • 🔒 Krypto-gebundene Verschlüsselung: Abgeleitete HKDF-SHA256-Verschlüsselungsschlüssel, die an MCP_API_KEY gebunden sind

  • 🔒 Sitzungsisolierung: Multi-Tenant-Unterstützung zur Verhinderung von Datenlecks

  • 🏷️ 27+ API-Umfänge: Granulare Berechtigungsverwaltung über alle Dienste hinweg

  • 📊 Prüfprotokollierung: Vollständige Sicherheitsereignisverfolgung mit Authentifizierungsherkunft

  • 🔐 AES-256-Verschlüsselung: Speicherung von Anmeldedaten mit Unterstützung für die Migration von Legacy-Schlüsseln

  • 🔄 Drei-Ebenen-Fallback: Robuste Persistenz der Anmeldedaten über Server-Neustarts hinweg (State Map → UnifiedSession → Context Storage)

  • 🧹 Entfernung sensibler Daten: Auth-Metadaten werden aus Qdrant-Embeddings vor der Speicherung entfernt

⚙️ Sicherheitskonfiguration

# 🔒 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

📚 Ressourcen zur Sicherheitsdokumentation:


🚀 Bereit, Ihre Google-Workspace-Integration zu revolutionieren?

📚 Dokumentation🔧 Konfiguration🎯 API-Referenz🧪 Tests

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