Skip to main content
Glama

mtuci-mcp

MCP-сервер для личного кабинета МТУСИ, построенный на библиотеке mtuci_private_api.

Инструменты

  • get_user_info — информация о студенте (имя, группа, курс, факультет, специальность).

  • get_attendance — посещаемость по предметам (процент посещений, пропуски).

  • get_schedule — расписание на дату (YYYY-MM-DD): предметы, тип занятий, преподаватели, аудитории, время.

Related MCP server: canvas-parent-mcp

Учётные данные

Сервер берёт логин и пароль от ЛК МТУСИ из переменных окружения:

  • MTUCI_LOGIN

  • MTUCI_PASSWORD

Запросы к ЛК выполняются от имени студента.

Запуск через uvx

Из локальной директории проекта:

uvx --from . mtuci-mcp

Если пакет опубликован в PyPI:

uvx mtuci-mcp

Пример конфигурации opencode

{
  "mcp": {
    "mtuci": {
      "command": "uvx",
      "args": ["--from", "/путь/до/mtuci-mcp", "mtuci-mcp"],
      "env": {
        "MTUCI_LOGIN": "ваш_логин",
        "MTUCI_PASSWORD": "ваш_пароль"
      }
    }
  }
}

Разработка

uv sync
uv run mtuci-mcp

HTTP-запросы библиотеки выполняются асинхронно и могут быть медленными (имитация действий браузера), поэтому выполнение инструментов может занимать несколько секунд.

Available Tools

3 tools
get_attendanceB

Актуальная посещаемость по предметам: процент посещений и пропуски.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It conveys only that the data is 'current' ('актуальная'), which hints at freshness, but says nothing about read-only safety, permissions needed, or the granularity/aggregation of results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single compact sentence with no filler, and the core subject (attendance) is front-loaded. It is efficient, though extremely terse and lacking any structural cues.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and there are no parameters to cover. However, for a zero-annotation read tool the description omits whose attendance is fetched and over what period, leaving meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so per the baseline rule a 4 applies. The description adds no parameter meaning to compensate for, since there are none to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (attendance by subject) and states what it returns: attendance percentage and absences. It is clearly distinguishable from siblings get_user_info and get_schedule, though the verb ('get') is only implied by the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus get_schedule or get_user_info, no preconditions, and no indication of the scope (current user, all subjects, time window). Usage must be inferred entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_scheduleC

Расписание на указанную дату.

Args: date: дата в формате YYYY-MM-DD, например "2026-09-14".

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't state whether this requires authentication, what format the schedule takes, whether it's read-only, or any other behavioral traits. Only the parameter format is mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and front-loaded with the purpose, followed by a clear parameter format instruction. It's efficient with no unnecessary words, though it could benefit from more context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has one required parameter, no annotations, and a sibling tool (get_attendance) that might overlap, the description is incomplete. It doesn't explain what the schedule contains, whether it's for a user, classroom, or other entity, or how it differs from get_attendance. An output schema exists, so return values needn't be explained, but the context is still insufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 provides the date format (YYYY-MM-DD) and an example, which adds meaning beyond the schema's bare 'string' type. However, with only one parameter and minimal context, this is a baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it returns a schedule for a given date ("Расписание на указанную дату"), which is a specific verb+resource. However, it doesn't distinguish itself from siblings like get_attendance, which could also relate to schedules. The purpose is clear but lacks differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. No context about when this is appropriate, any prerequisites, or how it relates to get_attendance. The description only restates what the tool does.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_infoB

Информация о студенте: имя, группа, курс, факультет, специальность.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full behavioral burden, and it discloses nothing about side effects, permissions, or whether it operates on the authenticated user versus a specified one. For a zero-parameter tool the risk is low, but the lack of any behavioral statement leaves real ambiguity about whose data is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that front-loads the resource and then lists the fields; there is no filler or redundancy. It is efficient, though the brevity borders on under-specification rather than crisp conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values is unnecessary, and the description's field list is a reasonable summary. However, with no parameters and no annotations, the description should clarify that it returns the current student's profile, which it never states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes no parameters, so the schema has nothing to document and the baseline is 4. The description's field enumeration relates to the returned payload rather than to inputs, which is harmless but contributes nothing to parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific resource (student information) and enumerates the fields it conveys (name, group, course, faculty, specialty), so the agent knows what data it retrieves. The verb 'get' is only implied, and there is no explicit differentiation from siblings, though the resource differs from get_attendance and get_schedule.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus get_attendance or get_schedule, nor any indication of prerequisites. The agent must infer usage entirely from the tool name and field list.

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.

  1. 3 tool updatesv0.1.0
    • First observedget_attendance
    • First observedget_schedule
    • First observedget_user_info

TDQS

B3.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool retrieves a clearly distinct resource: student profile, attendance, and schedule. There is no overlap in purpose, so an agent can select the correct tool unambiguously.

Naming Consistency5/5

All three tools follow the same get_<noun> snake_case pattern: get_user_info, get_attendance, get_schedule. The convention is predictable and consistent.

Tool Count4/5

Three tools is slightly on the thin side but reasonable for a focused student-data server. Each tool has a clear, non-redundant role.

Completeness3/5

The surface covers profile, attendance, and schedule, but omits common student-information needs such as grades, exam results, and course details. These are notable gaps for the apparent domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers