Skip to main content
Glama
dipseth

google-workspace-unlimited

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLogging level (DEBUG, INFO, WARNING, ERROR)INFO
QDRANT_KEYNoQdrant API key (use NONE for no auth)NONE
QDRANT_URLNoQdrant vector database URLhttp://localhost:6333
SERVER_HOSTNoServer bind addresslocalhost
SERVER_PORTNoServer port8002
ENABLE_HTTPSNoEnable HTTPS/SSLfalse
SSL_KEY_FILENoPath to SSL private key (Required if ENABLE_HTTPS is true)
FASTMCP_CLOUDNoEnable cloud deployment modefalse
MCP_TRANSPORTNoCommunication protocol (stdio or http). Glama's mcp-proxy expects stdio.stdio
MINIMAL_TOOLSNoSkip 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_FILENoPath to SSL certificate (Required if ENABLE_HTTPS is true)
SAMPLING_TOOLSNoEnable sampling middleware tools (validation agents). Requires VENICE_INFERENCE_KEY, LITELLM_API_KEY, or ANTHROPIC_API_KEY.false
CREDENTIALS_DIRNoDirectory for stored credentials./credentials
ENABLE_CODE_MODENoEnable Code Mode (sandboxed Python tool-call chaining via the `execute` meta-tool)false
GMAIL_ALLOW_LISTNoComma-separated allowed email addresses
GOOGLE_CLIENT_IDNoOAuth 2.0 client ID from Google Cloud Console
OAUTH_REDIRECT_URINoMust match Google Console exactlyhttp://localhost:8002/oauth2callback
QDRANT_AUTO_LAUNCHNoAutomatically 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_KEYNoSecret key for session management
ATTACHMENT_TEMP_DIRNoTemp directory for outbound attachment downloads (Gmail signed-URL serving)/tmp/gw-mcp-attachments
ENABLE_AUDIT_LOGGINGNoEnable security event tracking
GOOGLE_CLIENT_SECRETNoOAuth 2.0 client secret from Google Cloud Console
DRIVE_UPLOAD_TEMP_DIRNoTemp directory for staged client→server uploads (only used when DRIVE_UPLOAD_CLIENT_FS=true)/tmp/gw-mcp-drive-uploads
DRIVE_UPLOAD_CLIENT_FSNoTreat 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_MODENoCredential storage mode (FILE_ENCRYPTED, FILE_PLAINTEXT, MEMORY_ONLY)FILE_ENCRYPTED
SESSION_TIMEOUT_MINUTESNoSession idle timeout in minutes60
DRIVE_UPLOAD_MAX_SIZE_MBNoMaximum size in MB for staged client→server uploads (only used when DRIVE_UPLOAD_CLIENT_FS=true)100
DRIVE_UPLOAD_TTL_SECONDSNoTTL in seconds for staged client→server upload URLs (one-time-use)900
GOOGLE_CLIENT_SECRETS_FILENoAlternative: path to OAuth JSON file

Capabilities

Features and capabilities supported by this server

CapabilityDetails
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

NameDescription
start_google_authA

Initiate Google OAuth2 authentication flow for Google services with automatic browser opening (Drive, Gmail, Docs, Sheets, Slides, Calendar, etc.)

check_drive_authA

Verify Google Drive authentication status for a specific user account

upload_to_driveA

Upload a file to Google Drive. By default path is the server's local filesystem (single call, supports folders). On remote deployments where the client and server are on different machines, set DRIVE_UPLOAD_CLIENT_FS=true: path is then the client's filesystem — the first call returns a pendingUpload payload with a signed PUT URL; the client uploads bytes to that URL, then re-calls this tool with the same path to finalize the Drive upload. Folder uploads are only supported in server-FS mode.

health_checkC

Check server health and configuration

manage_credentialsC

Manage credential storage and security settings

manage_toolsA

List, enable, or disable FastMCP tools at runtime. Supports both global scope (affects all clients) and session scope (affects only current session). Use service_filter to target all tools for a service (e.g., 'gmail', 'chat', 'drive') without needing to know individual tool names.

set_privacy_modeA

Toggle per-session PII privacy mode. When enabled, tool responses have sensitive values (emails, names, phone numbers) replaced with [PRIVATE:token_N] tokens. Requires authenticated session (OAuth or per-user API key).

verify_paymentA

Verify a blockchain payment to unlock tool access (x402 protocol)

search_drive_filesA

Search Google Drive files with easy file type filtering. Use mime_type parameter for simple filtering (PDF, GOOGLE_DOCS, EXCEL, etc.) or query parameter for advanced Google Drive Query Language searches.

get_drive_file_contentC

Retrieve the content of a Google Drive file by ID, supporting multiple formats

list_drive_itemsB

