{"_id":"@a1-x-tech/mcp-google-drive","_rev":"3-2acab42a0e61eed95052603252816995","name":"@a1-x-tech/mcp-google-drive","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@a1-x-tech/mcp-google-drive","version":"0.1.0","keywords":["mcp","model-context-protocol","google","google-drive","drive","files","storage","claude","cursor","codex"],"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","_id":"@a1-x-tech/mcp-google-drive@0.1.0","maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"homepage":"https://github.com/A1-x-Tech/mcp-google-drive#readme","bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-drive/issues"},"bin":{"mcp-google-drive":"dist/index.js"},"dist":{"shasum":"8f4d4fb92aae48e9ae6b71eaeacf443f692ca8e2","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-drive/-/mcp-google-drive-0.1.0.tgz","fileCount":18,"integrity":"sha512-JXZylEuioIOXZIoglTh1Ln3sahffk2t61dQ6Ib21xFzd4jy3WZa5xz+pXfG0Qqh1yUjespoC8b7ExjPMancieQ==","signatures":[{"sig":"MEYCIQCD3vhjOexk4Zsr2N1P2ydnFQQ0SnXf1szlAhhU2zwJxAIhAPP50Rw1C8g1BKI3BYJnQaNglhMPFLdgl0gpxkf3Gmub","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":127942},"type":"module","engines":{"node":">=20"},"gitHead":"b0916b75d7085c6469c60021acae47fabda70fb4","mcpName":"io.github.A1-x-Tech/mcp-google-drive","scripts":{"dev":"tsx watch src/index.ts","test":"npm run test:src && npm run test:dist","build":"rm -rf dist && tsc","smoke":"node --import tsx src/smoke.ts","start":"node dist/index.js","prepare":"npm run build","test:src":"node --import tsx --test $(find src -name '*.test.ts')","test:dist":"npm run build && node --test test/dist-smoke.test.js","typecheck":"tsc -p tsconfig.check.json","prepublishOnly":"npm run typecheck && npm test"},"_npmUser":{"name":"gistrec","email":"gistrec@gmail.com"},"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-drive.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Drive API — search, organize, upload, download, export, share and comment on Drive files. For Claude, Cursor, Codex and other AI clients.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.7.0","@types/node":"^25.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-google-drive_0.1.0_1788054568597_0.7363063381267836","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@a1-x-tech/mcp-google-drive","version":"0.2.0","keywords":["mcp","model-context-protocol","google","google-drive","drive","files","storage","claude","cursor","codex"],"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","_id":"@a1-x-tech/mcp-google-drive@0.2.0","maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"homepage":"https://github.com/A1-x-Tech/mcp-google-drive#readme","bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-drive/issues"},"bin":{"mcp-google-drive":"dist/index.js"},"dist":{"shasum":"b80f6e141b122cfd8bbbaa8a826cf88addc953aa","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-drive/-/mcp-google-drive-0.2.0.tgz","fileCount":19,"integrity":"sha512-thr2lUOTGJpfnxz04S/E+Pbv5EjLrQSiSiXv/Q9cID7cLnpLbpB6QrqK8wsCJKhTr5mYuk+Qe1etpT6hZqXI0w==","signatures":[{"sig":"MEYCIQDb0QWjr3600cfjD0m4dAMYiAsflUGj+WNWM9+glETuMgIhAL2SlJ4XS9YGuQw5Ds7OUli0lzlm2wL3Vk/GtwbZxB4m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC/f+slGIdFQ/CpkP4CAn2a7Kyp79xbFtKwQwgNBHmgNwIgIR2PNTfuFk/Q94JIb37ICNS8HMHI5BdruU96JbsJAx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":139712},"type":"module","engines":{"node":">=20"},"gitHead":"116a719e8bb3daf58fec31b1237961f827df33b3","mcpName":"io.github.A1-x-Tech/mcp-google-drive","scripts":{"dev":"tsx watch src/index.ts","test":"npm run test:src && npm run test:dist","build":"rm -rf dist && tsc","smoke":"node --import tsx src/smoke.ts","start":"node dist/index.js","prepare":"npm run build","test:src":"node --import tsx --test $(find src -name '*.test.ts')","test:dist":"npm run build && node --test test/dist-smoke.test.js","typecheck":"tsc -p tsconfig.check.json","prepublishOnly":"npm run typecheck && npm test"},"_npmUser":{"name":"gistrec","email":"gistrec@gmail.com"},"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-drive.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Drive API — search, organize, upload, download, export, share and comment on Drive files. For Claude, Cursor, Codex and other AI clients.","directories":{},"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0","@a1-x-tech/mcp-google-auth":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.7.0","@types/node":"^25.9.3"},"_npmOperationalInternal":{"tmp":"tmp/mcp-google-drive_0.2.0_1789938191928_0.8311877172847131","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@a1-x-tech/mcp-google-drive@1.0.0","bin":{"mcp-google-drive":"dist/index.js"},"bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-drive/issues"},"dist":{"shasum":"8d79156612a47ac14629b0f047d5432edeb7fd06","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-drive/-/mcp-google-drive-1.0.0.tgz","fileCount":19,"integrity":"sha512-O3G4YkD41sXX9ewBm49BxQgfIiVpvBieax95DD0pit3pMEimfz591HX7T/fn7ZvWM9pn5zQE5MGWxyGJfB2wvw==","signatures":[{"sig":"MEYCIQDgrz8pVsznyFDC1xL3fpiwlMl5ci6Wp5NO40HBo3A6ZQIhAMAKwPT3Qn4tCuHQZbZOr1sZRiIKQQwE+bSESNjy1yuB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH0ktfkk3bvndTQPiBd0f18zpNmm/40vtoLFiFsJAbEHAiA7ZzU+LY5UUMKksoY4yAgSmgygxDvcE4UnYHsxc+aObQ=="}],"unpackedSize":139709},"name":"@a1-x-tech/mcp-google-drive","type":"module","author":{"name":"gistrec","email":"gistrec@gmail.com"},"engines":{"node":">=20"},"gitHead":"cbfa929267824cb2995092241af7187619eca52c","license":"MIT","mcpName":"io.github.A1-x-Tech/mcp-google-drive","scripts":{"dev":"tsx watch src/index.ts","test":"npm run test:src && npm run test:dist","build":"rm -rf dist && tsc","smoke":"node --import tsx src/smoke.ts","start":"node dist/index.js","prepare":"npm run build","test:src":"node --import tsx --test $(find src -name '*.test.ts')","test:dist":"npm run build && node --test test/dist-smoke.test.js","typecheck":"tsc -p tsconfig.check.json","prepublishOnly":"npm run typecheck && npm test"},"version":"1.0.0","_npmUser":{"name":"gistrec","email":"gistrec@gmail.com"},"homepage":"https://github.com/A1-x-Tech/mcp-google-drive#readme","keywords":["mcp","model-context-protocol","google","google-drive","drive","files","storage","claude","cursor","codex"],"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-drive.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Drive API — search, organize, upload, download, export, share and comment on Drive files. For Claude, Cursor, Codex and other AI clients.","directories":{},"maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"_nodeVersion":"24.15.0","dependencies":{"zod":"^3.25.0","@modelcontextprotocol/sdk":"^1.29.0","@a1-x-tech/mcp-google-auth":"^0.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","typescript":"^5.7.0","@types/node":"^25.9.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-google-drive_1.0.0_1790203300241_0.03394277299211579"}}},"time":{"created":"2026-08-30T01:49:28.393Z","modified":"2026-09-23T22:41:40.509Z","0.1.0":"2026-08-30T01:49:28.791Z","0.2.0":"2026-09-20T21:03:12.024Z","1.0.0":"2026-09-23T22:41:40.329Z"},"bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-drive/issues"},"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","homepage":"https://github.com/A1-x-Tech/mcp-google-drive#readme","keywords":["mcp","model-context-protocol","google","google-drive","drive","files","storage","claude","cursor","codex"],"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-drive.git","type":"git"},"description":"MCP server for the Google Drive API — search, organize, upload, download, export, share and comment on Drive files. For Claude, Cursor, Codex and other AI clients.","maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"readme":"# <img src=\"./assets/a1-logo.svg\" alt=\"A1\" width=\"40\"> Google Drive MCP\n\n[English](./README.md) | **Русский**\n\n[![npm](https://img.shields.io/npm/v/%40a1-x-tech%2Fmcp-google-drive)](https://www.npmjs.com/package/@a1-x-tech/mcp-google-drive)\n[![CI](https://github.com/A1-x-Tech/mcp-google-drive/actions/workflows/ci.yml/badge.svg)](https://github.com/A1-x-Tech/mcp-google-drive/actions/workflows/ci.yml)\n[![Glama](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-drive/badges/score.svg)](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-drive)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\n**A1 Google Drive MCP** позволяет AI-приложению работать с вашим Google Drive на естественном языке. Можно найти файл, навести порядок в папках, загрузить и скачать содержимое, экспортировать документ в Markdown, поделиться им с нужными людьми — и держать корзину между вами и безвозвратным удалением.\n\nСервер работает с Google Drive API через ваш Google-аккаунт. Он одинаково видит «Мой диск» и общие диски, понимает «удалить» как обратимую корзину и явно показывает ограничения Drive API, а не создаёт впечатление, что с файлами можно сделать всё.\n\n- **21 инструментов.** Поиск и метаданные, папки и перемещение, загрузка и скачивание, экспорт Docs/Sheets/Slides, корзина, доступы и комментарии.\n- **Подключение из диалога.** Скажите «подключи Google Диск»: сервер проведёт через создание OAuth-клиента, поймает редирект Google на `127.0.0.1` с PKCE и сам сохранит токены — без конфигов и перезапуска.\n- **Сначала корзина.** «Удалить» означает обратимую корзину; безвозвратное удаление — сознательно отдельный инструмент, который нельзя выбрать случайно.\n- **Документы остаются целыми.** Docs, Sheets и Slides перемещаются, копируются, экспортируются и конвертируются как целые файлы — сервер никогда не редактирует текст внутри них.\n- **Scope выбираете вы.** Для чтения достаточно `drive.readonly`, `drive.file` ограничивает доступ файлами приложения; полный набор инструментов требует `drive`.\n\nНачните с запроса, который только читает данные:\n\n> Найди в моём Drive документ с планом проекта, экспортируй его в Markdown и кратко перескажи.\n\n[Подключить сервер](#быстрый-старт) · [Посмотреть сценарии](#что-можно-поручить) · [Открыть техническую документацию](#техническая-документация)\n\n---\n\n## Увидеть работу за минуту\n\n> **Вы:** Покажи содержимое папки «Договоры 2025», сначала новые.\n>\n> **Ассистент:** Показывает файлы с типами, владельцами и датами изменения. Ничего не меняется.\n>\n> **Вы:** Подготовь вложенную папку «Архив» и перенеси туда всё старше года.\n>\n> **Ассистент:** Показывает папку, которую создаст, и файлы, которые перенесёт, затем запрашивает подтверждение.\n>\n> **Вы:** Подтверждаю.\n>\n> **Ассистент:** Создаёт папку и переносит файлы. Ничего не расшаривается, не отправляется в корзину и не удаляется, пока вы не попросите об этом отдельно.\n\n## Содержание\n\n- [Быстрый старт](#быстрый-старт)\n- [Что можно поручить](#что-можно-поручить)\n- [Как меняется ваш Drive](#как-меняется-ваш-drive)\n- [Что может измениться](#что-может-измениться)\n- [Как получить доступ](#как-получить-доступ)\n- [Конфигурация](#конфигурация)\n- [Данные, лимиты и работа в фоне](#данные-лимиты-и-работа-в-фоне)\n- [Техническая документация](#техническая-документация)\n- [Поддержка](#поддержка)\n\n## Быстрый старт\n\nНужны Node.js 20+ и Google-аккаунт. Учётные данные при установке не нужны: сервер подключается прямо в диалоге.\n\n1. Добавьте сервер в AI-приложение.\n2. Скажите «подключи Google Диск» — ассистент проведёт [создание OAuth-клиента и выдачу доступа](#как-получить-доступ), не трогая конфиги.\n3. Отправьте запрос, который только читает данные.\n\n<details open>\n<summary><strong>Codex</strong></summary>\n\n<br>\n\n**В desktop-приложении:** откройте **Settings → MCP servers**, нажмите **Add server**, выберите **STDIO** и укажите команду `npx -y @a1-x-tech/mcp-google-drive@latest` вместе с переменными `GOOGLE_DRIVE_CLIENT_ID`, `GOOGLE_DRIVE_CLIENT_SECRET` и `GOOGLE_DRIVE_REFRESH_TOKEN`. Нажмите **Save**, затем **Restart**.\n\n**В IDE-расширении:** откройте **gear menu → MCP servers**, нажмите **Add server**, выберите **STDIO** и укажите ту же команду и переменные окружения. Нажмите **Save**, затем **Restart extension**.\n\n**В командной строке:**\n\n```bash\ncodex mcp add google-drive \\\n  -- npx -y @a1-x-tech/mcp-google-drive@latest\n```\n\n```bash\ncodex mcp list\n```\n\n[Документация Codex MCP](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)\n\n</details>\n\n<details>\n<summary><strong>Claude Code</strong></summary>\n\n<br>\n\n```bash\nclaude mcp add \\\n  --transport stdio --scope user google-drive \\\n  -- npx -y @a1-x-tech/mcp-google-drive@latest\n```\n\n```bash\nclaude mcp list\n```\n\n[Документация Claude Code MCP](https://code.claude.com/docs/en/mcp)\n\n</details>\n\n<details>\n<summary><strong>Claude Desktop</strong></summary>\n\n<br>\n\nАктуальный официальный путь — **Settings → Extensions**. Для пользовательского desktop extension откройте **Advanced settings → Extension Developer → Install Extension…**, выберите файл `.mcpb` и следуйте подсказкам.\n\nЭтот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит `.mcpb`. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-drive\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-drive@latest\"]\n    }\n  }\n}\n```\n\nВ таких сборках сохраните его в `~/Library/Application Support/Claude/claude_desktop_config.json` на macOS или `%APPDATA%\\Claude\\claude_desktop_config.json` на Windows.\n\n[Документация Claude Desktop MCP](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)\n\n</details>\n\n<details>\n<summary><strong>Cursor</strong></summary>\n\n<br>\n\nДобавьте в `~/.cursor/mcp.json` на macOS/Linux или `%USERPROFILE%\\.cursor\\mcp.json` на Windows:\n\n```json\n{\n  \"mcpServers\": {\n    \"google-drive\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-drive@latest\"]\n    }\n  }\n}\n```\n\n[Документация Cursor MCP](https://cursor.com/docs/mcp)\n\n</details>\n\n<details>\n<summary><strong>VS Code</strong></summary>\n\n<br>\n\nЗапустите **MCP: Open User Configuration** и добавьте:\n\n```json\n{\n  \"servers\": {\n    \"google-drive\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-drive@latest\"]\n    }\n  }\n}\n```\n\nПроверьте сервер командой **MCP: List Servers**.\n\n[Документация VS Code MCP](https://code.visualstudio.com/docs/agent-customization/mcp-servers)\n\n</details>\n\n## Что можно поручить\n\n### Найти и прочитать файлы\n\n- Найди таблицу с бюджетом за прошлый квартал и покажи, где она лежит и кто владелец.\n- Экспортируй бриф проекта в Markdown и кратко изложи открытые вопросы.\n- Скачай подписанный договор в PDF в мою папку с отчётами.\n\n### Навести порядок и перенести содержимое\n\n- Создай папку «Отчёты 2026» и перенеси в неё ежемесячные отчёты.\n- Загрузи эти заметки со встречи и преврати их в Google Doc.\n- Скопируй шаблон предложения и переименуй копию под нового клиента.\n\n### Поделиться и обсудить\n\n- Дай коллеге доступ к папке с правом комментировать и добавь сопроводительное сообщение к приглашению.\n- Покажи открытые комментарии в дизайн-документе и закрой те, что уже учтены.\n- Отзови у внешнего подрядчика доступ к архиву.\n\n### Убрать лишнее осознанно\n\n- Отправь устаревшие черновики в корзину — и восстанови тот, что удалён по ошибке.\n- Удали папку с тестовыми загрузками безвозвратно, когда я подтвержу.\n- Покажи содержимое корзины, пока оно не вычищено.\n\n## Как меняется ваш Drive\n\n1. Всё в Drive — включая папки и объекты общих дисков — это **файл** с id. Имена не уникальны, поэтому инструменты работают по id, а дубли имён допустимы: перед созданием стоит поискать.\n2. «Удалить» означает **корзину**: обратимо, Google вычищает её примерно через 30 дней. Безвозвратное удаление минует корзину, забирает с собой поддеревья папок и живёт в сознательно отдельном инструменте.\n3. Google Docs, Sheets и Slides перемещаются, копируются, расшариваются, экспортируются и конвертируются как целые единицы. У сервера нет инструмента, который правит текст внутри документа или ячейки внутри таблицы.\n4. Запись никогда не повторяется после неопределённого сбоя: повторы после сетевых и `5xx` ошибок действуют только для чтения, поэтому копия, загрузка или новая папка не задвоятся у вас за спиной.\n\nВстроенная загрузка ограничена 5 МБ (файлы крупнее идут через resumable-сессию в `raw_request`), экспорт — 10 МБ по ограничению Drive API. Комментарии, созданные через API, нельзя привязать к конкретному месту в тексте документа.\n\n## Что может измениться\n\n| Операция | Что происходит | Граница подтверждения |\n|---|---|---|\n| Поиск, метаданные, скачивание, экспорт | Читает файлы и папки | Ничего не меняет |\n| Создание папки, копирование или загрузка | Добавляет файлы или заменяет содержимое | Меняет Drive |\n| Перемещение, переименование, обновление метаданных | Меняет расположение или свойства файла | Меняет файл |\n| Управление доступами | Выдаёт, меняет или отзывает доступ | Меняет, кто может открыть файл |\n| Управление комментариями | Создаёт, закрывает или удаляет ветки комментариев | Может уничтожить обсуждение |\n| Корзина и восстановление | Переносит файл в корзину или обратно | Обратимо ~30 дней |\n| Безвозвратное удаление | Стирает мимо корзины, включая поддеревья | Разрушительно |\n| Технический запрос API | Может вызвать метод API без отдельного инструмента | Потенциально разрушительно |\n\nКак AI-приложение просит подтверждение, определяет само приложение. Сервер помечает операции чтения, записи и удаления, чтобы оно отличило проверку от рабочего изменения.\n\n## Как получить доступ\n\nGoogle Drive требует OAuth 2.0: одного API-ключа недостаточно. Путей два, и первый не требует править конфигурационные файлы.\n\n### Подключение из диалога (рекомендуемый путь)\n\nСкажите «подключи Google Диск», и ассистент пройдёт флоу вместе с вами:\n\n1. `setup_instructions` выдаёт чек-лист: создать или выбрать проект Google Cloud, включить **Google Drive API**, настроить consent screen и создать OAuth-клиент типа **Desktop app**.\n2. Скачайте JSON этого клиента («Download JSON») и передайте ассистенту **путь** к файлу — `set_client` сохранит его с правами только для владельца. Секрет через переписку не проходит.\n3. `start_login` возвращает ссылку на согласие Google. Откройте её **на этой же машине** и подтвердите доступ: код возвращается на одноразовый слушатель `127.0.0.1` (PKCE), а не в чат.\n4. `finish_login` меняет код на токены и кладёт их в `~/.config/mcp-google-drive/credentials.json` (права 0600) и проверяет их реальным вызовом Google Drive API — так невключённый API ловится сразу.\n\nТокены перечитываются на каждый вызов, поэтому подключение действует немедленно — перезапускать AI-приложение не нужно. `auth_status` показывает состояние, `logout` отзывает токен и удаляет его.\n\n### Переменные окружения (CI и автоматические установки)\n\n1. Создайте или выберите проект Google Cloud и включите **Google Drive API**.\n2. Настройте OAuth consent screen и создайте OAuth-клиент типа **Desktop app**.\n3. Авторизуйте Google-аккаунт, с чьими файлами должен работать сервер. [OAuth 2.0 Playground](https://developers.google.com/oauthplayground) поможет получить refresh token, если включить **Use your own OAuth credentials**.\n4. Запросите самый узкий scope, который покрывает вашу задачу:\n\n   | Scope | Что даёт |\n   |---|---|\n   | `https://www.googleapis.com/auth/drive.readonly` | Инструменты только для чтения: поиск, метаданные, скачивание, экспорт и список общих дисков. |\n   | `https://www.googleapis.com/auth/drive.file` | Только файлы, созданные или открытые этим приложением, — достаточно для сценариев «загрузить и разложить» со своими файлами. |\n   | `https://www.googleapis.com/auth/drive` | Полный набор инструментов: доступы, корзина, удаление и комментарии к любым файлам. |\n\nСервер использует тот scope, с которым выпущен refresh token; вызов за его пределами завершается ошибкой `insufficientPermissions`.\n\nRefresh token OAuth-приложения в режиме Testing может истечь через семь дней. Для долгого доступа опубликуйте OAuth-приложение или используйте Internal-приложение в домене Workspace. Храните client secret и refresh token как пароли.\n\n## Конфигурация\n\nВсе переменные необязательные — без единой из них сервер подключается [из диалога](#подключение-из-диалога-рекомендуемый-путь).\n\n| Переменная | Обязательна | Описание |\n|---|---|---|\n| `GOOGLE_DRIVE_CLIENT_ID` | Нет* | OAuth client ID. |\n| `GOOGLE_DRIVE_CLIENT_SECRET` | Нет* | OAuth client secret. |\n| `GOOGLE_DRIVE_REFRESH_TOKEN` | Нет* | OAuth refresh token. |\n| `GOOGLE_DRIVE_ACCESS_TOKEN` | Нет* | Короткоживущая (~1 час) альтернатива OAuth-тройке. |\n| `GOOGLE_DRIVE_OAUTH_PORT` | Нет | Фиксированный порт loopback-слушателя для входа из диалога; нужен при пробросе портов по SSH. |\n| `GOOGLE_DRIVE_API_BASE` | Нет | Переопределяет базовый URL Google APIs. |\n| `GOOGLE_DRIVE_TIMEOUT_MS` | Нет | Тайм-аут одного запроса; по умолчанию `60000` мс. |\n| `GOOGLE_DRIVE_MAX_RETRIES` | Нет | Повторы временных ошибок; по умолчанию `3`. |\n\n\\* Передайте OAuth-тройку или access token.\n\nСовсем без учётных данных сервер всё равно стартует и завершает MCP-рукопожатие; первый вызов инструмента отвечает точным списком переменных, которые нужно задать, вместо мёртвого сервера.\n\n## Данные, лимиты и работа в фоне\n\n- **Запросы идут в Google Drive.** Локальный сервер обновляет OAuth-токены Google и вызывает Drive API. Анонимная телеметрия содержит ID установки, версию пакета, версии AI-клиента и платформы, а также имена инструментов — но не OAuth-токены, содержимое файлов, аргументы или промпты. Чтобы отключить её, задайте `ASKADS_TELEMETRY=0`.\n- **У Google есть квоты и лимиты размеров.** Загрузка через встроенный инструмент ограничена 5 МБ, экспорт — 10 МБ. При `429` сервер использует задержку; чтение также повторяется после сетевых и `5xx` ошибок, а запись после неопределённой ошибки не повторяется.\n- **С локальными файлами сервер осторожен.** Скачивание сохраняет только по абсолютным путям и не перезаписывает существующий файл без явного разрешения; ответ прямо в диалоге ограничен 100 КБ текста.\n- **Постоянного опроса нет.** Сервер работает только при вызове; между запросами никто не следит за вашим Drive. Если AI-приложение поддерживает задания по расписанию, оно может периодически проверять изменения.\n\n## Техническая документация\n\n- [Каталог MCP-возможностей](./docs/capabilities/index.md) — страницы по пользовательским задачам для каждого инструмента.\n- [Все инструменты и параметры](./docs/TOOLS.md)\n- [Документация по разработке](./docs/DEVELOPMENT.md)\n- [Документация по публикации](./docs/PUBLISHING.md)\n- [Справочник Google Drive API](https://developers.google.com/drive/api)\n\n## Поддержка\n\nНашли ошибку или не хватает сценария? [Создайте issue](https://github.com/A1-x-Tech/mcp-google-drive/issues) или напишите в [Telegram](https://t.me/a1_mcp).\n\n<br>\n\n<p align=\"center\">\n  <img src=\"https://github.com/ztemerbekov/a1-yandex-kit-skills/raw/main/assets/images/mona-hifive-yandex-kit-warm.gif\" alt=\"Две Моны дают пять\" width=\"256\">\n</p>\n\n<p align=\"center\">\n  Вы дочитали до конца!\n</p>\n","readmeFilename":"README.ru.md"}