AgentStack
MCP unreviewed MIT Self-run

Yacli

mcp-nextstat-yacli · by NextStat

CLI и MCP Apps-сервер для Яндекс Почты, Календаря и Диска для людей и AI-агентов

No reviews yet
0 installs
6 views
0.0% view→install

Install

$ agentstack add mcp-nextstat-yacli

Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 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.

View the full security report →

Reliability & compatibility

Not yet reviewed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.

Preview Execution monitoring

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 →
Are you the author of Yacli? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

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-driven execution.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 addyacli 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.

Как получить пароль приложения для Календаря

  1. Откройте Пароли приложений Яндекс ID.
  2. Перейдите БезопасностьДоступ к вашим даннымПароли приложений.
  3. Выберите тип Календарь.
  4. Задайте имя, например 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 минут, отправь напоминание на почту, и создай папку на Диске для материалов

Что получилось:

  1. Событие создано в календаре на понедельник, 16 марта 2026, 11:00–11:30.
  2. Напоминание на почту отправлено.
  3. Папка на Яндекс Диске подтверждена: /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 честно рекомендует workflow send-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 + HTTP Range, если 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.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.