List files and folders in a specific Google Drive folder with structured output

create_drive_fileB

Create a new file in Google Drive from content or URL

share_drive_filesB

Share Google Drive files with specific people via email addresses

make_drive_files_publicA

Make Google Drive files publicly accessible (anyone with the link can view)

manage_drive_filesA

Unified tool for Google Drive file management: move, copy, rename, or delete files

search_gmail_messagesA

Search messages in Gmail account using Gmail query syntax with message and thread IDs

get_gmail_message_contentA

Retrieve the full content (subject, sender, body) of a specific Gmail message

get_gmail_messages_content_batchA

Retrieve content of multiple Gmail messages in a single batch request (up to 100 messages)

get_gmail_thread_contentB

Retrieve the complete content of a Gmail conversation thread with all messages

download_gmail_attachmentA

Download a specific attachment from a Gmail message. By default returns a temporary signed download URL (15 min, one-time use). Set return_url=false to save to disk, or return_content=true for base64. First use get_gmail_message_content to list attachments.

send_gmail_messageB

Send an email using the user's Gmail account with elicitation support for untrusted recipients

draft_gmail_messageA

Create a draft email in the user's Gmail account with HTML support and multiple recipients

reply_to_gmail_messageB

Send a reply to a specific Gmail message with proper threading and HTML support

draft_gmail_replyA

Create a draft reply to a specific Gmail message with proper threading and HTML support

forward_gmail_messageB

Forward a Gmail message to specified recipients with HTML formatting preservation and elicitation support

draft_gmail_forwardB

Create a draft forward of a Gmail message with HTML formatting preservation

compose_dynamic_emailA

Compose responsive HTML emails using DSL notation for block structure. Common patterns: ε[ħ, τ] = hero + text, ε[ħ, τx2, Ƀ] = hero + 2 text blocks + button. DSL structure using symbols. Symbols: ε=EmailSpec, ħ=HeroBlock, τ=TextBlock, Ƀ=ButtonBlock, ɨ=ImageBlock, ¢=ColumnsBlock, ©=Column, Ħ=HeaderBlock, ƒ=FooterBlock, ą=AccordionBlock, ȼ=CarouselBlock. Read skill://mjml-email/ for full reference.

list_gmail_labelsA

List all labels in the user's Gmail account with structured output (system and user-created)

manage_gmail_labelA

Manage Gmail labels: create, update, or delete labels. Supports single or multiple label operations using lists or JSON strings.

modify_gmail_message_labelsB

Add or remove labels from a Gmail message

list_gmail_filtersA

List all Gmail filters/rules in the user's account

create_gmail_filterA

Create a new Gmail filter/rule with criteria and actions, with optional retroactive application to existing emails. Supports background execution for large mailboxes.

get_gmail_filterA

Get details of a specific Gmail filter by ID

delete_gmail_filterB

Delete a Gmail filter by ID

manage_gmail_allow_listA

Manage the workspace trust list stored in GMAIL_ALLOW_LIST and related People contact labels. Supports 'add', 'remove', 'view' for the Gmail/Chat trust list and 'label_add', 'label_remove' for People contact labels. Trust entries can be single emails, lists, or comma-separated strings; group specs ('group:', 'groupId:') are resolved via the People API. Trusted recipients/targets skip elicitation confirmation for Gmail sending operations today and (in future) selected Chat operations.

search_docsC

Search for Google Docs by name using Drive API

get_doc_contentC

Get content of a Google Doc or Drive file (like .docx)

list_docs_in_folderC

List Google Docs within a specific Drive folder

create_docB

Create a new Google Doc or edit an existing one with support for multiple content formats and advanced editing modes. Supports replace_all, insert_at_line, regex_replace, and append modes via edit_config parameter. Accepts plain text, Markdown, HTML, RTF, DOCX, LaTeX formats with automatic detection. Returns structured response with document metadata.

create_formA

Create a new Google Form with customizable title, description, and document title. Returns form ID and URLs for editing and responses.

add_questions_to_formA

Add multiple interactive questions to an existing Google Form. Supports all question types including text, multiple choice, scales, dates, and file uploads with comprehensive formatting options.

get_formA

Retrieve comprehensive details of a Google Form including metadata, all questions with their types and settings, and access URLs. Perfect for form inspection and analysis.

set_form_publish_stateB

Control whether a Google Form is accepting responses. Configures basic form settings and provides guidance for full response control via the Forms UI.

publish_form_publiclyB

Make a Google Form publicly accessible without sign-in requirements and share with specific users. Uses both Forms and Drive APIs for comprehensive permission management.

get_form_responseA

Retrieve a specific response from a Google Form with detailed answer mappings to questions. Perfect for analyzing individual submissions in detail.

