MIREA Lecture Assistant MCP
# MIREA Lecture Assistant MCP
Отдельный необязательный MCP-сервер для настройки и диагностики
[Lecture Assistant](https://github.com/vladimir-mezh/mirea-lecture-assistant).
У сервера свои версии и релизы: текущая версия **0.2.0**, протокол приложения **1**.
В Lecture Assistant нет встроенной нейронки или чата.
## Установка на Windows
В Lecture Assistant 0.2.28+ откройте вкладку **MCP**, нажмите «Скачать и установить»
и включите «Разрешить локальное MCP-подключение». Скопируйте конфигурацию в
ИИ-клиент с поддержкой локального MCP/stdio. Python на пользовательском ПК не нужен.
Клиент запускает `McpLauncher.exe`, который выбирает установленную текущую версию.
При обновлении переподключите MCP в клиенте: существующий процесс не заменяется.
Приложение и MCP обновляются независимо. Обновление Lecture Assistant не трогает
MCP: тот лежит в профиле (`%LOCALAPPDATA%\MireaLectureAssistant\mcp`). Обновление
MCP не трогает приложение. Старые версии MCP приложение удаляет само, как только
ИИ-клиент перестаёт их использовать. Новый `McpLauncher.exe` ставится, даже если
старый сейчас запущен: старый переименовывается и удаляется позже. Временные папки `%TEMP%\_MEI…`, которые остаются, когда клиент
закрывает MCP принудительно, приложение тоже удаляет (Lecture Assistant 0.2.29+). Для удаления
старых версий нужен Lecture Assistant 0.2.28+.
По умолчанию доступны только чтение и диагностика. Чтобы ИИ мог менять настройки,
включите отдельное разрешение на вкладке MCP. Несохранённые изменения пользователя
не перезаписываются. Входы и пароли вводятся человеком в самом приложении.
## Инструменты
| Инструмент | Действие |
| --- | --- |
| `get_status` | Версия приложения, состояние сканера, разрешение изменений |
| `get_settings` | Несекретные настройки и схема допустимых значений |
| `get_schedule` | Уже загруженное расписание, без обращения к сайтам |
| `get_subject_rules` | Правила AUTO/ASK/IGNORE |
| `update_settings` | Изменить разрешённые настройки по просьбе пользователя |
| `set_subject_rule` | Настроить существующий предмет по просьбе пользователя |
| `check_health` | Работает ли приложение сейчас: вердикт, проблемы и что поможет; при сбое — проверка сети и VPN |
| `wait_and_check` | То же через 0–120 секунд, чтобы увидеть, помогла ли починка |
| `repair` | Починка: повторный вход, обновить расписание, переоткрыть комнату, перезапустить браузер или сканер. Нужно разрешение «чинить» в приложении |
| `get_recent_problems` | Последние ошибки журнала: только время и названия событий |
| `get_attendance_history` | Последние QR-события и отмеченные пары |
| `get_vpn_help` | Как пропустить МИРЭА мимо VPN, с готовыми файлами |
| `report_fix` | Отчёт о починке: приложение удаляет личные данные и отправляет его разработчику |
Готовые инструкции (prompts): **«Проверить и починить приложение»** (`duty_check`) и
**«Дежурство на сегодняшних парах»** (`setup_lecture_watch`). Вторая годится для клиента,
который умеет отложенные задачи: он сам поставит проверки на +5 и +20 минут каждой пары.
Проще включить «ИИ-дежурного» на вкладке MCP в приложении (0.2.32+). Тогда приложение
само проверяет пары и зовёт Codex или Claude Code только при сбое.
Новые инструменты требуют Lecture Assistant 0.2.32+; старое приложение вежливо попросит обновиться.
Нет инструментов для паролей, кодов входа, QR, отправки отметок/чатов,
произвольного SQL, файлов или команд оболочки. Сервер не читает базу/журналы
приложения и Диспетчер учётных данных. Наличие процесса не означает успешный захват.
## Подключение и статусы
Приложение слушает только `127.0.0.1`, с отдельным случайным ключом и новым портом
на каждый запуск. Локальный файл `mcp-connection.json` содержит ключ подключения;
его **нельзя публиковать**. В конфигурации ИИ-клиента ключей нет.
Веб-источники и запросы без ключа отклоняются. HTTP-прокси для локальной связи
не используется. После перезапуска приложения сервер перечитывает ключ и порт.
MCP-процесс поддерживает heartbeat. До первого вызова инструмента вкладка показывает
«ожидает первого запроса ИИ», после вызова — «подключён». Отключённый процесс
исчезает из статуса; при аварийном завершении — не позднее 35 секунд.
Это не попытка угадать, какая модель/чат открыты на компьютере.
## Разработка и релизы
```powershell
python -m venv .venv
.venv/Scripts/python -m pip install -e . pytest pyinstaller
.venv/Scripts/python -m pytest
.venv/Scripts/python scripts/package.py
```
Сервер использует [официальный Python SDK MCP](https://github.com/modelcontextprotocol/python-sdk/tree/v1.x)
(поддерживаемую линию 1.x).
Не импортирует код Lecture Assistant. Расширять инструменты можно независимо,
используя совместимый локальный API v1. Изменение самого API требует поддержки
со стороны приложения, но добавление инструментов поверх имеющегося API — нет.
Релиз выпускается сам, когда в `main` меняется версия в `src/mirea_assistant_mcp/__init__.py` (и в `pyproject.toml`). Каждый релиз публикует Windows ZIP и `.sha256`. ZIP включает два exe, README
и manifest с версией, протоколом и контрольными суммами exe, а также лицензию. Приложение проверяет
источник, SHA-256, совместимость, размеры и состав архива; произвольные пути
из архива не извлекаются. Предыдущая версия остаётся, пока её использует работающий клиент.
## Лицензия
MIT. Это пользовательское ПО, не официальный сервис университета.
TDQS
Scored across 13 tools
Most tools target clearly distinct actions: health check, repair lifecycle, logs, schedule, settings, attendance, and subject rules. Some boundaries are naturally close—check_health, get_status, and get_recent_problems all relate to app health—but descriptions distinguish their scope well.
The set mostly follows a predictable snake_case verb_noun pattern: get_*, set_*, update_*, check_health, wait_and_check, report_fix. There are minor deviations like the single verb 'repair' and the compound 'wait_and_check', but the convention remains readable and consistent overall.
With 13 tools, the server is well-scoped for a lecture assistant covering diagnostics, repair, settings, schedule, attendance, and subject rules. Each tool appears to earn its place without obvious redundancy or bloat.
The surface covers the important lifecycle: health check, repair initiation, waiting, reporting, logs, VPN help, schedule/settings/status reads, and subject-rule read/write. Minor gaps remain—e.g., no deletion or listing of all subject rules separately—but core workflows are well supported.