Skip to main content
Glama
README.md
# 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

A3.6/5.0

Scored across 6 tools

Disambiguation4/5

Each tool has a primarily distinct purpose: reads cover status, settings, schedule, and subject rules, while writes cover settings and subject rules. There is minor overlap between update_settings and set_subject_rule because both modify application configuration, but the descriptions clarify the boundaries.

Naming Consistency4/5

The set uses consistent snake_case and a predictable get_ prefix for read operations. Minor deviations exist in write verbs (update_settings vs set_subject_rule) and number agreement (get_subject_rules vs set_subject_rule), but the overall pattern remains readable.

Tool Count5/5

Six tools is well-scoped for the server's purpose of reading app status/configuration and managing settings and subject rules. No tool appears redundant, and the surface is neither thin nor bloated.

Completeness3/5

The read and configuration-write surface is mostly covered, but there is no way to refresh the schedule cache or trigger lecture-opening actions mentioned in the domain. Subject rules can only be set for existing subjects, with no broader subject lifecycle management.

Maintenance

ActivityMaintained
ResponsivenessNo issues