list_form_responsesA

Retrieve all responses from a Google Form with efficient pagination support and structured answer mapping. Returns comprehensive response data ready for analysis.

update_form_questionsA

Modify existing questions in a Google Form including titles, descriptions, required status, and other settings. Uses efficient batch operations for multiple updates.

create_presentationA

Create a new Google Slides presentation

get_presentation_infoB

Get details about a Google Slides presentation including title, slides count, and metadata

add_slideA

Add a new slide to an existing Google Slides presentation

update_slide_contentA

Update content on a specific slide using batch update operations

export_and_download_presentationA

Export a Google Slides presentation to various formats with optional local download

list_calendarsA

Retrieves a list of calendars accessible to the authenticated user

create_calendarB

Creates a new Google Calendar with specified properties

list_eventsA

Retrieves a list of events from a specified Google Calendar within a given time range. By default, looks for events in the next 10 days starting from the current time.

create_eventA

Create single or multiple events in Google Calendar. TIMEZONE: Always pass the timezone parameter or include UTC offsets in start_time/end_time (e.g., '2025-03-03T15:00:00-05:00') to avoid times being interpreted incorrectly. Supports both individual event creation (backward compatible) and bulk event creation for efficient batch operations.

modify_eventA

Modifies an existing event in Google Calendar. TIMEZONE: Always pass the timezone parameter or include UTC offsets in start_time/end_time to avoid time offset issues. Uses PATCH semantics — only specified fields are changed, unspecified fields (including recurrence rules) are preserved.

delete_eventA

Deletes one or more events from Google Calendar. Supports single event ID, comma-separated IDs, JSON array strings, or native list format for batch deletion.

bulk_calendar_operationsA

Perform bulk operations on calendar events with filters (date range, title pattern, etc.)

move_events_between_calendarsA

Move events from one calendar to another with optional filters

get_eventA

Retrieves the details of a single event by its ID from a specified Google Calendar

list_spacesA

Lists Google Chat spaces (rooms and direct messages) accessible to the user

list_messagesB

Lists messages from a Google Chat space

send_messageA

Sends a message to a Google Chat space with full markdown formatting support

search_messagesA

Searches for messages in Google Chat spaces by text content

manage_spaceC

Unified tool for Google Chat space administration: manage members, create/update/delete spaces

send_dynamic_cardA

Send cards to Google Chat using DSL notation for precise structure control. REQUIRED: Use DSL symbols in card_description to define card structure. Common patterns: §[δ] = text card, §[δ, Ƀ[ᵬ×2]] = text + 2 buttons, §[ℊ[ǵ×4]] = grid with 4 items. DSL structure using symbols. Examples: '§[δ, Ƀ[ᵬ×2]]' = Section + text + 2 buttons, 'C_5[C_6×3]' = Carousel with 3 cards. §=Section, δ=DecoratedText, Ƀ=ButtonList, ᵬ=Button, ℊ=Grid, ǵ=GridItem, C_5=Carousel, C_6=CarouselCard, ŋ=NestedWidget. Read skill://gchat-cards/ for full reference.

list_spreadsheetsA

List spreadsheets from Google Drive that the user has access to

get_spreadsheet_infoA

Get information about a specific spreadsheet including its sheets

read_sheet_valuesB

Read values from a specific range in a Google Sheet

modify_sheet_valuesA

Modify values in a specific range of a Google Sheet - can write, update, or clear values

create_spreadsheetA

Create a new Google Spreadsheet

create_sheetA

Create a new sheet within an existing spreadsheet

format_sheet_rangeA

Apply comprehensive formatting to a range in Google Sheets with multiple formatting options in a single request - unified formatting tool that replaces format_sheet_cells, update_sheet_borders, add_conditional_formatting, and merge_cells

list_photos_albumsA

List photo albums from Google Photos that the user has access to

search_photosC

Search for photos in Google Photos using filters

list_album_photosB

List all photos from a specific album

get_photo_detailsA

Get detailed information about a specific photo

create_photos_albumB

Create a new album in Google Photos

get_photos_library_infoB

Get information about the user's Google Photos library

photos_smart_searchC

Advanced photo search with smart filtering and optimization

photos_batch_detailsA

Get detailed information for multiple photos in a single optimized request

photos_performance_statsB

Get performance statistics and cache information for Photos API usage

photos_optimized_album_syncC

Efficiently sync and analyze album contents with smart caching

upload_photosC

Upload one or more photos to Google Photos with batch optimization

upload_folder_photosA

Upload all photos from a folder (with optional recursion) to Google Photos

list_people_contact_labelsA

List Google People contact groups / labels for the authenticated user, returning resourceName, name, member counts, and groupType.

get_people_contact_group_membersA

