conorbronsdon/gws-mcp-server

conorbronsdon/gws-mcp-server

от conorbronsdon
MCP сервер для безопасной интеграции Google Workspace с AI агентами. 41 тщательно отобранный инструмент для Gmail, Calendar, Drive, Sheets, Docs и Tasks — без раздувания контекста. Требуется gws CLI. Идеально для автоматизации офисных задач.

gws-mcp-server

Google Workspace for AI agents: Gmail, Calendar, Drive, Sheets, Docs, and Tasks as a curated set of 41 Model Context Protocol tools, built on the official Google Workspace CLI (gws).

npm version License: MIT Node Podcast X

Demo: an agent calls the calendar_events_list tool and gets events back (sample data)

Why?

The gws CLI had a built-in MCP server that was removed in v0.8.0 because it exposed 200-400 tools — causing context window bloat in MCP clients. This server takes a curated approach: you choose which Google services to expose, and only a focused set of high-value, narrowly scoped operations are registered as tools. Every tool declares MCP readOnlyHint/destructiveHint annotations so clients can reason about side effects and surface clearer consent prompts.

Prerequisites

  • Node.js 18+
  • gws CLI installed and authenticated (npm install -g @googleworkspace/cli && gws auth login)

Quick start

# Install
npm install -g gws-mcp-server

# Or run from source
git clone https://github.com/conorbronsdon/gws-mcp-server.git
cd gws-mcp-server
npm install && npm run build

Configuration

Claude Code (.mcp.json)

calendar_events_delete

Удаляет событие в календаре.

Удаляет событие в календаре.

Параметры

  • calendarIdstringобязательный

    Calendar ID

  • eventIdstringобязательный

    Event ID to delete

calendar_events_getтолько чтение

Получает одно событие календаря по идентификатору.

Получает одно событие календаря по идентификатору.

Параметры

  • calendarIdstringобязательный

    Calendar ID

  • eventIdstringобязательный

    Event ID

calendar_events_insert

Создаёт новое событие календаря.

Создаёт новое событие календаря.

Параметры

  • calendarIdstringобязательный

    Calendar ID

  • summarystringобязательный

    Event title

  • startstringобязательный

    Start time JSON (e.g. '{"dateTime":"2026-03-10T10:00:00-07:00"}')

  • endstringобязательный

    End time JSON

  • descriptionstring

    Event description

  • locationstring

    Event location

calendar_events_listтолько чтение

Перечисляет события из календаря.

Перечисляет события из календаря.

Параметры

  • calendarIdstringобязательный

    Calendar ID (use 'primary' for main calendar)

  • timeMinstring

    Lower bound (RFC3339, e.g. "2026-03-07T00:00:00Z")

  • timeMaxstring

    Upper bound (RFC3339)

  • maxResultsnumber

    Max events to return

  • singleEventsboolean

    Expand recurring events (usually true)

  • orderBystring

    Sort order: startTime or updated

  • qstring

    Free-text search

calendar_events_update

Обновляет существующее событие календаря с семантикой patch (изменяются только указанные поля).

Обновляет существующее событие календаря с семантикой patch (изменяются только указанные поля).

Параметры

  • calendarIdstringобязательный

    Calendar ID

  • eventIdstringобязательный

    Event ID to update

  • summarystring

    Event title

  • startstring

    Start time JSON

  • endstring

    End time JSON

  • descriptionstring

    Event description

docs_batchUpdate

Применяет обновления к Google Doc (вставка текста, форматирование и т. д.).

Применяет обновления к Google Doc (вставка текста, форматирование и т. д.).

Параметры

  • documentIdstringобязательный

    The document ID

  • requestsstringобязательный

    Array of update requests as JSON string

docs_create

Создайте новый пустой Google Doc.

Создайте новый пустой Google Doc.

Параметры

  • titlestringобязательный

    Document title

docs_getтолько чтение

Получает содержимое и метаданные Google Doc.

Получает содержимое и метаданные Google Doc.

Параметры

  • documentIdstringобязательный

    The document ID

drive_files_copy

Копирует файл. Полезен для преобразования форматов (например, из Markdown в Google Doc).

Копирует файл. Полезен для преобразования форматов (например, из Markdown в Google Doc).

Параметры

  • fileIdstringобязательный

    Source file ID to copy

  • fieldsstring

    Fields to return

  • namestringобязательный

    Name for the copy

  • mimeTypestring

    Target MIME type for conversion

  • parentsstring

    Parent folder IDs (JSON array as string)

drive_files_create

Создает новый файл в Google Drive. Использует bodyParams для метаданных и опционально загружает локальный файл.

Создает новый файл в Google Drive. Использует bodyParams для метаданных и опционально загружает локальный файл.

Параметры

  • fieldsstring

    Fields to return (e.g. "id,webViewLink")

  • namestringобязательный

    File name

  • mimeTypestring

    MIME type (e.g. "application/vnd.google-apps.document")

  • parentsstring

    Parent folder IDs (JSON array as string, e.g. '["folderId"]')

  • uploadPathstring

    Local file path to upload

drive_files_delete

Окончательно удаляет файл.

Окончательно удаляет файл.

Параметры

  • fileIdstringобязательный

    The file ID to delete

drive_files_downloadтолько чтение

Скачивает содержимое файла из Google Drive. Возвращает текстовое содержимое для текстовых файлов или строку в кодировке Base64 для бинарных файлов. Для Google Docs/Sheets/Slides экспортирует в читаемый формат (по умолчанию обычный текст).

Скачивает содержимое файла из Google Drive. Возвращает текстовое содержимое для текстовых файлов или строку в кодировке Base64 для бинарных файлов. Для Google Docs/Sheets/Slides экспортирует в читаемый формат (по умолчанию обычный текст).

Параметры

  • fileIdstringобязательный

    The file ID to download

  • exportMimeTypestring

    For Google-native files (Docs/Sheets/Slides): export format. Defaults to text/plain for Docs, text/csv for Sheets. Examples: text/plain, text/csv, application/pdf

  • savePathstring

    For binary files (images, PDFs): save to this local path instead of returning content inline. The file path is returned in the response.

drive_files_exportтолько чтение

Экспортирует файл Google Workspace (Doc, Sheet, Slide) в заданный формат. Возвращает JSON с метаданными экспорта. Используйте drive_files_download для автоматического экспорта с возвратом содержимого в теле ответа.

Экспортирует файл Google Workspace (Doc, Sheet, Slide) в заданный формат. Возвращает JSON с метаданными экспорта. Используйте drive_files_download для автоматического экспорта с возвратом содержимого в теле ответа.

Параметры

  • fileIdstringобязательный

    The Google Workspace file ID to export

  • mimeTypestringобязательный

    Export format: text/plain, text/csv, application/pdf, application/vnd.openxmlformats-officedocument.wordprocessingml.document (docx), application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (xlsx)

drive_files_getтолько чтение

Получает метаданные файла по идентификатору. Файлы общих дисков поддерживаются автоматически.

Получает метаданные файла по идентификатору. Файлы общих дисков поддерживаются автоматически.

Параметры

  • fileIdstringобязательный

    The file ID

  • fieldsstring

    Fields to include

drive_files_listтолько чтение

Перечисляет файлы в Google Drive. Поддерживает поисковые запросы через параметр 'q'. Файлы из общих дисков включаются автоматически.

Перечисляет файлы в Google Drive. Поддерживает поисковые запросы через параметр 'q'. Файлы из общих дисков включаются автоматически.

Параметры

  • qstring

    Search query (e.g. "name contains 'report'" or "mimeType='application/vnd.google-apps.folder'")

  • pageSizenumber

    Max results per page (1-1000, default 100)

  • fieldsstring

    Fields to include (e.g. "files(id,name,mimeType)")

  • orderBystring

    Sort order (e.g. "modifiedTime desc")

drive_files_update

Обновляет метаданные или содержимое файла.

Обновляет метаданные или содержимое файла.

Параметры

  • fileIdstringобязательный

    The file ID to update

  • fieldsstring

    Fields to return

  • namestring

    New file name

  • mimeTypestring

    New MIME type

  • uploadPathstring

    Local file path to upload

drive_permissions_create

Открывает общий доступ к файлу, создавая разрешение.

Открывает общий доступ к файлу, создавая разрешение.

Параметры

  • fileIdstringобязательный

    The file ID to share

  • rolestringобязательный

    Permission role: owner, organizer, fileOrganizer, writer, commenter, reader

  • typestringобязательный

    Grantee type: user, group, domain, anyone

  • emailAddressstring

    Email of user/group (required for user/group type)

gmail_drafts_create

Создайте черновик Gmail. Передайте threadId, чтобы прикрепить черновик к существующей беседе (он появится как ответ в этой цепочке). Черновик НЕ отправляется — откройте Gmail, чтобы проверить и отправить.

Создайте черновик Gmail. Передайте threadId, чтобы прикрепить черновик к существующей беседе (он появится как ответ в этой цепочке). Черновик НЕ отправляется — откройте Gmail, чтобы проверить и отправить.

Параметры

  • tostringобязательный

    Recipient(s). Comma-separated for multiple, e.g. "a@x.com, b@y.com"

  • ccstring

    CC recipient(s), comma-separated

  • bccstring

    BCC recipient(s), comma-separated

  • subjectstring

    Subject line. When attaching to a thread via threadId, Gmail expects the subject to match the thread (typically "Re: <original>").

  • bodystring

    Plain-text body

  • htmlBodystring

    HTML body. If both body and htmlBody are provided, the draft is multipart/alternative.

  • threadIdstring

    Thread ID to attach this draft to. Get it from gmail_threads_list / gmail_messages_get.

  • inReplyTostring

    Message-ID header value of the message being replied to. Improves threading robustness alongside threadId.

  • referencesstring

    References header value (space-separated Message-IDs of ancestor messages).

gmail_messages_getтолько чтение

Получает одно сообщение Gmail по ID.

Получает одно сообщение Gmail по ID.

Параметры

  • userIdstringобязательный

    User ID (use 'me')

  • idstringобязательный

    Message ID

  • formatstring

    Response format: full, metadata, minimal, raw

gmail_messages_listтолько чтение

Выводит список сообщений Gmail, соответствующих запросу.

Выводит список сообщений Gmail, соответствующих запросу.

Параметры

  • userIdstringобязательный

    User ID (use 'me')

  • qstring

    Gmail search query (e.g. "from:user@example.com subject:hello")

  • maxResultsnumber

    Max messages to return

  • labelIdsstring

    Label IDs to filter by

gmail_threads_getтолько чтение

Получает полную цепочку писем Gmail по ID (все сообщения в переписке).

Получает полную цепочку писем Gmail по ID (все сообщения в переписке).

Параметры

  • userIdstringобязательный

    User ID (use 'me')

  • idstringобязательный

    Thread ID

  • formatstring

    Response format: full, metadata, minimal

gmail_threads_listтолько чтение

Выводит список цепочек Gmail, соответствующих запросу.

Выводит список цепочек Gmail, соответствующих запросу.

Параметры

  • userIdstringобязательный

    User ID (use 'me')

  • qstring

    Gmail search query

  • maxResultsnumber

    Max threads to return

gmail_threads_modify

Изменяет ветку Gmail: добавляет/удаляет метки. Чтобы архивировать, удаляет INBOX. Чтобы отметить как прочитанное, удаляет UNREAD. Чтобы отметить звездочкой, добавляет STARRED.

Изменяет ветку Gmail: добавляет/удаляет метки. Чтобы архивировать, удаляет INBOX. Чтобы отметить как прочитанное, удаляет UNREAD. Чтобы отметить звездочкой, добавляет STARRED.

Параметры

  • userIdstringобязательный

    User ID (use 'me')

  • idstringобязательный

    Thread ID

  • addLabelIdsstring

    JSON array of label IDs to add, e.g. ["STARRED"]

  • removeLabelIdsstring

    JSON array of label IDs to remove, e.g. ["INBOX","UNREAD"]

sheets_getтолько чтение

Получает метаданные электронной таблицы.

Получает метаданные электронной таблицы.

Параметры

  • spreadsheetIdstringобязательный

    The spreadsheet ID

  • includeGridDataboolean

    Include grid data

sheets_values_append

Добавляет значения после последней строки диапазона электронной таблицы.

Добавляет значения после последней строки диапазона электронной таблицы.

