Skip to main content
Glama
dipseth

google-workspace-unlimited

🚀 GoogleUnlimited Google Workspace 平台

docs pypi license privacy terms

google_workspace_fastmcp2 MCP server

GoogleUnlimited 是一个全面的 MCP 框架,通过先进的中介架构提供无缝的 Google Workspace 集成。它使 AI 助手和 MCP 客户端能够使用统一、安全的 API 与 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 通过模型上下文协议(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 客户端。代码模式 开箱即用,因此你的客户端看到的是 7 个精简的元工具,而不是 90+ 个模式。

方法 1b:Claude Code 插件(服务器 + 技能)

Claude Code 用户可以通过两条命令安装服务器 以及 教 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 文件。只有在通过 start_google_auth 发起新的认证流程时才需要 OAuth 凭据。

Google OAuth(首次认证时需要):

变量

默认值

描述

GOOGLE_CLIENT_ID

(空)

来自 Google Cloud Console 的 OAuth 2.0 客户端 ID

GOOGLE_CLIENT_SECRET

(空)

OAuth 2.0 客户端密钥

GOOGLE_CLIENT_SECRETS_FILE

(空)

替代方案:下载的 OAuth JSON 文件路径

OAUTH_REDIRECT_URI

http://localhost:8002/oauth2callback

必须与 Google Console 重定向 URI 匹配

在首次 OAuth 流程之前,提供 GOOGLE_CLIENT_ID + GOOGLE_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

DEBUGINFOWARNINGERROR

安全与会话:

变量

默认值

描述

CREDENTIAL_STORAGE_MODE

FILE_ENCRYPTED

FILE_ENCRYPTEDFILE_PLAINTEXTMEMORY_ONLY

CREDENTIALS_DIR

./credentials

存储凭据的目录

MCP_API_KEY

(空)

服务器 API 密钥 — 也用于加密绑定的凭据加密(HKDF-SHA256)和每用户密钥生成

SESSION_TIMEOUT_MINUTES

60

会话空闲超时

GMAIL_ALLOW_LIST

(空)

逗号分隔的可信电子邮件地址

工具管理:

变量

默认值

描述

MINIMAL_TOOLS_STARTUP

true

仅启用 5 个受保护工具启动

MINIMAL_STARTUP_SERVICES

(空)

启动时启用的逗号分隔服务(例如 drive,gmail

ENABLE_CODE_MODE

true

代码模式(默认)— 用 7 个元工具 + 沙箱化 execute 替换完整工具目录;设为 false 以使用经典目录

ENABLE_SKILLS_PROVIDER

false

启用 FastMCP SkillsDirectoryProvider 以进行动态技能生成

SKILLS_DIRECTORY

~/.claude/skills

生成的技能文档目录

RESPONSE_LIMIT_MAX_SIZE

500000

最大工具响应大小(字节)(0 = 禁用)

RESPONSE_LIMIT_TOOLS

(空)

要限制的逗号分隔工具名称(空 = 全部)

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

(空)

Google Chat 卡片工具的默认 webhook URL

FASTMCP_CLOUD

false

启用云部署模式(自动切换到 MEMORY_WITH_BACKUP 存储)

🔗 客户端连接

GoogleUnlimited 支持多种连接方法。以下是两种最流行的入门方式:

🎯 快速设置选项

选项 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 包:

# 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 的旗舰功能——而且默认开启。MCP 客户端无需预先加载 90 多个工具架构(这会消耗大量 token),只需看到 7 个元工具。AI 按需发现工具,然后在单个沙箱化的 Python execute 块内链式调用任意数量的真实 API。

Meta-Tool

用途

tags

按服务类别浏览工具(Gmail、Drive、Calendar 等)

search

基于 BM25 的关键词搜索,覆盖工具名称和描述

get_schema

获取所选工具的完整参数架构

semantic_search

对先前存储的工具响应进行自然语言搜索(基于 Qdrant)

fetch_document

通过搜索结果中的点 ID 检索完整的已存储响应

tool_activity

总结最近的工具使用模式和活动

execute

运行一个沙箱化的 Python 块,通过 await call_tool(name, params) 链式调用真实工具

为什么重要:

  • 💰 大幅节省 token —— 只需 7 个架构,而不是 90 多个;仅在实际使用的工具上获取完整架构

  • 🔗 一次往返替代多次往返 —— 搜索 → 过滤 → 执行在单个 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 支持 10 个 Google Workspace 服务,提供 90 多个专用工具

服务

图标

工具数

关键特性

文档

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

消息、卡片、空间、Webhook、统一卡片

api-reference/chat/

Photos

📷

12

相册、上传、搜索、元数据、智能搜索

api-reference/photos/

People

👤

4

姓名→邮箱搜索(联系人 + 组织目录)、联系人标签

people/

📚 API 文档资源:

🧠 中间件架构

GoogleUnlimited 采用中间件架构,可提供无缝的服务集成、智能资源管理和强大的模板功能。

中间件架构

🔧 核心中间件组件

  • 🏷️ TagBasedResourceMiddleware:使用 URI 模式(service://gmail/messagesuser://current/email)进行智能资源发现

  • 🧠 QdrantUnifiedMiddleware:利用向量嵌入对所有工具响应进行 AI 驱动的语义搜索

  • 🎨 TemplateMiddleware:高级 Jinja2 模板系统,用于美观、结构化的输出格式化

✨ 架构优势

  • 🔄 统一资源访问:无需 API 调用,基于 URI 访问服务数据

  • 🧠 语义智能:跨所有已存储响应进行自然语言搜索

  • 🎨 视觉卓越:一致、美观的输出格式化,优化 AI 消费体验

  • 💰 Token 效率:模板宏通过结构化数据渲染将 token 用量降低 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 客户端拥有不同的工具可用性,而不会影响其他连接的客户端。

主要特性:

  • 会话隔离:为一个客户端会话禁用工具,而不影响其他会话

  • 非侵入式:会话级操作永远不会修改全局工具注册表

  • 受保护工具:核心管理工具(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:// 资源方案提供。这为跨会话监控和管理工具可用性提供了可视化界面。

工具管理仪表板

特性:

  • 按服务分组的工具视图 —— 工具按 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 参数:

参数

示例

描述

serviceservices

?service=gmail,drive

要启用的服务列表,以逗号分隔

uuid

?uuid=abc123

按 ID 恢复之前的会话

minimal

?minimal=false

覆盖最小启动模式

可用服务: gmail, drive, calendar, docs, sheets, slides, photos, chat, forms, people

📚 会话工具管理资源:

🎨 模板系统

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 小部件的 Section、一个包含 4 个项目的 Grid,以及一个嵌套的 Section,其中包含 2 个 DecoratedText 小部件和一个包含 3 个按钮的 ButtonList。Jinja2 模板动态填充内容——由于它持久化到 templates/dynamic/,因此可立即供 send_dynamic_card 和其他工具使用。

主要特性:

  • 即时可用:宏创建后立即可用

  • 🎯 资源集成:可通过 template://macros/macro_name 自动获取

  • 💾 可选持久化:将宏保存到磁盘以实现永久可用

  • 🔄 模板处理:完整的 Jinja2 语法验证和错误处理

  • 💬 DSL 集成:宏可以输出卡片 DSL 表示法,用于生成丰富的 Google Chat 卡片

🚀 实际应用

模板可直接在工具调用中使用,以生成美观、结构化的输出:

# 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 的完全相同方式验证 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 进行 lint 检查,使用 ruff format 进行格式化

    • 执行完整测试套件

  • TestPyPI 发布:自动化包发布以进行测试

📚 测试资源:

🔒 安全与身份验证

GoogleUnlimited 通过 OAuth 2.1 + PKCE、高级会话管理和全面的审计功能实现 企业级安全

Security Architecture

🛡️ 身份验证流程

  1. 🌐 MCP Inspector OAuth:符合 MCP 规范,支持动态客户端注册

  2. 🖥️ Direct Server OAuth:基于 Web 的身份验证,用于直接访问

  3. 🔧 Development JWT:测试模式,使用生成的令牌

  4. 📁 Enhanced File Credentials:持久化存储,支持加密选项

  5. 🔑 Custom OAuth Clients:自带 OAuth 凭据,支持自动回退

  6. 🪪 Per-User API Keys:OAuth 完成后生成独立密钥,实现凭据隔离

✨ 安全特性

  • 🔐 OAuth 2.1 + PKCE:带密钥证明交换的现代身份验证(支持公共客户端)

  • 🔑 每用户 API 密钥:每个用户拥有唯一、可撤销的密钥,仅存储哈希值并支持定时安全查找

  • 🛡️ 凭据隔离:基于身份验证来源的访问控制,防止跨用户凭据继承

  • 🔗 账户关联:双向账户关联,支持多账户每用户密钥访问

  • 🔒 加密绑定加密:使用 HKDF-SHA256 派生的加密密钥,绑定到 MCP_API_KEY

  • 🔒 会话隔离:多租户支持,防止数据泄露

  • 🏷️ 27+ 个 API 范围:跨所有服务的细粒度权限管理

  • 📊 审计日志:完整的安全事件跟踪,带有身份验证来源

  • 🔐 AES-256 加密:凭据存储,支持旧密钥迁移

  • 🔄 三层回退:服务器重启后可靠的凭据持久化(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