MIREA Lecture Assistant MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MIREA Lecture Assistant MCPПроверь статус Lecture Assistant и покажи загруженное расписание"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MIREA Lecture Assistant MCP
Отдельный необязательный MCP-сервер для настройки и диагностики 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. Несохранённые изменения пользователя не перезаписываются. Входы и пароли вводятся человеком в самом приложении.
Related MCP server: MCP IT Ops Server
Инструменты
Инструмент | Действие |
| Версия приложения, состояние сканера, разрешение изменений |
| Несекретные настройки и схема допустимых значений |
| Уже загруженное расписание, без обращения к сайтам |
| Правила AUTO/ASK/IGNORE |
| Изменить разрешённые настройки по просьбе пользователя |
| Настроить существующий предмет по просьбе пользователя |
| Работает ли приложение сейчас: вердикт, проблемы и что поможет; при сбое — проверка сети и VPN |
| То же через 0–120 секунд, чтобы увидеть, помогла ли починка |
| Починка: повторный вход, обновить расписание, переоткрыть комнату, перезапустить браузер или сканер. Нужно разрешение «чинить» в приложении |
| Последние ошибки журнала: только время и названия событий |
| Последние QR-события и отмеченные пары |
| Как пропустить МИРЭА мимо VPN, с готовыми файлами |
| Отчёт о починке: приложение удаляет личные данные и отправляет его разработчику |
Готовые инструкции (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 секунд. Это не попытка угадать, какая модель/чат открыты на компьютере.
Разработка и релизы
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 (поддерживаемую линию 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. Это пользовательское ПО, не официальный сервис университета.
Available Tools
6 toolsget_scheduleA
Read cached schedule, without refreshing websites or opening lectures.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden and does disclose the key trait: it performs no external refresh and opens nothing. However, it omits staleness/freshness guarantees, permission needs, and return format, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clause with the verb and the crucial negative constraint front-loaded, and no filler. The phrasing 'opening lectures' is slightly idiosyncratic but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description covers the essential fact that nothing external is touched, but an agent still cannot tell what the returned schedule looks like or how stale the cache may be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema leaves nothing to explain and the baseline of 4 applies. The description adds no param detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (cached schedule), and the word 'cached' signals it is the non-refreshing variant. It does not explicitly differentiate itself from siblings like get_status or get_settings, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without refreshing websites or opening lectures' implies the intended use case (fast, side-effect-free retrieval), but it never states when to prefer this over alternatives or what the alternative would be. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_settingsA
Read non-secret settings and their validation schema. No credentials or email codes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses the exclusion boundary (no credentials or email codes) and that a validation schema accompanies the values, but says nothing about permissions required, whether values are defaults or overrides, or the response shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no filler, with the core purpose front-loaded and the scope caveat immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-arg, no-output-schema getter, the description tells the agent what comes back (settings plus validation schema) and what does not (credentials, email codes). Missing only auth/permission expectations and any hint of persistence or defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description appropriately does not waste words inventing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (settings) plus the extra payload (validation schema). The verb 'Read' implicitly separates it from the sibling update_settings, but no sibling is named explicitly, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'No credentials or email codes' scopes what this tool is for, implying the agent must look elsewhere for secrets, but no alternative tool is named and there is no explicit when/when-not statement. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusA
Read application version and scanner state without logging in or submitting anything.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses that no login or submission is required, implying a side-effect-free read, but says nothing about return format, caching, or failure behavior for an endpoint with no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the verb front-loaded and zero filler. It is appropriately sized for a zero-argument status tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a trivial no-param, no-output-schema status endpoint, the description names both returned facts (version and scanner state) and the no-auth constraint, which is close to complete. Only the shape of the returned status values is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to disambiguate; baseline 4 applies. The description adds no parameter detail because none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (application version and scanner state), which is clearly distinct from the settings/schedule/subject-rule siblings. It stops short of explicitly naming or contrasting with any sibling, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without logging in or submitting anything' implies this is a safe unauthenticated probe usable before authentication, but no explicit when-to-use or when-not-to-use guidance is given relative to get_settings or the other read tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_subject_rulesB
Read AUTO/ASK/IGNORE rules for subjects in the cached schedule.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. 'Read' implies a non-mutating operation and 'cached' usefully discloses that results may reflect a snapshot rather than live state, but permissions, freshness guarantees, and return shape are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the verb and resource lead. It is efficient, though the AUTO/ASK/IGNORE vocabulary could be unpacked slightly for an unfamiliar agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool this is nearly sufficient, but with no output schema the description never explains what the returned rules look like (per-subject mapping, value semantics). It is adequate but leaves an avoidable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there are no parameter semantics for the description to elaborate on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('AUTO/ASK/IGNORE rules for subjects'), which cleanly separates it from the write-oriented sibling set_subject_rule. It does not explicitly name sibling tools, but the read verb plus the rule domain makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus get_settings, get_schedule, or set_subject_rule. The 'cached schedule' phrase hints at context but provides no explicit usage condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_subject_ruleA
Set AUTO/ASK/IGNORE for an existing subject, only at user's request and with app-side permission. AUTO affects future lecture opening; never change attendance rules silently.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | ||
| subject | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose useful behavior: a permission requirement and the side effect that AUTO affects future lecture opening. It omits what ASK/IGNORE do at runtime, whether the change is reversible, and how failures surface.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero waste, front-loading the core action and value domain before the permission constraint and the warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description covers permission, side effects, and a safety warning, which is more than most. It still leaves the meaning of two of the three modes and post-invocation behavior undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema documents neither parameter. The description partially compensates by enumerating the mode values and noting the subject must already exist, but it never defines what ASK or IGNORE actually mean, leaving the semantics half-covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set') and resource (subject rule) and enumerates the exact value domain (AUTO/ASK/IGNORE) for an existing subject. It clearly differs from the read-only sibling get_subject_rules, though it never names siblings or the broader update_settings tool explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('only at user's request and with app-side permission') and a caution against silent changes, which is genuine when-to-use and when-not guidance. It stops short of pointing to the read sibling get_subject_rules to inspect current rules first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_settingsA
Apply only settings listed by get_settings. Requires explicit app-side write permission and no unsaved UI edits. Ask the user first. Changes take effect in the running app.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does well: it discloses the permission requirement, the no-unsaved-edits precondition, the need for user consent, and the fact that changes take effect in the running app. It still omits failure/partial-apply behavior and whether changes persist beyond the running session, which is a meaningful gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the strongest constraint (only get_settings-listed keys). Each sentence carries a distinct operational fact, though 'Changes take effect in the running app' is slightly ambiguous about persistence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations, no output schema, and an unconstrained nested object parameter, the description covers the key operational facts: source of valid settings, permission gate, UI-state precondition, user confirmation, and effect timing. Missing error/rollback semantics keep it short of complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single 'settings' parameter is a free-form object with additionalProperties: true, so the schema tells the agent nothing. The description compensates partially by constraining valid keys to those returned by get_settings, but adds no expected shape, nesting, or value formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action on a specific resource (applying app settings) and explicitly ties it to the get_settings sibling, so an agent can distinguish it from the read-only getters. It never plainly says 'updates the application's settings', but the verb+resource pairing with the name is unambiguous enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete preconditions (settings must come from get_settings, explicit app-side write permission, no unsaved UI edits) and a directive to confirm with the user first. The 'apply only settings listed by get_settings' phrasing also functions as an implicit exclusion for arbitrary keys, leaving little to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.1- First observed
get_schedule - First observed
get_settings - First observed
get_status - First observed
get_subject_rules - First observed
set_subject_rule - First observed
update_settings
TDQS
Scored across 6 tools
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.
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.
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.
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
Related MCP Connectors
Read-only finance and operations controls for AI agents with evidence and safe next actions.
Read-only local AI advice, shared reports and website audits. No PC scan or local actions.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Read AI-gateway analytics, configs, virtual keys, workspaces and users; log request feedback.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI clients to perform Sisense environment operations such as governance, asset and user/group management, lifecycle tasks, and health checks using the calling user's own credentials.36MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to perform safe, read-only IT diagnostics and retrieve local runbooks, asset records, and knowledge articles through MCP, with allowlisted network checks and audit logging.MIT
- FlicenseAqualityCmaintenanceEnables AI clients to query AxonHub admin data through natural language, including instance status, projects, channels, models, requests, and usage statistics, with read-only safeguards and sensitive-field redaction.8-
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to read local business data and request database mutations, while requiring human approval before updates or deletions are executed. It provides read-only tools, approval workflows, and audit logging to prevent autonomous destructive changes.-