Параметры

  • spreadsheetIdstringобязательный

    The spreadsheet ID

  • rangestringобязательный

    A1 notation range to append to

  • valueInputOptionstringобязательный

    RAW or USER_ENTERED

  • valuesstringобязательный

    2D array of values as JSON string

sheets_values_getтолько чтение

Читает значения из диапазона электронной таблицы.

Читает значения из диапазона электронной таблицы.

Параметры

  • spreadsheetIdstringобязательный

    The spreadsheet ID

  • rangestringобязательный

    A1 notation range (e.g. "Sheet1!A1:D10")

  • majorDimensionstring

    ROWS or COLUMNS

  • valueRenderOptionstring

    FORMATTED_VALUE, UNFORMATTED_VALUE, or FORMULA

sheets_values_update

Записывает значения в диапазон электронной таблицы.

Записывает значения в диапазон электронной таблицы.

Параметры

  • spreadsheetIdstringобязательный

    The spreadsheet ID

  • rangestringобязательный

    A1 notation range to write

  • valueInputOptionstringобязательный

    RAW or USER_ENTERED

  • valuesstringобязательный

    2D array of values as JSON string (e.g. '[["A","B"],["C","D"]]')

tasks_tasklists_delete

Удаляет список задач. Если он содержит назначенные задачи, оригиналы (в Docs/Chat Spaces) также удаляются.

Удаляет список задач. Если он содержит назначенные задачи, оригиналы (в Docs/Chat Spaces) также удаляются.

Параметры

  • taskliststringобязательный

    Task list ID to delete

tasks_tasklists_getтолько чтение

Получает список задач по ID.

Получает список задач по ID.

Параметры

  • taskliststringобязательный

    Task list ID (use "@default" for the user's default list)

tasks_tasklists_insert

Создаёт новый список задач.

Создаёт новый список задач.

Параметры

  • titlestringобязательный

    Task list title

tasks_tasklists_listтолько чтение

Перечисляет списки задач аутентифицированного пользователя.

Перечисляет списки задач аутентифицированного пользователя.

Параметры

  • maxResultsnumber

    Max task lists per page (1-100, default 20)

  • pageTokenstring

    Token for the next page of results

tasks_tasklists_update

Обновляет список задач (изменяются только указанные поля).

Обновляет список задач (изменяются только указанные поля).

Параметры

  • taskliststringобязательный

    Task list ID to update

  • titlestring

    New task list title

tasks_tasks_clear

Скрывает все выполненные задачи в списке. Выполненные задачи не удаляются, но перестают отображаться в ответах списка по умолчанию.

Скрывает все выполненные задачи в списке. Выполненные задачи не удаляются, но перестают отображаться в ответах списка по умолчанию.

Параметры

  • taskliststringобязательный

    Task list ID to clear

tasks_tasks_delete

Удаляет задачу. Если назначена из Docs/Chat Spaces, оригинал также удаляется.

Удаляет задачу. Если назначена из Docs/Chat Spaces, оригинал также удаляется.

Параметры

  • taskliststringобязательный

    Task list ID

  • taskstringобязательный

    Task ID to delete

tasks_tasks_getтолько чтение

Получает задачу по ID.

Получает задачу по ID.

Параметры

  • taskliststringобязательный

    Task list ID

  • taskstringобязательный

    Task ID

tasks_tasks_insert

Создайте новую задачу. Используйте parent, чтобы вложить её как подзадачу, и previous, чтобы разместить после родственной задачи.

Создайте новую задачу. Используйте parent, чтобы вложить её как подзадачу, и previous, чтобы разместить после родственной задачи.

Параметры

  • taskliststringобязательный

    Task list ID to insert into

  • parentstring

    Parent task ID (insert as a subtask under this task)

  • previousstring

    Sibling task ID (insert immediately after this task)

  • titlestringобязательный

    Task title

  • notesstring

    Free-text notes / body

  • statusstring

    Task status: needsAction or completed

  • duestring

    Due date (RFC 3339, e.g. "2026-06-01T00:00:00.000Z")

tasks_tasks_listтолько чтение

Перечисляет задачи в списке задач. По умолчанию исключает скрытые и назначенные задачи; укажите showHidden/showAssigned, чтобы включить их.

Перечисляет задачи в списке задач. По умолчанию исключает скрытые и назначенные задачи; укажите showHidden/showAssigned, чтобы включить их.

Параметры

  • taskliststringобязательный

    Task list ID (use "@default" for the default list)

  • maxResultsnumber

    Max tasks per page (1-100, default 20)

  • pageTokenstring

    Token for the next page of results

  • showCompletedboolean

    Include completed tasks (default true; ignored unless showHidden is also true)

  • showHiddenboolean

    Include hidden (cleared) tasks

  • showDeletedboolean

    Include deleted tasks

  • showAssignedboolean

    Include tasks assigned from Docs/Chat Spaces

  • completedMinstring

    Lower bound on completion date (RFC 3339)

  • completedMaxstring

    Upper bound on completion date (RFC 3339)

  • dueMinstring

    Lower bound on due date (RFC 3339)

  • dueMaxstring

    Upper bound on due date (RFC 3339)

  • updatedMinstring

    Lower bound on last-modified time (RFC 3339)

tasks_tasks_move

Перемещает задачу в пределах её списка или в другой список. Используйте parent/previous для задания позиции; destinationTasklist — для смены списка.

Перемещает задачу в пределах её списка или в другой список. Используйте parent/previous для задания позиции; destinationTasklist — для смены списка.

Параметры

  • taskliststringобязательный

    Source task list ID

  • taskstringобязательный

    Task ID to move

  • parentstring

    New parent task ID (move as subtask under this task)

  • previousstring

    New sibling task ID (move immediately after this task)

  • destinationTaskliststring

    Destination task list ID (omit to move within the source list)

tasks_tasks_update

Обновляет задачу (изменяются только переданные поля). Обычное применение: завершить задачу, установив статус 'completed'.

Обновляет задачу (изменяются только переданные поля). Обычное применение: завершить задачу, установив статус 'completed'.

Параметры

  • taskliststringобязательный

    Task list ID

  • taskstringобязательный

    Task ID to update

  • titlestring

    Task title

  • notesstring

    Free-text notes / body

  • statusstring

    Task status: needsAction or completed

  • duestring

    Due date (RFC 3339)

Другие проверенные MCP-сервера

vectorize-io/hindsight

vectorize-io/hindsight

официальный

MCP сервер Hindsight наделяет AI-агентов долговременной памятью — они учатся на опыте, а не просто запоминают диалоги. Использует биомиметические структуры данных для извлечения фактов и ментальных моделей, превосходя по точности RAG и графы знаний. Подходит для персонализации чат-ботов и создани...

Python18555
webdriverio/mcp

webdriverio/mcp

официальный

Управляйте браузерами и мобильными приложениями через WebDriverIO с MCP-сервером. Автоматизируйте Chrome, Firefox, Edge, Safari, iOS и Android: навигация, клики, скриншоты. Оптимален для тестирования.

TypeScript33
0xMassi/webclaw

0xMassi/webclaw

MCP-сервер webclaw преобразует веб-страницы в чистый Markdown, JSON и LLM-контекст для AI-агентов. Работает локально, подключается к Claude/Cursor, скрапит, краулит и извлекает структурированные да...

Rust1783
heurist-network/heurist-mesh-mcp-server

heurist-network/heurist-mesh-mcp-server

официальный

Сервер MCP на базе Heurist Mesh для Web3-аналитики: 30+ AI-агентов для анализа трендов, токенов и кошельков. Интегрируется с Claude, Cursor, оптимизирован для AI. Полезен разработчикам и трейдерам.

Python66
mrexodia/ida-pro-mcp

mrexodia/ida-pro-mcp

MCP сервер для реверс-инжиниринга в IDA Pro. Дает AI-ассистентам доступ к декомпиляции, просмотру типов и патчингу кода. Ускоряет анализ вредоносного ПО и отладку через интеграцию с популярными клиентами.

Python10456
ragieai/mcp-server

ragieai/mcp-server

официальный

Извлекайте информацию из базы знаний Ragie с помощью MCP-сервера. Инструмент retrieve возвращает релевантные фрагменты, учитывая ранжирование и свежесть. Идеален для интеграции корпоративных знаний...

JavaScript89
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин