google-workspace-unlimited
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | INFO |
| QDRANT_KEY | No | Qdrant API key (use NONE for no auth) | NONE |
| QDRANT_URL | No | Qdrant vector database URL | http://localhost:6333 |
| SERVER_HOST | No | Server bind address | localhost |
| SERVER_PORT | No | Server port | 8002 |
| ENABLE_HTTPS | No | Enable HTTPS/SSL | false |
| SSL_KEY_FILE | No | Path to SSL private key (Required if ENABLE_HTTPS is true) | |
| FASTMCP_CLOUD | No | Enable cloud deployment mode | false |
| MCP_TRANSPORT | No | Communication protocol (stdio or http). Glama's mcp-proxy expects stdio. | stdio |
| MINIMAL_TOOLS | No | Skip heavy module-wrapper indexing at startup (818-component email types, card_framework widgets). Set to 'true' for fast cold-start in environments with strict startup timeouts (Glama sandbox, CI smoke tests). | false |
| SSL_CERT_FILE | No | Path to SSL certificate (Required if ENABLE_HTTPS is true) | |
| SAMPLING_TOOLS | No | Enable sampling middleware tools (validation agents). Requires VENICE_INFERENCE_KEY, LITELLM_API_KEY, or ANTHROPIC_API_KEY. | false |
| CREDENTIALS_DIR | No | Directory for stored credentials | ./credentials |
| ENABLE_CODE_MODE | No | Enable Code Mode (sandboxed Python tool-call chaining via the `execute` meta-tool) | false |
| GMAIL_ALLOW_LIST | No | Comma-separated allowed email addresses | |
| GOOGLE_CLIENT_ID | No | OAuth 2.0 client ID from Google Cloud Console | |
| OAUTH_REDIRECT_URI | No | Must match Google Console exactly | http://localhost:8002/oauth2callback |
| QDRANT_AUTO_LAUNCH | No | Automatically launch Qdrant via Docker if not reachable. Set to 'false' in single-container environments where Docker-in-Docker isn't available (Glama sandbox). | true |
| SESSION_SECRET_KEY | No | Secret key for session management | |
| ATTACHMENT_TEMP_DIR | No | Temp directory for outbound attachment downloads (Gmail signed-URL serving) | /tmp/gw-mcp-attachments |
| ENABLE_AUDIT_LOGGING | No | Enable security event tracking | |
| GOOGLE_CLIENT_SECRET | No | OAuth 2.0 client secret from Google Cloud Console | |
| DRIVE_UPLOAD_TEMP_DIR | No | Temp directory for staged client→server uploads (only used when DRIVE_UPLOAD_CLIENT_FS=true) | /tmp/gw-mcp-drive-uploads |
| DRIVE_UPLOAD_CLIENT_FS | No | Treat upload_to_drive 'path' as the client's filesystem and orchestrate client→server→Drive transport via signed PUT URL. Set to 'true' on remote/hosted deployments where client and server are on different machines. | false |
| CREDENTIAL_STORAGE_MODE | No | Credential storage mode (FILE_ENCRYPTED, FILE_PLAINTEXT, MEMORY_ONLY) | FILE_ENCRYPTED |
| SESSION_TIMEOUT_MINUTES | No | Session idle timeout in minutes | 60 |
| DRIVE_UPLOAD_MAX_SIZE_MB | No | Maximum size in MB for staged client→server uploads (only used when DRIVE_UPLOAD_CLIENT_FS=true) | 100 |
| DRIVE_UPLOAD_TTL_SECONDS | No | TTL in seconds for staged client→server upload URLs (one-time-use) | 900 |
| GOOGLE_CLIENT_SECRETS_FILE | No | Alternative: path to OAuth JSON file |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tagsA | List this server's tool tags (service areas like gmail, drive, docs, photos) with tool counts. Use when: browsing what capability areas exist before a targeted lookup. For keyword lookup use search; for parameters of known tools use get_schema. Returns: '- tag (N tools)' lines at detail='brief' (default), or every tool listed under each tag at detail='full'. |
| searchA | Find this server's Google Workspace tools by keyword (BM25 over names, descriptions, and tags). Use when: you don't know the exact tool name yet. To browse by category use tags; once you have names, use get_schema for parameters, then execute to call them. To search past results rather than tools, use semantic_search. Returns: matching tools as names + descriptions ('brief', default), parameter markdown ('detailed'), or complete JSON definitions ('full'). An empty result means no keyword match — retry with different terms. |
| get_schemaA | Get parameter schemas for named tools before calling them via execute. Use when: you already have tool names (from search or tags) and need exact parameters. Not for discovery — use search for that. Returns: per-tool parameter markdown ('detailed', default), names + descriptions ('brief'), or full JSON schemas ('full'); unknown names are reported under 'Tools not found'. |
| semantic_searchA | Search the Qdrant vector store of this server's past tool responses and card templates. Use when: looking up previous results, usage history, or analytics ('service:gmail last week', 'tool:search recent', 'overview'). For discovering tools to call, use search; to preview one stored document, pass its point ID to fetch_document. Modes: semantic text similarity; service/tool history queries; analytics ('overview', 'usage stats'); filter_dsl for structured filters; positive/negative point IDs for recommendation; query_dsl for fusion/discover/order-by; prefetch_dsl for multi-stage retrieval. Behavior: read-only against the local Qdrant instance; no Google APIs are called. Returns: scored rows 'score service/tool timestamp id:'. Errors: 'Search failed' when Qdrant is unreachable; 'No results' when nothing clears score_threshold (default 0.3 — lower it to widen the net). DSL filter symbols: D_5=DatetimeRange, ʄ=FieldCondition, ƒ=Filter, F_6=FilterSelector, ℏ=HasIdCondition, I_2=IsEmptyCondition, I_0=IsNullCondition, ɱ=MatchAny, ṁ=MatchText, M_0=MatchTextAny, ☆=MatchValue, ř=Range Query-DSL symbols: Å=AcornSearchParams, C_14=ContextExamplePair, ¢=ContextPair, C_0=ContextQuery, D_6=DiscoverInput, D_2=DiscoverQuery, D_4=DiscoverRequest, D_21=DiscoverRequestBatch, ℱ=Fusion, φ=FusionQuery, ø=OrderBy, ɵ=OrderByQuery, ¶=Prefetch, ʔ=QuantizationSearchParams, R_12=RecommendGroupsRequest, R_2=RecommendInput, R_4=RecommendQuery, R_5=RecommendRequest, R_18=RecommendRequestBatch, R_10=RecommendStrategy, ♦=SearchParams Example: ƒ{must=[ʄ{key="tool_name", match=☆{value="send_dynamic_card"}}]} MatchAny: ƒ{must=[ʄ{key="tool_name", match=ɱ{any=["tool_a", "tool_b"]}}]} |
| fetch_documentA | Preview one stored tool response by its Qdrant point ID. Use when: inspecting a hit returned by semantic_search. To find
point IDs in the first place, use semantic_search; for the full
untruncated content, call the Behavior: read-only. Returns: tool name, service, timestamp, user, argument count, and the first 500 characters of stored content. Errors: 'Document not found' for unknown or expired point IDs. |
| tool_activityA | Show usage analytics for this server's tools: call counts, error rates, last-used times. Use when: answering 'what has been used or failing lately'. To read an individual response, pass a sample point ID to fetch_document; to discover tools to call, use search instead. Behavior: read-only aggregation over the Qdrant response store. Returns: a text dashboard grouped by tool_name or user_email, with sample point IDs per group. Errors: 'Analytics failed' when the response store is unreachable. |
| executeA | Run sandboxed Python that calls this server's Google Workspace tools via SANDBOX RESTRICTIONS — these produce SandboxError, avoid them:
Built-in helpers (
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| quick_email_demo | Simple: Zero-config Gmail demo with Jinja2 templates and resource integration |
| structured_tool_showcase | Showcase a specific tool with structured response example (random if tool not specified) |
| structured_response_comparison | Compare multiple tools showing original vs structured response formats |
| structured_interactive_demo | Interactive challenge featuring a random tool with structured responses |
| structured_response_benefits | Comprehensive overview of structured response system benefits and implementation |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| manage_tools_dashboard | Read-only dashboard showing tool enable/disable state |
| code_mode_prefab_renderer | Prefab renderer used to draw app cards returned via execute |
| latest_data_dashboard | Dashboard for the most recently called list tool |
| Current User Email | Slim 'most recent authenticated email for this session' — returns email + session_id + authenticated flag. For the full profile (credentials, scopes, etc.) use user://current/profile. |
| Current User Identity | Lightweight active-account identity: email, session, and auth provenance. Optimized for client subscriptions — AuthMiddleware fires notifications/resources/updated for this URI when the active Google account changes between tool calls. For credential details use user://current/profile. |
| Current User Profile | Canonical current-user resource. Superset of user://current/email + user://current/identity + prior profile: email, session_id, authenticated, auth_provenance, identity_source, linked_accounts, and nested auth_status (credential validity, scopes, expiry). Subscription target. |
| Current Authentication Session | Detailed information about the current authentication session including token status, expiration times, and granted scopes |
| Active Authentication Sessions | Administrative view of all active authentication sessions with session details, user information, and expiration status for multi-user session management |
| Recent Gmail Messages Cache | Cached list of recent Gmail messages from the last 7 days with sender information, subjects, snippets, and thread IDs - refreshed every 5 minutes for efficient email monitoring |
| Complete Tools Directory | Comprehensive catalog of all available tools organized by category including Drive, Gmail, Calendar, Chat, Forms, Docs, Sheets, and authentication tools with detailed capability descriptions |
| Detailed Tools Collection | Curated list of detailed tools that use automatic resource templating - no user_google_email parameters required, seamless authentication through OAuth session context |
| Gmail Allow List | Get the configured Gmail allow list for send_gmail_message tool - recipients on this list skip elicitation confirmation |
| All Recent Workspace Items | Get recent items from all Google Workspace services (Drive, Docs, Sheets, Slides, Forms, Photos) in a unified view. |
| Available Template Macros | Get all available Jinja2 macros with usage examples. The EnhancedTemplateMiddleware scans middleware/templates/*.j2 files and extracts: - Macro definitions using {% macro name(...) %} - Usage examples from {# MACRO USAGE EXAMPLE: ... #} comments - Template file paths and descriptions Returns comprehensive macro information including: - Macro names and parameters - Template file locations - Ready-to-use usage examples - Discovery timestamps This enables easy discovery and correct usage of available template macros. Example response: { "macros": { "render_gmail_labels_chips": { "name": "render_gmail_labels_chips", "template_file": "email_card.j2", "usage_example": "{{ render_gmail_labels_chips(service://gmail/labels, 'Label summary') }}" } }, "total_count": 5 } This resource is handled by EnhancedTemplateMiddleware. |
| User Email Template | Simple template resource that returns just the user email string - the most basic resource for tools that need only the email address |
| Qdrant Collections List | List all available Qdrant collections with detailed information including point counts, vector statistics, and status |
| Qdrant Tool Response Cache | Get cached tool responses from Qdrant organized by tool name with point metadata including IDs, timestamps, and user emails |
| Qdrant Middleware Status | Check the status of Qdrant middleware integration including client availability, initialization state, and resource handler status |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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