Google Drive MCP Server

Google Drive MCP Server

Provides LLM tools to search, read, and edit Google Drive, Docs, and Sheets, including automatic export to Markdown/CSV and safety features like read-before-write guards.

Category
访问服务器

README


title: "Google Drive MCP Server" date: 2026-08-19 tags:

  • проект/workspace
  • подпроект/tools
  • тип/guide
  • область/tech
  • дата/2026-08-19

Google Drive MCP Server

Локальный MCP-сервер для Cursor, Claude Code и Claude Desktop. Через него агент ищет и читает файлы на Google Drive, создаёт и правит Google Docs и Google Sheets.

Google Docs при чтении уходят в Markdown, таблицы — в CSV, презентации — в текст. Docs можно править точечно: вставка, замена, стили, заголовки, списки, переименование, дубликат. Sheets — значения, форматы, вкладки, строки и столбцы. Работает и с личным Диском, и с Shared drives.

Репозиторий: https://github.com/Stillfrozen/gdrive-mcp
Основано на wagnerlabs/gdrive-mcp.

Ключи OAuth живут только у вас на диске. В git они не попадают.

Пошаговая установка в Google Cloud (проект, API, Desktop OAuth, test users): docs/INSTALL.ru.md


Быстрый старт

Нужны Node.js 18+ (лучше 20) и Google-аккаунт, с чьего Диска будете работать.

git clone https://github.com/Stillfrozen/gdrive-mcp.git
cd gdrive-mcp
./scripts/install.sh

Скрипт ставит зависимости, собирает проект и проводит по Google Cloud: проект, API, экран согласия, Desktop-клиент, логин в браузере. В конце печатает готовый фрагмент для MCP-клиента.

Посмотреть шаги без изменений:

./scripts/install.sh --dry-run

Если хотите сами кликать в Console — весь разбор экранов в docs/INSTALL.ru.md.

Cursor

В ~/.cursor/mcp.json (или .cursor/mcp.json в проекте) — только абсолютный путь:

{
  "mcpServers": {
    "gdrive": {
      "command": "node",
      "args": ["/absolute/path/to/gdrive-mcp/dist/index.js"],
      "env": {
        "GDRIVE_OAUTH_PATH": "/absolute/path/to/gdrive-mcp/credentials/gcp-oauth.keys.json",
        "GDRIVE_CREDENTIALS_PATH": "/absolute/path/to/gdrive-mcp/credentials/.gdrive-server-credentials.json"
      }
    }
  }
}

Блок env не обязателен, если JSON лежат в credentials/ репозитория. Если в файле уже есть другие серверы — добавьте "gdrive" внутрь mcpServers, не затирая остальное.

Дальше Cursor → Settings → MCP → Reload. Индикатор gdrive должен стать зелёным.

Claude Code CLI

claude mcp add --scope user gdrive -- node /absolute/path/to/gdrive-mcp/dist/index.js

--scope user ставит сервер глобально. Снять: claude mcp remove gdrive.

Claude Desktop

В claude_desktop_config.json:

{
  "mcpServers": {
    "gdrive": {
      "command": "node",
      "args": ["/absolute/path/to/gdrive-mcp/dist/index.js"]
    }
  }
}

Инструменты

Чтение

Tool Что делает
gdrive_search Поиск по полному тексту или синтаксису запросов Drive
gdrive_get_file Метаданные файла по ID
gdrive_read_file Содержимое: Docs → Markdown, Sheets → CSV, Slides → текст
gdrive_list_files Список файлов в папке, сортировка и пагинация
gdrive_get_spreadsheet_info Вкладки таблицы и именованные диапазоны
gdrive_get_document_info Метаданные Doc и опционально структурированный текст вкладки

Запись: Sheets

