Install
$ agentstack add mcp-nextstat-yacli Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 finding(s); flagged for manual review. · v0.1.0 How review works →
- • Prompt-injection patterns
- • Secret / credential exfiltration
- • Dangerous shell & filesystem operations
- • Untrusted network calls
- • Known-malicious package signatures
- high Pipes remote content directly into a shell (remote code execution).
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
yacli
CLI, MCP server и MCP Apps для Яндекс Почты, Календаря и Диска
Один аккуратный продуктовый интерфейс для терминала, ИИ-агентов и MCP-хостов.
Установка • Быстрый старт • Команды • Сценарии • MCP
yacli связывает Яндекс Почту, Календарь и Диск в один внятный интерфейс: в терминале, в агентских клиентах и внутри MCP Apps. Один бинарь закрывает повседневную ручную работу, агентские интеграции и составные сценарии вроде письмо → .ics → событие или файл → письмо.
CLI для ежедневной работы Почта, календарь, вложения, события и приватный Диск в одном бинаре и одном конфиге.
MCP для агентов Полноценный MCP-сервер с stdio, http, prompts, skills, resources, completions, roots и write-tools.
MCP Apps для UI-хостов Дашборд, deep links, prompts, браузер ресурсов и живые кросс-сервисные сценарии.
Письмо → вложение → файл Найти письмо, выгрузить нужное вложение и сохранить его локально без промежуточных скриптов.
Письмо → .ics → событие Разобрать приглашение из письма и сразу создать встречу в нужном календаре.
Файл → письмо Взять локальный файл, приложить его к письму и отправить через тот же интерфейс.
Установка
macOS и Linux
curl -fsSL https://raw.githubusercontent.com/NextStat/yacli/main/scripts/install.sh | sh
Windows
irm https://raw.githubusercontent.com/NextStat/yacli/main/scripts/install.ps1 | iex
Готовые сборки для macOS x86_64/arm64, Linux x86_64/arm64 и Windows x86_64 лежат в GitHub Releases.
Из исходников / обновление / private mirror
cargo install --path . # сборка из исходников
yacli update # обновить до последнего релиза
yacli update --check # проверить без установки
Для private release mirror:
export YACLI_UPDATE_BASE_URL='https://mirror.example.test/releases/download/v0.5.5'
yacli update --check
Быстрый старт
Запуск за минуту
curl -fsSL https://raw.githubusercontent.com/NextStat/yacli/main/scripts/install.sh | sh
yacli setup me@yandex.ru --calendar-app-password --client claude
После этого у вас сразу будут:
- локальный CLI для Почты, Календаря и Диска;
- MCP server для Claude, Codex, Gemini и других клиентов;
- prompts, embedded skills, resources и dashboard для MCP Apps;
- готовые кросс-сервисные сценарии без клея из скриптов.
- live onboarding checklist в Unified Home, чтобы добить недостающие шаги без гадания.
- terminal home screen через
yacli home, чтобы увидеть onboarding, workflows и последние действия в одном месте. - product health-check через
yacli doctorиresource://yacli/doctor, чтобы быстро понять, что ещё мешает readiness. - safe remediation через
yacli doctor --apply-safeи кнопкуApply safe fixesв Unified Home, чтобы автоматически закрыть безопасные локальные фиксы. - ranked next actions через
yacli nextиresource://yacli/next-actions, чтобы сразу видеть самые выгодные следующие шаги. - proactive suggestions через
yacli suggestиresource://yacli/suggestions, чтобы получать recovery / cleanup / undo подсказки из реальной activity history и live product signals.
В Unified Home эти suggestions теперь не только видны, но и ведут прямо в undo или канонический workflow/review path.
workflow showиresource://yacli/workflow/{workflow}теперь отдают server-drivenexecution.stateиexecution.available_actions, чтобы CLI, MCP и Apps видели один и тот же actionable lifecycle workflow:needs_input,review_ready,ready,recovery_ready,undo_ready,applied,undone.- Workflow panel в Apps теперь использует server-driven
execution.actionsдляnext action, так чтоconnect / review / resume / cleanup / undo / replayидут из одного канонического workflow contract, а не из UI-эвристик. - Для partial recovery
execution.actionsтеперь по возможности несёт точныйtool_name + tool_arguments, чтобы Apps могли открыть или применить retry-step без ручного прыжка в activity/replay shell command.
С чего начать
| Если вам нужно | Что делать | | --- | --- | | Пройти setup одним проходом | yacli setup me@yandex.ru --calendar-app-password --client claude | | Быстро подключить Почту и Диск | yacli add → yacli login | | Подключить Календарь | получить пароль приложения Яндекс ID → yacli login calendar --app-password | | Поставить MCP в Claude / Codex / Gemini | yacli mcp install --client | | Поднять локальный HTTP MCP | yacli mcp --transport http --listen 127.0.0.1:8787 |
Для агентских и headless-сценариев yacli login теперь работает в два шага без ломкого stdin-диалога:
yacli login
# => status=pending, authorization_url, resume_command
yacli login --code
yacli сохраняет pending PKCE session в локальном config dir и переиспользует её при втором вызове, поэтому код подтверждения больше не ломается из-за нового code_verifier.
Как получить пароль приложения для Календаря
- Откройте Пароли приложений Яндекс ID.
- Перейдите
Безопасность→Доступ к вашим данным→Пароли приложений. - Выберите тип
Календарь. - Задайте имя, например
yacli calendar, и скопируйте пароль.
Если не хотите хранить пароль локально:
export YACLI_CALENDAR_APP_PASSWORD=''
yacli login calendar --env-var YACLI_CALENDAR_APP_PASSWORD
В релизных сборках OAuth-токены и пароли приложений хранятся в системном keyring/keychain. В debug/test-сборках по умолчанию используется file backend, чтобы локальная разработка и cargo test не спамили keychain prompt-ами. Для явного override: export YACLI_SECRET_BACKEND=keyring или export YACLI_SECRET_BACKEND=file.
Проверьте, что всё работает
yacli home
yacli doctor
yacli doctor --apply-safe
yacli next
yacli suggest
yacli status
yacli mail list
yacli calendar calendars
yacli disk info
Живой сценарий в Claude Cowork
yacli уже тянет реальные составные задачи внутри агентского интерфейса, а не только отдельные команды.
Запрос в Claude Cowork:
> Создай событие "Ревью yacli v0.5" понедельник в 11:00 на 30 минут, отправь напоминание на почту, и создай папку на Диске для материалов
Что получилось:
- Событие создано в календаре на понедельник, 16 марта 2026,
11:00–11:30. - Напоминание на почту отправлено.
- Папка на Яндекс Диске подтверждена:
/yacli-v0.5-review.
Почему это важно: один запрос связывает сразу три surface yacli:
- календарь для создания события;
- почту для отправки напоминания;
- диск для подготовки рабочей папки.
Именно это и является продуктовой целью yacli: не просто “дать tools”, а довести реальные рабочие сценарии до одного понятного контракта для людей и агентов.
Повседневные команды
Почта
yacli mail folders
yacli mail list
yacli mail search "смета"
yacli mail read 1353
yacli mail reply 1353 "Принято, спасибо"
yacli mail forward 1353 person@example.com "Посмотрите, пожалуйста"
yacli mail send person@example.com "Синк" "Привет"
yacli mail send person@example.com "Счёт" "Во вложении файл" --attach ./invoice.pdf
yacli mail send person@example.com "Счёт" "Во вложении файл" --attach ./invoice.pdf --dry-run
yacli mail send-link person@example.com "Материалы" "Отправляю ссылку" --source ./archive.zip --path disk:/docs/archive/archive.zip
yacli mail send-link person@example.com "Материалы" "Отправляю ссылку" --source ./archive.zip --path disk:/docs/archive/archive.zip --dry-run
yacli mail send-published-link person@example.com "Материалы" "Отправляю ссылку" --public-url https://disk.yandex.ru/i/archive-link
yacli mail send-published-link person@example.com "Материалы" "Отправляю ссылку" --public-url https://disk.yandex.ru/i/archive-link --dry-run
yacli disk upload-link --source ./archive.zip --path disk:/docs/archive/archive.zip
yacli disk upload-link --source ./archive.zip --path disk:/docs/archive/archive.zip --dry-run
Вложения и приглашения:
yacli mail attachment export 1353 --index 1 --output ./invoice.pdf
yacli mail invite inspect 1353 --index 1
yacli mail invite create-event 1353 --index 1
- Число
1353— идентификатор письма изmail listилиmail search. --folder "Имя папки"для работы не с INBOX.--html,--cc,--bccдля HTML и копий.--attachможно указать несколько раз.--dry-runпоказывает review отправки без реального SMTP-вызова.- Если собранное письмо уже слишком тяжёлое для безопасной SMTP-отправки,
mail send --dry-runчестно рекомендует workflowsend-link-by-mail, а реальныйmail sendблокируется до сетевого шага с той же подсказкой. mail send-link— правильный flow для больших файлов: upload на Диск, publish ссылки и письмо со ссылкой в одном шаге.- Если у
mail send-linkуже случилсяupload + publish, а SMTP упал, команда возвращаетstatus=partialс готовыми recovery actions: повторить только mail-step черезmail send-published-link, вручную поделиться ссылкой или отозвать её. mail send-published-link— честный retry mail-step для уже опубликованной ссылки без повторного upload/publish.disk upload-link— правильный flow, когда нужно просто получить публичную ссылку без отправки письма.
Ещё примеры
yacli mail list --folder "Отправленные" --limit 20
yacli mail search "договор" --folder "Архив 2026"
yacli mail attachment export 1353 --name invoice.pdf --output ./invoice.pdf
yacli mail invite inspect 1353 --name invite.ics
yacli mail invite create-event 1353 --name invite.ics --calendar team --event-index 2
yacli mail send person@example.com "Счет" "Отправляю счет" --cc boss@example.com
yacli mail send person@example.com "Счет" "Отправляю счет" --attach ./invoice.pdf --attach ./spec.docx
yacli mail send-link person@example.com "Материалы" "Отправляю ссылку" --source ./archive.zip --path disk:/docs/archive/archive.zip
Календарь
yacli calendar calendars
yacli calendar events
yacli calendar events 2026-03-14 2026-03-20 --limit 20
yacli calendar create "Синк команды" 2026-03-14T09:00:00Z 2026-03-14T10:00:00Z
yacli calendar create "Синк команды" 2026-03-14T09:00:00Z 2026-03-14T10:00:00Z --dry-run
yacli calendar delete
- Без дат
eventsпоказывает ближайшие 30 дней. --calendarдля работы не с default-календарём.calendar create --dry-runпоказывает review события без реального CalDAV PUT.
Диск
yacli disk info
yacli disk list
yacli disk list disk:/docs --limit 50
yacli disk mkdir disk:/docs/archive
yacli disk upload ./report.pdf disk:/docs/archive/report.pdf
yacli disk upload ./report.pdf disk:/docs/archive/report.pdf --dry-run
yacli disk upload-link --source ./report.pdf --path disk:/docs/archive/report.pdf
yacli disk upload-link --source ./report.pdf --path disk:/docs/archive/report.pdf --dry-run
yacli disk download disk:/docs/archive/report.pdf --output ./report.pdf
yacli disk publish disk:/docs/archive/report.pdf
yacli disk publish disk:/docs/archive/report.pdf --dry-run
yacli disk unpublish disk:/docs/archive/report.pdf
yacli disk unpublish disk:/docs/archive/report.pdf --dry-run
disk upload --dry-runпоказывает review файла и remote path без запроса upload ticket и без реальной загрузки.disk upload-linkзакрывает human flowлокальный файл -> Диск -> публичная ссылкав одном шаге;--dry-runпоказывает review без upload/publish.disk downloadскачивает приватный файл с того же robust transfer contract: progress, retry, stats и activity replay.disk publish --dry-runпоказывает, что именно будет опубликовано и уже есть ли у ресурсаpublic_url/public_key, без реального publish.disk publishпубликует приватный ресурс и возвращаетpublic_url/public_key, чтобы большой файл можно было не слать вложением, а отдать ссылкой.disk unpublish --dry-runпоказывает, какая публичная ссылка будет снята, без реального revoke.disk unpublishотзывает публичную ссылку и возвращает, какаяpublic_url/public_keyбыли сняты.- Реальные upload/download transfer на Диск по умолчанию ждут завершения без общего short timeout на тело запроса; при необходимости жёсткий потолок можно задать через
YACLI_DISK_UPLOAD_TIMEOUT_SECSиYACLI_DISK_DOWNLOAD_TIMEOUT_SECS. - В CLI table-mode большие upload/download показывают живой progress и throughput в stderr, не ломая JSON/MCP contract.
- При transient сетевых сбоях transfer автоматически делает несколько безопасных retry-попыток: download стартует заново, upload получает новый upload ticket и повторяет отправку целиком.
disk public downloadтеперь умеет resumable download через.part+ HTTPRange, если download endpoint поддерживает partial content; итоговый payload показываетresumed_from_bytes,attemptsиelapsed_ms.
Журнал действий
yacli activity list
yacli activity list --limit 20
yacli activity show
yacli activity undo
- В журнал попадают только успешные реальные write-операции.
--dry-runв журнал не записывается.- У каждой записи есть
replay_command, который можно повторить или передать агенту. - Для честно обратимых действий запись дополнительно несёт
undo_command, аyacli activity undoвыполняет штатный rollback.
Публичный Диск
yacli disk public show --public-key https://disk.yandex.ru/i/WhGpLnQWR9efCA
yacli disk public download --public-key https://disk.yandex.ru/i/WhGpLnQWR9efCA --output ./sample.pdf
Кросс-сервисные сценарии
| Skill / workflow | Что связывает | Пример запроса | | --- | --- | --- | | daily-briefing | Почта + календарь | «Собери утреннюю сводку по письмам и встречам» | | reply-with-context | Почта + календарь | «Ответь на письмо с учётом моего расписания» | | attachment-to-disk | Почта → файл | «Найди письмо и сохрани вложение в файл» | | send-file-by-mail | Файл → почта | «Отправь файл с диска по почте» | | send-link-by-mail | Файл → Диск → почта | «Загрузи большой файл на Диск и отправь ссылку по почте» | | publish-file-link | Файл → Диск | «Загрузи файл на Диск и дай публичную ссылку» | | revoke-public-link | Диск | «Отзови публичную ссылку у файла на Диске» | | invite-to-calendar | Почта → календарь | «Найди приглашение и добавь встречу в календарь» |
# утренняя сводка
yacli mail list --limit 10
yacli calendar events
# ответ с учётом расписания
yacli mail read 1353
yacli calendar events 2026-03-14 2026-03-16
yacli mail reply 1353 "Подтверждаю, это окно подходит"
# большой файл -> ссылка -> письмо
yacli mail send-link person@example.com "Материалы" "Отправляю ссылку" --source ./archive.zip --path disk:/docs/archive/archive.zip
# локальный файл -> публичная ссылка
yacli disk upload-link --source ./archive.zip --path disk:/docs/archive/archive.zip
# отозвать публичную ссылку
yacli disk unpublish disk:/docs/archive/archive.zip
# сохранить вложение
yacli mail attachment export 1353 --name invoice.pdf --output ./invoice.pdf
# отправить файл по почте
yacli mail send person@example.com "Счёт" "Во вложении файл" --attach ./invoice.pdf
# приглашение → событие
yacli mail invite inspect 1353 --index 1
yacli mail invite create-event 1353 --index 1 --calendar team
Для MCP-клиентов те же сценарии доступны через prompts/get и resource://yacli/skill/*.
Несколько адресов
yacli add personal@yandex.ru
yacli login
yacli add work@company.ru work
yacli use work
yacli login
yacli mail list --account personal
yacli mail search "счет" --account work
У каждого адреса свои токены и настройки. use переключает текущую учётную запись, --account обращается к конкретной.
Почему yacli
| Surface | Что это даёт | | --- | --- | | Один runtime | Почта, календарь и диск живут в одном бинаре, одном конфиге и одном агентском контракте. | | Apps-first MCP | Не только too
…
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: NextStat
- Source: NextStat/yacli
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.