Vopak Workspace MCP

Vopak Workspace MCP

Enables AI agents to control Google Workspace services (Slides, Docs, Sheets, Drive) with granular tools and provides a universal CLI escape hatch for all Workspace APIs.

Category
访问服务器

README

Vopak MCP

Python Docker Tools Tests License

<p align="center"> <img src="docs/assets/hero.png" alt="Vopak MCP — Google Workspace + GCP MCP Servers" width="800"/> </p>

<p align="center"> <strong>42 MCP tools across 3 servers — Google Workspace + GCP in a single Docker container.</strong><br/> Slides, Docs, Sheets, Drive, Cloud Run, IAM, Storage, Logging, BigQuery, and more. </p>


What Is This?

Vopak MCP is a collection of custom Model Context Protocol servers that give AI coding agents full, safe access to Google Workspace and Google Cloud Platform. It runs as a single Docker container and exposes 3 independent MCP servers:

Server Tools Auth Purpose
workspace-tools 36 ADC Granular Slides, Docs, Sheets, Drive, and branded content tools
workspace-cli 3 OAuth GWS CLI wrappers for Gmail, Calendar, Tasks, Forms, People
gcp-cli 3 ADC GCP CLI wrappers for Cloud Run, IAM, Storage, Logging, BigQuery, and more

You choose what to install. Each server is independently configurable. Install all 3 for full coverage, or just the ones you need.


Architecture

graph TB
    subgraph Agent["AI Agent (Antigravity / Gemini)"]
        direction LR
        A1["workspace-tools<br/><small>36 tools</small>"]
        A2["workspace-cli<br/><small>3 tools</small>"]
        A3["gcp-cli<br/><small>3 tools</small>"]
    end

    subgraph Docker["Docker Container: vopak-mcp"]
        direction TB
        S1["workspace_tools.py<br/><small>Slides, Docs, Sheets, Drive, Branded</small>"]
        S2["workspace_cli.py<br/><small>gws_read / gws_write / gws_destructive</small>"]
        S3["gcp_cli_server.py<br/><small>gcp_read / gcp_write / gcp_destructive</small>"]
    end

    subgraph APIs["Google APIs"]
        direction LR
        WS["Workspace APIs<br/><small>Slides, Docs, Sheets, Drive</small>"]
        CLI["GWS CLI<br/><small>Gmail, Calendar, Tasks, Forms</small>"]
        GCP["GCP CLI<br/><small>gcloud, bq, gsutil</small>"]
    end

    A1 -->|stdio| S1
    A2 -->|stdio| S2
    A3 -->|stdio| S3

    S1 -->|OAuth/ADC| WS
    S2 -->|OAuth| CLI
    S3 -->|ADC| GCP

    style Docker fill:#0a2373,stroke:#00cfe1,color:#fff
    style Agent fill:#1a1a2e,stroke:#283ce1,color:#fff
    style APIs fill:#16213e,stroke:#00cfe1,color:#fff

Quick Start

1. Clone and Build

git clone https://github.com/patriciosantamaria/vopak-mcp.git
cd vopak-mcp
docker compose up -d --build

2. Authenticate

# Google Workspace CLI (OAuth — for workspace-cli server)
docker exec -it vopak-mcp gws auth setup

# GCP (Application Default Credentials — for workspace-tools and gcp-cli)
docker exec -it vopak-mcp gcloud auth application-default login

3. Verify

docker exec -it vopak-mcp python -m src.servers.workspace_tools   # Should print server info
docker exec -it vopak-mcp python -m src.servers.workspace_cli     # Should print server info
docker exec -it vopak-mcp python -m src.servers.gcp_cli_server    # Should print server info

4. Configure Your IDE

Copy the MCP config into your Antigravity (or other MCP client) configuration:

{
  "mcpServers": {
    "workspace-tools": {
      "command": "docker",
      "args": ["exec", "-i", "vopak-mcp", "python", "-m", "src.servers.workspace_tools"],
      "timeout": 30
    },
    "workspace-cli": {
      "command": "docker",
      "args": ["exec", "-i", "vopak-mcp", "python", "-m", "src.servers.workspace_cli"],
      "timeout": 30
    },
    "gcp-cli": {
      "command": "docker",
      "args": ["exec", "-i", "vopak-mcp", "python", "-m", "src.servers.gcp_cli_server"],
      "timeout": 60
    }
  }
}

See mcp_config.example.json for the full reference.


Setup Options

Not every project needs all 42 tools. Choose the setup that fits your use case:

Setup Servers Tools Best For
Full workspace-tools + workspace-cli + gcp-cli 42 Full-stack projects using Workspace + GCP
Workspace Only workspace-tools + workspace-cli 39 Projects that only use Google Workspace
Workspace Granular workspace-tools only 36 Slides/Docs/Sheets/Drive automation (no Gmail/Calendar)
GCP Only gcp-cli only 3 Infrastructure management, Cloud Run, BigQuery
CLI Only workspace-cli + gcp-cli 6 Universal CLI access to both Workspace and GCP

Complete Tool Catalog

Server 1: workspace-tools (36 tools)

Granular, purpose-built tools for Google Slides, Docs, Sheets, Drive, and branded content creation.

Slides Tools (19)

# Tool Type Description
1 slides_get_presentation Read Presentation metadata: slide count, IDs, titles, page dimensions
2 slides_get_slide_content Read All elements from a slide with text, positions, placeholder types
3 slides_get_speaker_notes Read Speaker notes from one or all slides with element IDs
4 slides_get_element_styles Read Per-run font, bold, italic, color, links for all text elements
5 slides_get_comments Read All comments with authors, replies, resolution status
6 slides_search_text Read Full-text search across all slides with context snippets
7 slides_measure_text_bounds Read Estimate text overflow using font-metric heuristics
8 slides_audit_deck Read Batch audit: titles, text, overflow, thumbnails in one call
9 slides_get_thumbnail Read PNG thumbnail URL for visual QA verification
10 slides_update_text Write Replace text in a specific element
11 slides_format_text Write Apply formatting (bold, font, color) to text ranges
12 slides_update_and_format_text Write Replace text and apply formatting in one atomic call
13 slides_duplicate_slide Write Clone a slide at a specified position
14 slides_reorder_slides Write Move slides to new positions
15 slides_update_speaker_notes Write Replace speaker notes on a single slide
16 slides_bulk_update_speaker_notes Write Update speaker notes on multiple slides in one call
17 slides_batch_update Write Raw Slides API batch update (escape hatch)
18 slides_delete_slide Destructive Permanently delete a slide
19 slides_remove_speaker_notes Destructive Clear speaker notes from a slide

Docs Tools (8)

# Tool Type Description
20 docs_get_structure Read Document structure: headings, sections, element tree
21 docs_read_text Read Extract plain text from a document
22 docs_search_text Read Search for text patterns across the document
23 docs_insert_text Write Insert text at a specific position
24 docs_update_style Write Apply formatting to text ranges
25 docs_append_section Write Append a new section with heading and body
26 docs_find_and_replace Write Find and replace text across the document
27 docs_delete_text Destructive Delete text at a specific range

Sheets Tools (4)

# Tool Type Description
28 sheets_read_range Read Read cell values from a specified range
29 sheets_get_structure Read Sheet names, row/column counts, named ranges
30 sheets_write_from_file Write Bulk write data from JSON to a sheet range
31 sheets_verify_range Write Atomic write + readback verification (cell-by-cell)

Drive Tools (2)

# Tool Type Description
32 drive_list_files Read List files with structured filters (folder, MIME type, name)
33 drive_manage_file Write Create, move, rename, copy, trash, or share Drive files

Branded Content Tools (3)

# Tool Type Description
34 create_vopak_presentation Write Generate pixel-perfect Vopak-branded Google Slides
35 create_vopak_document Write Generate branded Google Docs from Markdown
36 docker_health_check Read Environment, credentials, and dependency verification

Server 2: workspace-cli (3 tools)

Universal CLI wrappers for the Google Workspace CLI. Covers Gmail, Calendar, Tasks, Forms, People — anything the granular tools above don't cover.

# Tool Type Description
37 gws_read Read Read-only GWS CLI commands: list, get, query, export
38 gws_write Write Write GWS CLI commands: create, update, send. Requires reason
39 gws_destructive Destructive Delete GWS CLI commands: delete, trash. Requires reason + HITL

How verb-gating works: The server extracts the verb from each command and blocks misrouted operations at the server level. If you try to run a delete command via gws_read, the server rejects it before execution.

When to use: Use workspace-cli for Google Workspace services not covered by the granular workspace-tools server (e.g., Gmail, Calendar, Tasks, Forms). If you install only the CLI, consider loading the GWS CLI Reference Skill for command syntax guidance.


Server 3: gcp-cli (3 tools)

Universal CLI wrappers for gcloud, bq, and gsutil. Covers Cloud Run, IAM, Secret Manager, Cloud Storage, Cloud Logging, BigQuery, Pub/Sub, Firestore, Compute, and more.

# Tool Type Description
40 gcp_read Read Read-only GCP commands: list, describe, get, show, ls, cat
41 gcp_write Write Write GCP commands: create, deploy, update, enable, cp. Requires reason
42 gcp_destructive Destructive Delete GCP commands: delete, rm, destroy. Requires reason + HITL

Security features:

  • Verb-gating: Server-side verb classification blocks misrouted operations
  • Shell injection blocking: Commands are sanitized to block |, &&, ;, backticks, $(), redirects
  • JSON enforcement: --format=json is auto-appended for structured output
  • Audit trail: Write and destructive tools require a reason parameter (min 10 chars)

Reference skill: Load skills/gcp_cli_reference/SKILL.md for exact command syntax across 12 GCP services.


Skills

The project includes reference skills that teach agents how to use the CLI tools effectively:

Skill File Purpose
GCP CLI Reference skills/gcp_cli_reference/SKILL.md Command syntax for 12 GCP services: Cloud Run, IAM, Secrets, Storage, Logging, BigQuery, Pub/Sub, Firestore, Compute, APIs, Projects

Security Model

Verb-Gated CLI Tools

Both CLI servers (workspace-cli and gcp-cli) enforce a 3-tier safety model:

READ  ───── Safe. No confirmation needed.
WRITE ───── Requires reason (audit trail). IDE may prompt.
DESTRUCTIVE ─ Requires reason + explicit human confirmation (HITL).

The agent cannot bypass this — verb classification happens server-side before the command reaches the CLI.

Shell Injection Protection (gcp-cli)

All GCP CLI commands are sanitized before execution. The following patterns are blocked:

Pattern Example Status
Pipe list | grep Blocked
Command chaining list && rm Blocked
Semicolons list; rm Blocked
Backticks `whoami` Blocked
Subshell $(command) Blocked
Redirects > /etc/passwd Blocked

Scoped Authentication

Server Auth Method Scopes
workspace-tools Application Default Credentials Per-tool minimum OAuth scopes
workspace-cli GWS CLI OAuth Full Workspace access via CLI
gcp-cli Application Default Credentials Full GCP access via CLI

Development

Prerequisites

  • Python 3.11+
  • Docker and Docker Compose

Install for Development

pip install -e ".[dev]"

Run Tests

pytest -v

Lint

ruff check src/ tests/

Project Structure

vopak-mcp/
  src/
    servers/
      workspace_tools.py     # Server 1: 36 granular Workspace tools
      workspace_cli.py       # Server 2: 3 GWS CLI wrappers
      gcp_cli_server.py      # Server 3: 3 GCP CLI wrappers
    tools/
      slides.py              # 19 Slides tools
      docs.py                # 8 Docs tools
      sheets.py              # 4 Sheets tools
      drive.py               # 2 Drive tools
      branded.py             # 3 Branded content tools
      cli_wrapper.py         # 3 GWS CLI wrapper tools
      gcp_cli.py             # 3 GCP CLI wrapper tools
    shared/
      common.py              # AgentResult, safe_execute, auth, API factories
      gws_helpers.py         # GWS verb sets, extraction, query builders
      gws_runner.py          # GWS CLI async subprocess runner
      gcp_helpers.py         # GCP verb sets, extraction, sanitization
      gcp_runner.py          # GCP CLI async subprocess runner
  skills/
    gcp_cli_reference/       # GCP CLI command syntax reference
  tests/
    test_gcp_helpers.py      # GCP helpers unit tests
    test_gcp_cli.py          # GCP CLI tool verb-gating tests
  docs/
    assets/
      hero.png               # Hero graphic
  docker-compose.yml         # Single-container deployment
  Dockerfile                 # Python + gcloud + gws CLI
  pyproject.toml             # Project metadata and dependencies
  mcp_config.example.json    # IDE configuration reference

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选