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
13 toolscheck_healthA
Is the app working right now? Returns verdict "ok" or "problem", each problem with repair actions, the current pair, and a network check (MIREA sites, internet, VPN) when something is wrong. Call this first; if ok, nothing else is needed.
| 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 and does a fair job: it discloses the verdict values, that problems come bundled with repair actions, and that the network check (MIREA sites, internet, VPN) only runs when something is wrong. It never explicitly confirms the call is read-only/no-side-effect, which for a zero-annotation tool leaves a small safety gap.
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?
Three short sentences, front-loaded with the core question, then the return contract, then the routing rule. Every clause carries information; nothing is restated from the schema or title.
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?
No output schema exists, so the description must describe returns itself — and it does, listing the verdict, per-problem repair actions, the current pair, and the conditional network check. With zero parameters and no annotations, this is enough for an agent to call it correctly.
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 and the description doesn't invent any, so there is no parameter semantics to explain. Baseline 4 applies for a 0-param tool with 100% schema coverage.
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 question the tool answers ("Is the app working right now?") and enumerates what the verdict contains, so the resource and output shape are clear. It doesn't name any sibling (e.g. get_status or get_recent_problems) to draw a boundary, relying instead on a positional rule ("call this first") for 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?
"Call this first; if ok, nothing else is needed" is an explicit, actionable routing rule that tells the agent both when to invoke and when to stop. What's missing is the reverse case — which sibling to call when the verdict is "problem" — so the guidance is one-directional rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_attendance_historyC
Recent QR events and the pairs where attendance was marked (no QR contents).
| 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 behavioral burden, yet it only discloses recency ('Recent') and a return exclusion ('no QR contents'). It does not clarify read-only behavior, time-window definition, permissions, pagination, or what 'pairs' structurally means.
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?
It is a single, short sentence with no filler, and the key scope ('Recent') is front-loaded. The phrasing 'the pairs where attendance was marked' is slightly awkward but not verbose.
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?
With no output schema and no annotations, the description should explain the shape and scope of returned data, but 'pairs' and 'events' go undefined and no time window is specified. An agent would have to call it blind to understand its output.
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?
There are zero parameters and no parameter schema to compensate for, so the baseline of 4 applies. The description correctly does not invent parameter details.
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 identifies the resource as recent QR events and attendance-marked pairs, which hints at an attendance-history read. However, it is a noun phrase with no clear verb, and terms like 'pairs' are ambiguous — an agent cannot confidently tell what records are returned or how this differs from a generic history tool.
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 indication of when to call this versus any alternative, and no prerequisites or context are given. The sibling list contains no obviously related tool, but the description still offers no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_problemsA
Latest warnings and errors of the app's log: time, level, module, event name only.
| 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 behavioral burden. It discloses that only four fields are returned and implies a read-only retrieval, but it does not mention ordering, time range, pagination, authentication requirements, or error behavior. For a simple read-only log tool this is adequate but incomplete.
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?
The description is a single efficient sentence that front-loads the resource (warnings and errors) and then enumerates the returned fields. It is terse but not cryptic, with no wasted words.
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-only tool with no output schema, the description gives enough information to understand what is returned. The only missing piece is explicit guidance on when to prefer it over related diagnostic siblings, but the core contract is 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?
The tool takes zero parameters, so there is no parameter semantics to document; the baseline for 0 params is 4. The description does not need to compensate for any schema gaps.
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 clearly states it returns the latest warnings and errors from the app log, and enumerates the exact fields (time, level, module, event name). It is specific about the resource and content, though it does not explicitly contrast itself with diagnostic siblings like check_health or get_status.
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 focus on warnings and errors implies a troubleshooting or diagnostics use case, but the description does not explicitly say when to use this tool versus alternatives such as check_health or get_status. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_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.
get_vpn_helpA
How to let MIREA and MTS Link bypass the user's VPN, with ready files; also shows the instructions in the app. Use when check_health says vpn_suspected.
| 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 disclosure burden, and it does say what the caller gets back: ready files plus in-app instructions. It doesn't discuss side effects, but a help/reference tool has little to disclose beyond its content.
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, front-loaded sentences with no filler. The trailing 'also shows the instructions in the app' slightly overlaps with 'with ready files' but stays within a useful length.
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 parameterless tool with no output schema, the description supplies both the content delivered and the condition for calling it. Nothing essential to invoking it correctly appears to be missing.
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 schema declares zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. Omitting any parameter talk is appropriate rather than a gap.
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 concrete deliverable — VPN bypass guidance for two named services (MIREA and MTS Link), including ready-made config files and in-app instructions. That distinguishes it clearly from siblings like get_settings or repair, though the verb ('provides/returns') is left implicit.
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 an explicit trigger: 'Use when check_health says vpn_suspected,' routing the agent from a sibling tool's output directly to this one. It doesn't name a when-not condition or an alternative remedy, but for a single-purpose help tool that trigger is nearly sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repairA
Start one repair from a problem's actions: retry_login, refresh_schedule, reopen_lecture, restart_browser or start_scanner. Needs the user's «Разрешить ИИ чинить приложение» permission in the app. Check the result with wait_and_check.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries real weight and delivers: it discloses that the operation mutates state ('Start one repair'), that it requires the in-app «Разрешить ИИ чинить приложение» permission, and that the outcome is asynchronous and must be validated via wait_and_check. It omits error/retry semantics and whether a repair can be started while another is in flight.
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?
Three tight sentences: capability and action vocabulary first, prerequisite second, verification path last. No filler and no restatement of the tool name.
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 single-parameter tool with no annotations and no output schema, the description covers the mutation, the permission gate, the full action list, and the prescribed verification step. The one gap is return/response shape or failure behavior, which nothing else in the definition supplies.
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 'action' property has no enum, so the description is the sole source of the accepted value vocabulary — and it supplies all five literals, which is the key information an agent needs. It says nothing about invalid-action behavior or whether values are case-sensitive, keeping it from a 5.
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?
Uses a specific verb ('Start one repair') on a specific resource and immediately enumerates the closed set of actions it accepts (retry_login, refresh_schedule, reopen_lecture, restart_browser, start_scanner). It also names the sibling wait_and_check as the follow-up step, so an agent can place it in the workflow without reading other schemas.
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?
'Start one repair from a problem's actions' frames the trigger condition, and 'Check the result with wait_and_check' routes the agent to the correct next tool. It does not state any when-not conditions (e.g. don't call if a repair is already running), so it stops short of explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_fixA
Finish a repair round: 3–6 lines in Russian on what was wrong, what you did and whether it helped. The app removes personal data and sends it to the developer.
| Name | Required | Description | Default |
|---|---|---|---|
| fixed | Yes | ||
| summary | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does disclose an important behavioral trait: personal data is stripped and the text is sent to the developer, i.e. this transmits data outside the session. It does not say whether the submission is one-shot/irreversible or what happens to a report after it is sent.
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 sentences, front-loaded with the action and the format constraint, and the second sentence earns its place by disclosing the privacy/data-handling behavior. No filler.
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 two-parameter submission tool with no output schema and no annotations, the description covers format, language, and data handling, but leaves the 'fixed' parameter and any post-submission effect (confirmation, retry behavior) unaddressed.
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 description must compensate. It does specify the summary format well (3–6 lines, Russian, must cover what was wrong, what was done, and whether it helped), but the required 'fixed' boolean is never explained — the agent cannot tell whether it means 'the problem is resolved' or 'a change was applied'.
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 verb+resource: it finishes a repair round by submitting a 3–6 line report on the problem, the action taken, and the outcome. This is clearly distinct from the sibling 'repair' tool, though the distinction is only implied via 'finish' rather than stated 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?
'Finish a repair round' implies this is called at the end of a repair cycle, which gives usable context. However, it never explicitly says to call 'repair' first, nor what to do if a round is abandoned, and no alternative tool is named.
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.
wait_and_checkC
Wait 0–120 seconds (a repair takes a minute or so), then check_health again.
| Name | Required | Description | Default |
|---|---|---|---|
| seconds | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the wait bound (up to 120 seconds) and that a repair takes roughly a minute, which is useful. But it never states whether the call blocks, whether it returns the health result or just a sleep acknowledgment, or what happens on failure, leaving the most important behavioral question unanswered.
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 duration bound and the reason for waiting are delivered immediately. The parenthetical is efficient, though the compressed phrasing contributes to the read ambiguity.
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?
With no annotations, no output schema, and an undocumented parameter, the description needs to fully specify behavior. It omits what the tool returns and whether a separate check_health call is required, which is exactly the information an agent needs to invoke it correctly.
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?
Only one parameter, the 'seconds' field, has 0% schema description coverage. The description partially compensates by supplying the 0–120 range, which is not documented in the schema. But it does not explain what happens above 120, negative values, or how the default of 60 interacts with the repair timing.
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 verb+resource (wait, then check health) is identifiable, but it is unclear whether the tool itself performs the health check and returns results, or merely sleeps and instructs the agent to call check_health separately. That ambiguity sits at the core of the tool's purpose, so it falls short of a 4.
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?
Usage is implied by the parenthetical about repair taking a minute, so an agent can infer this follows a repair. However, there is no explicit statement of when not to use it, nor any named alternative (the siblings include check_health and repair, which are clearly relevant).
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.
7 tool updates
v0.2.1- Added
check_health - Added
get_attendance_history - Added
get_recent_problems - Added
get_vpn_help - Added
repair - Added
report_fix - Added
wait_and_check
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 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.
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.-