Tool Что делает Destructive Idempotent
gdrive_create_sheet Новая таблица Нет Нет
gdrive_update_sheet Перезаписать диапазон ячеек Да Да
gdrive_append_sheet Добавить строки после данных Нет Нет
gdrive_clear_values Очистить значения, формат оставить Да Да
gdrive_format_cells Формат диапазона Нет Да
gdrive_add_sheet_tab Новая вкладка Нет Нет
gdrive_delete_sheet_tab Удалить вкладку вместе с данными Да Нет
gdrive_rename_sheet_tab Переименовать вкладку Да Нет
gdrive_insert_rows_columns Вставить пустые строки или столбцы Нет Нет
gdrive_delete_rows_columns Удалить строки или столбцы с данными Да Нет

Запись: Docs

Tool Что делает Destructive Idempotent
gdrive_create_doc Пустой Doc, можно в указанную папку Нет Нет
gdrive_insert_doc_text Вставка по позиции, индексу или текстовому якорю Нет Нет
gdrive_replace_doc_text Замена диапазона или якорного совпадения Да Нет
gdrive_replace_all_doc_text Замена всех точных совпадений на вкладке или во всём Doc Да Да
gdrive_delete_doc_text Удаление диапазона или якорного совпадения Да Нет
gdrive_update_doc_text_style Жирный, цвет, шрифт, ссылка Нет Да
gdrive_update_doc_paragraph_style Заголовки и выравнивание абзацев Нет Да
gdrive_update_doc_list Списки: создать, сменить, снять Да Да
gdrive_rename_doc Переименовать файл Doc Да Нет
gdrive_duplicate_doc Дубликат, можно в указанную папку Нет Нет

Как пишутся значения в ячейки

У gdrive_update_sheet и gdrive_append_sheet параметр value_input_option:

  • USER_ENTERED (по умолчанию) — как ввод в UI Sheets. Формула =SUM(A1:A10) выполнится, числа и даты отформатируются.
  • RAW — как есть. Строка =SUM(A1:A10) останется текстом.

Как читаются файлы

gdrive_read_file сам экспортирует документы Workspace:

Формат источника Что вернётся
Google Docs Markdown
Google Sheets CSV (только первая вкладка)
Google Slides Текст
Google Drawings PNG, по сути метаданные
Текст (.txt, .json, .js, …) UTF-8 как есть
Бинарники (картинки, PDF, …) Метаданные и ссылка в браузер

Всю таблицу (вкладки, структура, запись) берите через gdrive_get_spreadsheet_info и write-tools Sheets, не через gdrive_read_file.

Для абзацев, заголовков, списков и якорных правок Doc — gdrive_get_document_info. В ответе есть сырой text и displayText без хвостового перевода строки абзаца; displayText обычно безопаснее как якорь. Markdown быстрее всего даёт gdrive_read_file.


Модель безопасности

Несколько слоёв: аннотации MCP, «сначала прочитай», для Docs ещё ревизия и якоря, для Sheets — сверка текущих значений.

1. Аннотации инструментов

Каждый tool объявляет MCP annotations. Клиент может спросить подтверждение перед разрушающей операцией. См. колонки Destructive / Idempotent в таблицах выше.

2. Сначала чтение, потом запись

Сервер помнит, какие таблицы и Docs агент уже открывал в этой сессии.

Таблица считается прочитанной после:

  • gdrive_read_file (ячейки как CSV)
  • gdrive_get_spreadsheet_info (структура и вкладки)
  • gdrive_create_sheet (агент сам только что создал файл)

Doc считается прочитанным после:

  • gdrive_read_file (Markdown + ревизия, если Google её отдал)
  • gdrive_get_document_info (вкладки или структурированный текст)
  • gdrive_create_doc

Любая запись без этого шага отклоняется:

You must read this spreadsheet before writing to it…

You must read this document before writing to it…

Так агент реже целится не в тот файл. Список сбрасывается при рестарте процесса (каждая MCP-сессия заново).

gdrive_get_file сюда не входит: это только метаданные Диска, не содержимое.

3. Запись в Docs с учётом ревизии

Правка привязана к ревизии, которую агент читал последней:

  • conflict_mode: "strict" (по умолчанию) — Docs requiredRevisionId. Если документ успели поменять, запись падает.
  • conflict_mode: "merge" — Docs targetRevisionId. Google по возможности смержит с чужими правками.

