{"_id":"@a1-x-tech/mcp-google-slides","_rev":"3-2b48ff7e455466626db2789faae34cf6","name":"@a1-x-tech/mcp-google-slides","dist-tags":{"latest":"1.0.0"},"versions":{"0.1.0":{"name":"@a1-x-tech/mcp-google-slides","version":"0.1.0","keywords":["mcp","model-context-protocol","google","google-slides","slides","presentations","claude","cursor","codex"],"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","_id":"@a1-x-tech/mcp-google-slides@0.1.0","maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"homepage":"https://github.com/A1-x-Tech/mcp-google-slides#readme","bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-slides/issues"},"bin":{"mcp-google-slides":"dist/index.js"},"dist":{"shasum":"51fbd7ef8a80c7236f17b112acf9fac836aca04e","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-slides/-/mcp-google-slides-0.1.0.tgz","fileCount":20,"integrity":"sha512-s8kH0Z2P6y/aDAbwQslDiuqReUaTS8eQR4ExfEI727K5g8HkldnvGAlkUCt4IbFJOSJ3DE+pACF3Hm0MIC1VEQ==","signatures":[{"sig":"MEUCIQDX4WyQcl0GDn3j1EW+Q6r7OXpiTEIJVsRIF/oxfncnkgIgErqXAZsorHJ3ulprBekQt5hSZLKZITA5ZMKnwdhwQvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153359},"type":"module","engines":{"node":">=20"},"gitHead":"a63f3d93105f6f78e3a77c1ae9b7926bd92929ee","mcpName":"io.github.A1-x-Tech/mcp-google-slides","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-slides.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Slides API — create and edit presentations, slides, text, shapes, tables and images, manage speaker notes, comments, thumbnails and export. 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-slides_0.1.0_1788054585725_0.19588486631131286","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@a1-x-tech/mcp-google-slides","version":"0.2.0","keywords":["mcp","model-context-protocol","google","google-slides","slides","presentations","claude","cursor","codex"],"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","_id":"@a1-x-tech/mcp-google-slides@0.2.0","maintainers":[{"name":"gistrec","email":"gistrec@gmail.com"}],"homepage":"https://github.com/A1-x-Tech/mcp-google-slides#readme","bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-slides/issues"},"bin":{"mcp-google-slides":"dist/index.js"},"dist":{"shasum":"024f4df61c65efb7757951d9b34acd1018cab9d6","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-slides/-/mcp-google-slides-0.2.0.tgz","fileCount":21,"integrity":"sha512-5segMKvKMTj1npSymKN/Bm8xNppl5hrNU/kT5+2W9/evAGyPoTCgrruHjVAfjNRMLgIKBUbsczYqQjZ9injaOQ==","signatures":[{"sig":"MEUCIDdYXVrhUMpxXEXeCTzmV/r2mVXAOcUQ30C02txjHJB2AiEAgKItG/28hc0HgmgOS//FQqMs8wpBbtViJ57A6qi2y2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCIVJg9gLw+Uhpi33VackNXchNYvt3hVyFlyG8Fw6m8nQIgDcoPBNxXDDjyxCl1qQUORzZ5Jb8NtaIi+5FdPvn4qEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":160481},"type":"module","engines":{"node":">=20"},"gitHead":"4cd484ab59e292705413762e2d5161bde01c212b","mcpName":"io.github.A1-x-Tech/mcp-google-slides","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-slides.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Slides API — create and edit presentations, slides, text, shapes, tables and images, manage speaker notes, comments, thumbnails and export. 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-slides_0.2.0_1789943281272_0.9939314376417292","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"_id":"@a1-x-tech/mcp-google-slides@1.0.0","bin":{"mcp-google-slides":"dist/index.js"},"bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-slides/issues"},"dist":{"shasum":"8ec552ce632c0d0409da5e953c12bf40373562ad","tarball":"https://registry.npmjs.org/@a1-x-tech/mcp-google-slides/-/mcp-google-slides-1.0.0.tgz","fileCount":21,"integrity":"sha512-CGfk2UhbBsFF56ieaSjnkNdKAqRMKD58wZF2hd/4L/N5GE88HCRIhRU50GgbAeVIP0WYy9TOYtNBjtjNIxiOCQ==","signatures":[{"sig":"MEYCIQC067z7obqNTHHdzUxqT0y9UneqJOHAdt+xNSoSTTl2dAIhAJxzehXRqnT0E5U7g9yjUKpe0a8aZ2GfUQQDK401tCxl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDHTOj8OCf1iyYWuuzpHWMDat5Tj3Ha2pDeQS2xY2kyaAIgDvM8LDTtjWuwiPaVOsx1PrQC114dIt+/0pr0zvdz2Q0="}],"unpackedSize":160481},"name":"@a1-x-tech/mcp-google-slides","type":"module","author":{"name":"gistrec","email":"gistrec@gmail.com"},"engines":{"node":">=20"},"gitHead":"19af2f901b41e5d105df2a12513c4e786b0cb3d0","license":"MIT","mcpName":"io.github.A1-x-Tech/mcp-google-slides","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-slides#readme","keywords":["mcp","model-context-protocol","google","google-slides","slides","presentations","claude","cursor","codex"],"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-slides.git","type":"git"},"_npmVersion":"11.12.1","description":"MCP server for the Google Slides API — create and edit presentations, slides, text, shapes, tables and images, manage speaker notes, comments, thumbnails and export. 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-slides_1.0.0_1790203309689_0.8063187385467077"}}},"time":{"created":"2026-08-30T01:49:45.618Z","modified":"2026-09-23T22:41:49.989Z","0.1.0":"2026-08-30T01:49:45.861Z","0.2.0":"2026-09-20T22:28:01.376Z","1.0.0":"2026-09-23T22:41:49.795Z"},"bugs":{"url":"https://github.com/A1-x-Tech/mcp-google-slides/issues"},"author":{"name":"gistrec","email":"gistrec@gmail.com"},"license":"MIT","homepage":"https://github.com/A1-x-Tech/mcp-google-slides#readme","keywords":["mcp","model-context-protocol","google","google-slides","slides","presentations","claude","cursor","codex"],"repository":{"url":"git+https://github.com/A1-x-Tech/mcp-google-slides.git","type":"git"},"description":"MCP server for the Google Slides API — create and edit presentations, slides, text, shapes, tables and images, manage speaker notes, comments, thumbnails and export. 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 Slides MCP\n\n[English](./README.md) | **Русский**\n\n[![npm](https://img.shields.io/npm/v/%40a1-x-tech%2Fmcp-google-slides)](https://www.npmjs.com/package/@a1-x-tech/mcp-google-slides)\n[![CI](https://github.com/A1-x-Tech/mcp-google-slides/actions/workflows/ci.yml/badge.svg)](https://github.com/A1-x-Tech/mcp-google-slides/actions/workflows/ci.yml)\n[![Glama](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-slides/badges/score.svg)](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-slides)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)\n\n**A1 Google Slides MCP** позволяет AI-приложению создавать и редактировать презентации Google Slides на естественном языке. Можно собрать презентацию, добавить и переставить слайды, написать и оформить текст, разместить фигуры, изображения и таблицы, вести заметки докладчика, разобрать комментарии и выгрузить результат в PDF или PPTX.\n\nСервер работает с Google Slides API через ваш Google-аккаунт. Всё внутри презентации адресуется явными object id, а ограничения Slides API сервер называет прямо, вместо того чтобы делать вид, будто с презентацией возможно всё.\n\n- **32 инструментов.** Проверка презентаций и страниц, редактирование слайдов, текста, фигур, изображений и таблиц, заметки докладчика и комментарии, миниатюры и экспорт файлов.\n- **Подключение из диалога.** Скажите «подключи Google Презентации»: сервер проведёт через создание OAuth-клиента, поймает редирект Google на `127.0.0.1` с PKCE и сам сохранит токены — без конфигов и перезапуска.\n- **Правки атомарны.** Изменения идут через `batchUpdate` API: один неверный запрос отменяет весь пакет, поэтому презентация не остаётся отредактированной наполовину.\n- **Ваш Drive недосягаем.** Комментарии, экспорт и загрузка локальных изображений используют Drive API строго для одного файла презентации — инструментов, чтобы перечислять, расшаривать, переименовывать или удалять файлы Drive, нет.\n- **Минимальные scope Google.** Нужен `presentations`; scope Drive требуются только для локальных изображений, комментариев и экспорта.\n\nНачните с запроса, который только читает данные:\n\n> Покажи слайды квартального отчёта и что на каждом из них.\n\n[Подключить сервер](#быстрый-старт) · [Посмотреть сценарии](#что-можно-поручить) · [Открыть техническую документацию](#техническая-документация)\n\n---\n\n## Увидеть работу за минуту\n\n> **Вы:** Перечисли слайды презентации с обзором Q3 и что на каждом.\n>\n> **Ассистент:** Показывает компактную опись: позицию каждого слайда, его макет и элементы с видимым текстом. Ничего не меняется.\n>\n> **Вы:** Подготовь новый слайд после повестки с заголовком «Roadmap» и ключевыми датами в теле.\n>\n> **Ассистент:** Показывает целевую презентацию, макет и предлагаемый текст, затем запрашивает подтверждение перед добавлением.\n>\n> **Вы:** Подтверждаю.\n>\n> **Ассистент:** Добавляет слайд и заполняет его плейсхолдеры. Остальные слайды он не трогает.\n\n## Содержание\n\n- [Быстрый старт](#быстрый-старт)\n- [Что можно поручить](#что-можно-поручить)\n- [Как меняется презентация](#как-меняется-презентация)\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**В приложении:** откройте **Settings → MCP servers**, нажмите **Add server**, выберите **STDIO**, укажите команду `npx -y @a1-x-tech/mcp-google-slides@latest` и переменные окружения `GOOGLE_SLIDES_CLIENT_ID`, `GOOGLE_SLIDES_CLIENT_SECRET`, `GOOGLE_SLIDES_REFRESH_TOKEN`, затем нажмите **Save**, потом **Restart**.\n\n**В командной строке:**\n\n```bash\ncodex mcp add google-slides \\\n  -- npx -y @a1-x-tech/mcp-google-slides@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-slides \\\n  -- npx -y @a1-x-tech/mcp-google-slides@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-slides\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-slides@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-slides\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-slides@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-slides\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@a1-x-tech/mcp-google-slides@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- Прочитай заметки докладчика к пятому слайду.\n- Отрисуй миниатюру титульного слайда.\n\n### Собрать и переставить слайды\n\n- Создай презентацию для обзора Q3.\n- Добавь слайд «Roadmap» после повестки, продублируй слайд-шаблон, перенеси итоги в конец.\n- Вставь изображение по URL или из локального файла, добавь таблицу 4×3, создай текстовый блок или скруглённый прямоугольник с подписью.\n\n### Написать и отшлифовать текст\n\n- Помести этот текст в плейсхолдер заголовка и выдели дедлайн жирным красным.\n- Замени «Q2» на «Q3» по всей презентации.\n- Сократи заметки докладчика к третьему слайду.\n\n### Разобрать и передать дальше\n\n- Перечисли открытые ветки комментариев и ответь на первую, закрыв её как решённую.\n- Удали черновой слайд, который больше не нужен.\n- Выгрузи презентацию в PDF или PPTX для того, у кого нет доступа к Google.\n\n## Как меняется презентация\n\n1. `create_presentation` создаёт **презентацию** с одним титульным слайдом; при создании учитывается только название.\n2. Всё внутри презентации — слайды, фигуры, изображения, таблицы — адресуется **object id**. `list_slides` — компактная опись, с которой стоит начинать перед любой правкой.\n3. Правки идут через атомарный `batchUpdate` API: один неверный запрос отменяет весь пакет, поэтому ничего не применяется наполовину.\n4. Входные значения инструментов — в пунктах; API хранит EMU (1 pt = 12700 EMU). Сервер конвертирует в обе стороны.\n\nSlides API не может удалить, переименовать или расшарить файл презентации — это файловые операции Drive за пределами этого сервера. Он не может импортировать тему (только применять макеты, которые уже есть в презентации) и не может привязать новый комментарий к конкретному слайду. Экспорт ограничен 10 МБ, а ссылки на миниатюры истекают примерно через 30 минут.\n\n## Что может измениться\n\n| Операция | Что происходит | Граница подтверждения |\n|---|---|---|\n| Проверка презентации, страницы, заметок или комментариев; миниатюра; экспорт файла | Читает данные, пишет только локальные файлы | Ничего не меняет |\n| Создание презентации | Добавляет новую презентацию в ваш Google-аккаунт | Меняет Google Slides |\n| Добавление, дублирование или перемещение слайдов; создание фигур, изображений, таблиц | Добавляет или переставляет содержимое презентации | Меняет презентацию |\n| Установка или оформление текста, замена изображения, трансформация элемента, правка заметок докладчика или структуры таблицы | Перезаписывает существующее содержимое | Меняет презентацию |\n| Поиск и замена по всей презентации | Меняет все совпадения разом | Меняет презентацию целиком |\n| Удаление слайда, элемента или ветки комментариев | Удаляет содержимое без отмены через API | Разрушительно |\n| Технический `batchUpdate` или технический запрос API | Может вызвать метод API без отдельного инструмента | Потенциально разрушительно |\n\nКак AI-приложение просит подтверждение, определяет само приложение. Сервер помечает операции чтения, записи и удаления, чтобы оно отличило проверку от рабочего изменения.\n\n## Как получить доступ\n\nGoogle Slides требует OAuth 2.0: одного API-ключа недостаточно. Путей два, и первый не требует править конфигурационные файлы.\n\n### Подключение из диалога (рекомендуемый путь)\n\nСкажите «подключи Google Презентации», и ассистент пройдёт флоу вместе с вами:\n\n1. `setup_instructions` выдаёт чек-лист: создать или выбрать проект Google Cloud, включить **Google Slides 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-slides/credentials.json` (права 0600).\n\nТокены перечитываются на каждый вызов, поэтому подключение действует немедленно — перезапускать AI-приложение не нужно. `auth_status` показывает состояние, `logout` отзывает токен и удаляет его.\n\n### Переменные окружения (CI и автоматические установки)\n\n1. Создайте или выберите проект Google Cloud и включите **Google Slides API**. Также включите **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   ```text\n   https://www.googleapis.com/auth/presentations\n   https://www.googleapis.com/auth/drive.file\n   ```\n\n   `presentations` покрывает все чтения и записи Slides. `drive.file` покрывает загрузку локальных изображений, а также комментарии и экспорт для презентаций, созданных через это приложение; запросите более широкий `https://www.googleapis.com/auth/drive`, если комментарии или экспорт нужны для произвольных презентаций.\n\nRefresh token OAuth-приложения в режиме Testing может истечь через семь дней. Для долгого доступа опубликуйте OAuth-приложение или используйте Internal-приложение в домене Workspace. Храните client secret и refresh token как пароли.\n\n## Конфигурация\n\nВсе переменные необязательные — без единой из них сервер подключается [из диалога](#подключение-из-диалога-рекомендуемый-путь).\n\n| Переменная | Обязательна | Описание |\n|---|---|---|\n| `GOOGLE_SLIDES_CLIENT_ID` | Нет* | OAuth client ID. |\n| `GOOGLE_SLIDES_CLIENT_SECRET` | Нет* | OAuth client secret. |\n| `GOOGLE_SLIDES_REFRESH_TOKEN` | Нет* | OAuth refresh token. |\n| `GOOGLE_SLIDES_ACCESS_TOKEN` | Нет* | Короткоживущая (~1 ч) альтернатива OAuth-тройке. |\n| `GOOGLE_SLIDES_OAUTH_PORT` | Нет | Фиксированный порт loopback-слушателя для входа из диалога; нужен при пробросе портов по SSH. |\n| `GOOGLE_SLIDES_API_BASE` | Нет | Переопределяет базовый URL Google Slides API. |\n| `GOOGLE_SLIDES_DRIVE_API_BASE` | Нет | Переопределяет базовый URL Google Drive API (внутренняя зависимость: комментарии, экспорт, загрузка изображений). |\n| `GOOGLE_SLIDES_TIMEOUT_MS` | Нет | Тайм-аут одного запроса; по умолчанию `60000` мс. |\n| `GOOGLE_SLIDES_MAX_RETRIES` | Нет | Повторы временных ошибок; по умолчанию `3`. |\n\n\\* Передайте OAuth-тройку или access token.\n\n## Данные, лимиты и работа в фоне\n\n- **Запросы идут в Google Slides.** Локальный сервер обновляет OAuth-токены Google и вызывает Slides API; комментарии, экспорт и загрузка локальных изображений проходят через Drive API строго для одного файла презентации. Анонимная телеметрия содержит ID установки, версию пакета, версии AI-клиента и платформы и имена инструментов — но не OAuth-токены, содержимое презентаций, аргументы или промпты. Чтобы отключить её, задайте `ASKADS_TELEMETRY=0`.\n- **У Google есть лимиты частоты.** При `429` сервер использует задержку; чтение также повторяется после сетевых и `5xx` ошибок, а запись после неопределённой ошибки не повторяется. Миниатюры расходуют более дорогую квоту чтения.\n- **Постоянного опроса нет.** Сервер работает только при вызове. Между вызовами за презентацией никто не следит; если AI-приложение поддерживает задания по расписанию, оно может периодически её проверять.\n\n## Техническая документация\n\n- [Каталог MCP-возможностей](./docs/capabilities/index.md) — страницы по пользовательским задачам для каждого инструмента.\n- [Все инструменты и параметры](./docs/TOOLS.md)\n- [Документация по разработке](./docs/DEVELOPMENT.md)\n- [Документация по публикации](./docs/PUBLISHING.md)\n- [Справочник Google Slides API](https://developers.google.com/slides/api)\n\n## Поддержка\n\nНашли ошибку или не хватает сценария? [Создайте issue](https://github.com/A1-x-Tech/mcp-google-slides/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"}