Resolve a contact group/label name to its member email addresses. Similar to Gmail's autocomplete - type a label name and get all emails in that group. Useful for batch operations: resolve label → get emails → perform actions on those emails.

manage_people_contact_labelsA

Manage Google People contact labels (contact groups) for one or more emails. Supports 'label_add' to ensure contacts exist and attach them to a label, and 'label_remove' to detach matching contacts from a label.

create_template_macroB

Create and register a new Jinja2 template macro dynamically

qdrant_searchA

Search through Qdrant vector database using natural language queries, filters, point IDs, or DSL filter notation. Supports semantic search, service-specific filtering, analytics queries, recommendation-style example search, direct point lookup, and advanced DSL queries. When filter_dsl is provided, routes to the DSL executor for precise filter-based search. Returns structured search results with relevance scores and metadata.

Parameterized DSL Grammar: symbol{param1=value1, param2=value2}

Values can be:

  • Strings: "hello"

  • Numbers: 42, 3.14

  • Booleans: true, false

  • Null: null

  • Nested symbols: symbol{...}

  • Lists: [item1, item2, ...]

Key filter symbols (used in 'dsl' param): D_5 = DatetimeRange ʄ = FieldCondition ƒ = Filter F_6 = FilterSelector ℏ = HasIdCondition I_2 = IsEmptyCondition I_0 = IsNullCondition ɱ = MatchAny ṁ = MatchText M_0 = MatchTextAny ☆ = MatchValue ř = Range

Advanced query symbols (used in 'query_dsl'/'prefetch_dsl' params): (Types without Unicode symbols use full class names as identifiers) Å = 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

Examples: ƒ{must=[ʄ{key="tool_name", match=☆{value="search"}}]} (filter by tool_name), ƒ{must=[ʄ{key="tool_name", match=ɱ{any=["send_dynamic_card", "send_gmail_message"]}}]} (match any of multiple values).

fetchA

Retrieve complete document content from Qdrant by point ID. Supports single document fetch or batch fetch with optional client-side ordering by payload key.

search_tool_historyA

Advanced search through historical tool responses with support for: ID lookup (id:xxxxx), filtered search (user_email:test@gmail.com), combined filters with semantic search (user_email:test@gmail.com documents for gardening), and natural language queries

get_tool_analyticsA

Get comprehensive analytics on tool usage, performance metrics, and patterns. By default returns a concise summary with sample point IDs for fetching specific results - set summary_only=false for detailed data.

get_response_detailsA

Retrieve full details and metadata of a specific stored tool response by its unique ID. LEGACY TOOL - Use 'fetch' tool instead for better formatting and structured output.

cleanup_qdrant_dataA

Manually trigger cleanup of stale data older than the configured retention period. This removes old tool responses and maintains database performance. The retention period is controlled by the MCP_TOOL_RESPONSES_COLLECTION_CACHE_DAYS environment variable (default: 14 days).

Prompts

Interactive templates invoked by user choice

NameDescription
quick_email_demoSimple: Zero-config Gmail demo with Jinja2 templates and resource integration
structured_tool_showcaseShowcase a specific tool with structured response example (random if tool not specified)
structured_response_comparisonCompare multiple tools showing original vs structured response formats
structured_interactive_demoInteractive challenge featuring a random tool with structured responses
structured_response_benefitsComprehensive overview of structured response system benefits and implementation

Resources

Contextual data attached and managed by the client

NameDescription
manage_tools_dashboardRead-only dashboard showing tool enable/disable state
latest_data_dashboardDashboard for the most recently called list tool
Current User EmailSlim '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 IdentityLightweight 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 ProfileCanonical 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 SessionDetailed information about the current authentication session including token status, expiration times, and granted scopes
Active Authentication SessionsAdministrative view of all active authentication sessions with session details, user information, and expiration status for multi-user session management
Recent Gmail Messages CacheCached 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 DirectoryComprehensive 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 CollectionCurated list of detailed tools that use automatic resource templating - no user_google_email parameters required, seamless authentication through OAuth session context
Gmail Allow ListGet the configured Gmail allow list for send_gmail_message tool - recipients on this list skip elicitation confirmation
All Recent Workspace ItemsGet recent items from all Google Workspace services (Drive, Docs, Sheets, Slides, Forms, Photos) in a unified view.
Available Template MacrosGet 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 TemplateSimple template resource that returns just the user email string - the most basic resource for tools that need only the email address
Qdrant Collections ListList all available Qdrant collections with detailed information including point counts, vector statistics, and status
Qdrant Tool Response CacheGet cached tool responses from Qdrant organized by tool name with point metadata including IDs, timestamps, and user emails
Qdrant Middleware StatusCheck the status of Qdrant middleware integration including client availability, initialization state, and resource handler status

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