Кэш структурированного содержимого живёт в сессии после gdrive_get_document_info include_content=true. Якорные tools (gdrive_insert_doc_text, gdrive_replace_doc_text, gdrive_update_doc_paragraph_style, gdrive_update_doc_list) берут его, пока ревизия та же. Иначе сервер заново снимает снимок.

Для точечной замены текста можно передать expected_text: перед отправкой сервер сверит, что в диапазоне именно эта строка.

У якорных gdrive_delete_doc_text и gdrive_replace_doc_text сервер сам отрезает только финальный перевод строки абзаца, если совпадение упирается в конец вкладки. Docs API не удаляет диапазон с терминальным newline сегмента. Явные start_index / end_index этого не делают: хвостовой newline надо исключить самим.

4. Предусловие для Sheets

У gdrive_update_sheet есть опциональный expected_current_values — двумерный массив той же формы, что values. Сервер читает ячейки и сравнивает. Не совпало — запись отказ, в ошибке фактическое содержимое.

  • Точечная правка (одна ячейка, формула) — передавайте expected_current_values.
  • Массовая операция (тысяча строк) — не передавайте, иначе удвоите запросы и упрётесь в квоту.

include_previous_values: true вернёт старые значения для аудита. Если задан expected_current_values, старые значения приходят всегда.

Откат

Правки Docs и Sheets видны в истории версий Google Workspace. Откатить можно там.

Ни один tool не удаляет файл целиком с Диска. Разрушающие операции — только внутри Doc и внутри таблицы. Удалить файл — только через UI Диска.


Конфигурация

Пути к ключам можно переопределить переменными окружения:

Переменная По умолчанию Что это
GDRIVE_OAUTH_PATH credentials/gcp-oauth.keys.json JSON OAuth-клиента из Google Cloud
GDRIVE_CREDENTIALS_PATH credentials/.gdrive-server-credentials.json Сохранённый refresh token

Обновление

После git pull запускайте upgrade. Он пересоберёт проект и, если в setup-manifest.json появились API или scope, попросит заново пройти auth:

cd /path/to/gdrive-mcp
git pull
./scripts/upgrade.sh

Если манифест не менялся, скрипт только пересоберёт и скажет, что вы на месте. Cursor подхватит dist/ после Reload MCP. Перерегистрировать сервер не нужно.

Про scope: сервер просит полный drive, а не узкий drive.file. Это шире, чем минимальная рекомендация Google, но иначе нельзя читать произвольный доступный файл и писать в уже существующие Docs (rename, duplicate, правки). Scope documents нужен для структурированного чтения и batchUpdate.

У External-приложения в статусе Testing refresh token живёт 7 дней. Потом invalid_grant и снова npm run auth. Подробности и варианты (Internal / Publish) — в docs/INSTALL.ru.md.


Ограничения

  • gdrive_create_sheet кладёт таблицу в корень Диска. Папку выбрать нельзя.
  • gdrive_read_file для Sheets отдаёт CSV только с первой вкладки. Остальные вкладки — через gdrive_get_spreadsheet_info.
  • gdrive_read_file для Docs всегда Markdown. Вкладки, границы абзацев, списки, якоря — gdrive_get_document_info.
  • Перед сменой формата и структуры Doc сначала читайте gdrive_get_document_info include_content=true.
  • gdrive_replace_all_doc_text по умолчанию трогает первую вкладку. По всем вкладкам — только с явным all_tabs: true.

Разработка

npm install
npm run dev          # tsx, без сборки
npm run build
npm test
npm run test:live    # живой Google Doc, нужны сохранённые credentials
npm run test:watch

npm run test:live создаёт временный Doc, вставляет текст через тот же поток, что MCP, проверяет через gdrive_get_document_info и в конце кладёт файл в корзину.


Лицензия

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 模型以安全和受控的方式获取实时的网络信息。

官方
精选