Skip to main content
Glama

gworkspace-mcp

Сервер Model Context Protocol для автоматизации Google Workspace: Google Sheets, Apps Script, Drive, Docs, Gmail и триггеров. Создан с использованием FastMCP.

Разработан для использования в Claude Code (или любом другом MCP-совместимом клиенте), чтобы вы могли редактировать проекты Apps Script, манипулировать электронными таблицами, отправлять электронные письма и управлять файлами на Диске прямо во время беседы.

Функции

  • Apps Script (9 инструментов) — список, чтение, обновление, создание, развертывание и запуск проектов Apps Script. Гранулярное редактирование файлов, чтобы вам не приходилось переписывать скрипты целиком.

  • Sheets (10 инструментов) — чтение/запись диапазонов, пакетные обновления, форматирование, защита, формулы, дашборды.

  • Drive (4 инструмента) — список, поиск, перемещение и управление файлами.

  • Docs (1 инструмент) — чтение/редактирование Google Docs.

  • Gmail (3 инструмента) — создание и отправка электронных писем.

  • Triggers (3 инструмента) — управление временными и событийными триггерами Apps Script.

  • Connect (1 инструмент) — привязка локального проекта Apps Script к электронной таблице.

Related MCP server: Google Workspace MCP Server

Требования

  • Python 3.10+

  • Проект в Google Cloud со следующими включенными API:

    • Google Sheets API

    • Google Drive API

    • Apps Script API

    • Google Docs API

    • Gmail API

    • Google Calendar API

  • Учетные данные OAuth 2.0 для настольных приложений (client_secret.json)

Установка

git clone https://github.com/LeooNic/gworkspace-mcp.git
cd gworkspace-mcp
pip install -e .

Или с помощью uv:

uv pip install -e .

Настройка Google Cloud

  1. Перейдите на console.cloud.google.com и создайте проект.

  2. Включите указанные выше API в разделе APIs & Services → Library.

  3. Перейдите в APIs & Services → OAuth consent screen, настройте его как External и добавьте свой аккаунт Google в качестве тестового пользователя.

  4. Перейдите в APIs & Services → Credentials → Create Credentials → OAuth client ID, выберите Desktop app и скачайте JSON-файл.

  5. Сделайте учетные данные доступными для сервера одним из следующих способов:

    • Поместите JSON-файл по пути ~/.secrets/gworkspace-mcp/client_secret.json, или

    • Установите GOOGLE_CLIENT_SECRET_PATH=/full/path/to/client_secret.json, или

    • Установите GOOGLE_OAUTH_CLIENT_ID и GOOGLE_OAUTH_CLIENT_SECRET в качестве переменных окружения.

При первом запуске инструмента откроется окно браузера для подтверждения OAuth. Полученный токен сохраняется в ~/.secrets/gworkspace-mcp/token.json и обновляется автоматически.

Регистрация в Claude Code

Добавьте это в ваш settings.json для Claude Code (или ~/.claude.json):

{
  "mcpServers": {
    "gworkspace": {
      "command": "gworkspace-mcp"
    }
  }
}

Если gworkspace-mcp отсутствует в вашем PATH, используйте абсолютный путь к исполняемому файлу, созданному командой pip install -e . (в Windows это обычно C:\Users\<you>\AppData\Local\Programs\Python\Python3XX\Scripts\gworkspace-mcp.exe).

Альтернативный вызов без установки точки входа:

{
  "mcpServers": {
    "gworkspace": {
      "command": "python",
      "args": ["-m", "gworkspace_mcp.server"]
    }
  }
}

Области действия OAuth (Scopes)

Сервер запрашивает следующие области действия:

  • spreadsheets, drive, documents, calendar

  • script.projects, script.deployments, script.processes, script.metrics

  • gmail.send, gmail.compose

  • userinfo.email, userinfo.profile

Примечания по безопасности

  • Ваши файлы client_secret.json и token.json являются личными — никогда не добавляйте их в репозиторий. Файл .gitignore в репозитории уже исключает их.

  • Токены хранятся в ~/.secrets/gworkspace-mcp/.

  • Сервер работает локально; он не открывает никаких сетевых портов.

Лицензия

MIT — см. LICENSE.

Available Tools

31 tools
drive_copyB

Copy a Drive file (spreadsheet, doc, etc). Returns the new file ID and URL.

Inputs: source (required), new_name (required), folder_id. Returns: Generic wrapper for non-object return types.

drive_create_spreadsheetB

Create a new Google Spreadsheet. Returns ID and URL.

Inputs: name (required), folder_id. Returns: Generic wrapper for non-object return types.

drive_moveC

Move a file to a different folder.

Inputs: file_url (required), dest_folder_id (required). Returns: Generic wrapper for non-object return types.

generate_docsB

Generate functional documentation for a spreadsheet project. Analyzes the spreadsheet structure, script functions, triggers, and manifest to produce a complete technical document.

Args: spreadsheet_url: Spreadsheet URL or ID script_url: Optional Apps Script URL or ID output: "sheet" writes a Documentacion tab in the spreadsheet, "text" returns the doc as text

Inputs: spreadsheet_url (required), script_url, output. Returns: Generic wrapper for non-object return types.

script_add_functionC

Add a new function to an existing file. Appends at the end.

Inputs: script_id (required), file_name (required), source (required). Returns: Generic wrapper for non-object return types.

script_create_fileC

Create a new .gs file in the script project.

Inputs: script_id (required), file_name (required), source. Returns: Generic wrapper for non-object return types.

script_delete_functionB

Delete a function from the script project.

Inputs: script_id (required), function_name (required). Returns: Generic wrapper for non-object return types.

script_edit_functionB

Replace a specific function's source code. Only that function is modified.

Inputs: script_id (required), function_name (required), new_source (required). Returns: Generic wrapper for non-object return types.

script_get_fileC

Get the full source code of a file in the script project.

Inputs: script_id (required), file_name (required). Returns: Generic wrapper for non-object return types.

script_get_functionB

Get the source code of a specific function by name.

Inputs: script_id (required), function_name (required). Returns: Generic wrapper for non-object return types.

script_list_functionsB

List all functions in a script project with their file, signature, and line numbers.

Inputs: script_id (required). Returns: Generic wrapper for non-object return types.

script_runB

Execute a function in a deployed script. Requires API Executable deployment.

Inputs: script_id (required), function_name (required), parameters. Returns: Generic wrapper for non-object return types.

script_update_fileB

Replace the entire content of a file in the script project.

Inputs: script_id (required), file_name (required), source (required). Returns: Generic wrapper for non-object return types.

send_emailB

Send an email via Gmail. Set html=True for HTML body. cc/bcc are comma-separated email addresses.

Inputs: to (required), subject (required), body (required), html, +2 more. Returns: Generic wrapper for non-object return types.

send_email_previewA

Preview an email without sending it. Returns the formatted message.

Inputs: to (required), subject (required), body (required), html. Returns: Generic wrapper for non-object return types.

send_html_emailC

Send an HTML email with optional plain-text fallback.

Inputs: to (required), subject (required), html_body (required), plain_fallback, +1 more. Returns: Generic wrapper for non-object return types.

sheets_add_tableB

Create a Google Sheets Table (the structured table feature, Ctrl+Alt+T). Converts a data range into a formal table with headers, banding, and filtering.

Inputs: spreadsheet (required), sheet_name (required), range_a1 (required), name. Returns: Generic wrapper for non-object return types.

sheets_add_validationC

Add data validation. validation_type: DROPDOWN, CHECKBOX, NUMBER, DATE. For DROPDOWN, pass values as list of options.

Inputs: spreadsheet (required), sheet_name (required), range_a1 (required), validation_type (required), +1 more. Returns: Generic wrapper for non-object return types.

sheets_appendC

Append rows to the end of a sheet.

Inputs: spreadsheet (required), range (required), values (required). Returns: Generic wrapper for non-object return types.

sheets_conditional_formatC

Add conditional formatting. rule_type: NUMBER_GREATER, NUMBER_LESS, NUMBER_EQ, TEXT_CONTAINS, TEXT_NOT_CONTAINS, CUSTOM_FORMULA. For CUSTOM_FORMULA, condition_value is the formula (e.g., '=A1>8').

Inputs: spreadsheet (required), sheet_name (required), range_a1 (required), rule_type (required), +2 more. Returns: Generic wrapper for non-object return types.

sheets_copy_sheetC

Copy a sheet from one spreadsheet to another.

Inputs: source_spreadsheet (required), sheet_name (required), dest_spreadsheet (required). Returns: Generic wrapper for non-object return types.

sheets_describeB

Get full structure of a spreadsheet: sheets, named ranges, protected ranges.

Inputs: spreadsheet (required). Returns: Generic wrapper for non-object return types.

sheets_formatC

Format a range. Colors as hex (#RRGGBB). h_align: LEFT/CENTER/RIGHT.

Inputs: spreadsheet (required), sheet_name (required), range_a1 (required), bold, +6 more. Returns: Generic wrapper for non-object return types.

sheets_protectC

Protect a sheet or range. If range_a1 is None, protects the entire sheet.

Inputs: spreadsheet (required), sheet_name (required), range_a1, description, +1 more. Returns: Generic wrapper for non-object return types.

sheets_readC

Read values from a sheet. Pass spreadsheet URL or ID.

Inputs: spreadsheet (required), range (required), render. Returns: Generic wrapper for non-object return types.

sheets_writeC

Write values to a sheet range. values is a 2D array.

Inputs: spreadsheet (required), range (required), values (required). Returns: Generic wrapper for non-object return types.

trigger_create_time_drivenB

Create a time-driven trigger via Apps Script execution. Generates and runs trigger setup code in the script.

Options:

  • every_minutes: 1, 5, 10, 15, 30

  • every_hours: 1, 2, 4, 6, 8, 12

  • day_of_week + hour: weekly trigger (MONDAY-SUNDAY, hour 0-23)

  • hour only: daily trigger at that hour

Inputs: script_id (required), function_name (required), every_minutes, every_hours, +2 more. Returns: Generic wrapper for non-object return types.

trigger_deleteA

Delete a trigger by ID. Use trigger_list to find IDs.

Inputs: script_id (required), trigger_id (required). Returns: Generic wrapper for non-object return types.

trigger_listB

List all triggers for a script project.

Inputs: script_id (required). Returns: Generic wrapper for non-object return types.

workspace_connectA

Connect to a Google Spreadsheet and discover everything about it.

Args: spreadsheet_url: Spreadsheet URL or ID script_url: Optional. The Apps Script URL or ID (from Extensions > Apps Script). Container-bound scripts don't appear in Drive API (Google limitation), so pass the script URL for full discovery. If omitted, only sheet structure is returned.

Returns: sheet structure, and if script_url is provided: all files with functions, triggers, and deployments.

Inputs: spreadsheet_url (required), script_url. Returns: Generic wrapper for non-object return types.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 31 tools

    Disambiguation4/5

    Most tools have distinct purposes, but some overlap exists. For example, send_email and send_html_email could be confused, and drive_copy/drive_move have similar file manipulation functions. However, clear descriptions help differentiate them.

    Naming Consistency5/5

    Tool names follow a consistent snake_case pattern with clear verb_noun conventions. Drive tools use drive_ prefix, script tools use script_ prefix, sheets tools use sheets_ prefix, and email/trigger/workspace tools follow similar patterns. No mixing of conventions.

    Tool Count2/5

    31 tools is excessive for a single MCP server. While the domain (Google Workspace automation) is broad, this feels like multiple servers combined. A more focused scope with 15-20 tools would be more manageable for agents.

    Completeness5/5

    The tool surface provides comprehensive coverage for Google Workspace automation. It includes full CRUD operations for Drive files, Sheets manipulation, Apps Script development, email sending, and trigger management. The workspace_connect tool provides excellent discovery capabilities.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers