gworkspace-mcp
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
Перейдите на console.cloud.google.com и создайте проект.
Включите указанные выше API в разделе APIs & Services → Library.
Перейдите в APIs & Services → OAuth consent screen, настройте его как External и добавьте свой аккаунт Google в качестве тестового пользователя.
Перейдите в APIs & Services → Credentials → Create Credentials → OAuth client ID, выберите Desktop app и скачайте JSON-файл.
Сделайте учетные данные доступными для сервера одним из следующих способов:
Поместите 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,calendarscript.projects,script.deployments,script.processes,script.metricsgmail.send,gmail.composeuserinfo.email,userinfo.profile
Примечания по безопасности
Ваши файлы
client_secret.jsonиtoken.jsonявляются личными — никогда не добавляйте их в репозиторий. Файл.gitignoreв репозитории уже исключает их.Токены хранятся в
~/.secrets/gworkspace-mcp/.Сервер работает локально; он не открывает никаких сетевых портов.
Лицензия
MIT — см. LICENSE.
Available Tools
31 toolsdrive_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.
drive_searchB
Search Drive files. Uses Drive query syntax. Examples: "name contains 'report'", "mimeType='application/vnd.google-apps.spreadsheet'".
Inputs: query (required), page_size. 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
Scored across 31 tools
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.
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.
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.
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
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
One MCP server for the services your AI needs: memory, files, Microsoft 365, kanban and more.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with Google Sheets through natural language, allowing users to create, read, update, and manage spreadsheet data via the Google Sheets API v4.-
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server integrating Google Docs, Sheets, Drive, Gmail, Calendar, and Apps Script APIs, featuring unique Apps Script support for AI-driven automation.10 npm8MIT
- AlicenseAqualityBmaintenanceMCP server integrating multiple Google Workspace services including Gmail, Calendar, Drive, Sheets, Docs, Tasks, People, Forms, and Slides, enabling users to manage emails, events, files, documents, and more through natural language.15MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Google Sheets operations, enabling spreadsheet management including reading, writing, appending, creating, and searching sheets via natural language.MIT