Skip to main content
Glama

🌐 Русская версия

⚖️ Дисклеймер: Данный проект является независимой любительской разработкой и создан исключительно в ознакомительных, исследовательских и образовательных целях для интеграции персонального ИИ-ассистента. Проект не является официальным и не аффилирован с ОАНО ВО «МосТех» (Московский технологический институт / lms.mti.moscow) либо его подразделениями. Сервер не производит обход систем аутентификации, не модифицирует платформу и выполняет запросы исключительно в рамках стандартных прав текущей пользовательской сессии. Автор проекта не несёт ответственности за действия пользователей, возможные технические сбои, сетевые ограничения или академические последствия отправки учебных материалов. Пользователь использует инструмент под собственную ответственность.

📖 О проекте

mti-lms-mcp — открытый MCP-сервер, позволяющий подключить личный кабинет студента lms.mti.moscow напрямую к любым ИИ-ассистентам, агентным средам и IDE, поддерживающим стандарт Model Context Protocol (MCP).

Сервер работает как локально (через универсальный транспорт stdio), так и удалённо (через Streamable HTTP / SSE / OAuth для Claude.ai).

Что умеет ассистент с этим сервером:

  • 📅 Расписание: проверять пары, семинары и ссылки на вебинары.

  • 📚 Дисциплины и темы: видеть список предметов текущего или любого семестра и текущий прогресс.

  • 📝 Задания и дедлайны: читать полные формулировки практических, тестов и контрольных мероприятий, скачивать методички и проверять статус сдачи.

  • 📊 Оценки: выгружать баллы текущего контроля успеваемости (ТКУ) и зачётную книжку за всё время обучения.

  • 🔔 Уведомления и сообщения: отслеживать проверенные работы, выставленные баллы и переписку в ЛМС.

  • 🎓 Учебный план и финансы: смотреть часы/ЗЕТ по дисциплинам и состояние оплаты обучения.

  • 📤 Безопасная сдача работ: отправлять решения на проверку с обязательным подтверждением (dry-run).


🛠 Доступные инструменты (MCP Tools)

Чтение данных

Инструмент

Параметры

Описание

schedule

limit: int = 10, kind: str = ""

Расписание занятий по датам. При kind="webinar" выводит расписание вебинаров.

courses

semester: int = 0

Список дисциплин семестра (0 — текущий) с ID и текущими баллами.

course

course_id: str

Карточка дисциплины: преподаватели, темы, контрольные мероприятия, дедлайны и event_id.

assignment

event_id: str

Полный текст задания, методические указания и статус текущей попытки сдачи.

grades

—

Баллы ТКУ за текущий семестр и полная зачётная книжка за все курсы.

curriculum

—

Официальный учебный план: перечень предметов, кафедры, часы и зачётные единицы (ЗЕТ).

notifications

—

Новые системные уведомления: проверенные работы, выставленные оценки и комментарии.

messages

message_id: str = ""

Входящие сообщения ЛМС (с указанием ID — полный текст конкретного письма).

dialog

kind: str = "curator"

Диалоги в ЛМС ("curator" — куратор, "teacher" — преподаватели, "support" — техподдержка).

finance

—

Финансовое состояние: начисления по семестрам, оплаченные суммы, скидки и баланс.

announcements

—

Официальные объявления института для студентов.

Запись (Сдача работ)

Инструмент

Параметры

Описание

submit_assignment

event_id, text="", file_path="", confirm=False

Отправка ответа на задание (файла и/или текста).

⚠️ Безопасность сдачи: Отправка попытки в ЛМС МТИ необратима — после отправки работу нельзя отозвать или изменить.
Поэтому по умолчанию вызов без confirm=True выполняет только сухой прогон (dry-run): ассистент показывает вам предпросмотр (название задания, файл, размер, текст ответа). Отправка на сервер происходит исключительно при повторном вызове с флагом confirm=True после вашего явного согласия.


🚀 Быстрый старт

1. Клонирование и установка зависимостей

Требуется Python 3.10+.

git clone https://github.com/ilodezis/mti-lms-mcp.git
cd mti-lms-mcp

# Создание виртуального окружения
python -m venv .venv

# Активация окружения:
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# Windows (CMD):
.venv\Scripts\activate.bat
# macOS / Linux:
source .venv/bin/activate

# Установка зависимостей
pip install -r requirements.txt

2. Настройка авторизации (.env)

Скопируйте шаблон:

cp .env.example .env

В .env доступно два способа авторизации (выберите один):

  • Способ А (Автоматический, рекомендуется):
    Укажите свои логин и пароль от ЛМС:

    LMS_LOGIN=твой_логин
    LMS_PASSWORD=твой_пароль

    Сервер авторизуется сам и будет автоматически обновлять сессию при её истечении.

  • Способ Б (По сессионной куке):
    Если не хотите сохранять пароль в файле:

    1. Откройте lms.mti.moscow в браузере и войдите в аккаунт.

    2. Нажмите F12 (инструменты разработчика) → вкладка Console.

    3. Введите:

      copy(document.cookie)
    4. Вставьте полученную строку в .env:

      LMS_COOKIE=вставленная_строка_кук

3. Проверка подключения

Запустите дымовой тест:

python test_lms.py

Скрипт запросит данные из ЛМС и проверит ключевые эндпоинты. В случае успеха в консоли будет: всё зелёное.


🔌 Подключение к любому ИИ-агенту (stdio)

Сервер полностью совместим со спецификацией Model Context Protocol и работает по стандартному транспорту stdio. Это означает, что его можно подключить к абсолютно любому агенту, IDE или клиенту, поддерживающему MCP.

Универсальный контракт подключения

Любой MCP-клиент ожидает три параметра:

  1. command: путь к исполняемому файлу Python (python или путь к .venv/bin/python / .venv/Scripts/python.exe).

  2. args: ["полный/путь/к/server.py", "--transport", "stdio"].

  3. env (опционально): переменные окружения, если они не заданы в файле .env.

Готовые конфигурации для популярных клиентов:

Конфигурационный файл:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mti-lms": {
      "command": "/полный/путь/к/mti-lms-mcp/.venv/Scripts/python.exe",
      "args": ["/полный/путь/к/mti-lms-mcp/server.py", "--transport", "stdio"]
    }
  }
}

(На macOS/Linux укажите .venv/bin/python).

В корне проекта создайте .cursor/mcp.json или откройте Cursor Settings → Features → MCP:

{
  "mcpServers": {
    "mti-lms": {
      "command": "python",
      "args": ["/полный/путь/к/mti-lms-mcp/server.py", "--transport", "stdio"]
    }
  }
}

Конфиг ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "mti-lms": {
      "command": "/полный/путь/к/mti-lms-mcp/.venv/bin/python",
      "args": ["/полный/путь/к/mti-lms-mcp/server.py", "--transport", "stdio"]
    }
  }
}

Добавьте сервер одной командой в терминале:

claude mcp add mti-lms -- /полный/путь/к/mti-lms-mcp/.venv/bin/python /полный/путь/к/mti-lms-mcp/server.py --transport stdio

В настройках расширения (MCP Servers settings):

{
  "mcpServers": {
    "mti-lms": {
      "command": "python",
      "args": ["/полный/путь/к/mti-lms-mcp/server.py", "--transport", "stdio"],
      "disabled": false,
      "autoApprove": []
    }
  }
}

В настройках settings.json:

{
  "context_servers": {
    "mti-lms": {
      "command": {
        "path": "/полный/путь/к/mti-lms-mcp/.venv/bin/python",
        "args": ["/полный/путь/к/mti-lms-mcp/server.py", "--transport", "stdio"]
      }
    }
  }
}

Во всех остальных клиентах указывайте:

  • Type / Transport: stdio

  • Command: python (или путь к Python в виртуальном окружении)

  • Args: ["/полный/путь/к/server.py", "--transport", "stdio"]

  • Working Directory: /полный/путь/к/mti-lms-mcp/


🌐 Удалённый запуск (HTTP / SSE / Docker для Claude.ai)

Для работы с веб-интерфейсом Claude.ai (через Custom Connectors) или удалённым сервером mti-lms-mcp поднимается в режиме веб-сервиса с поддержкой авторизации RFC 8414 / RFC 9728.

ℹ️ Сетевые ограничения: ЛМС МТИ защищена DDOS-Guard и сбрасывает запросы с зарубежных дата-центров. Разворачивайте сервер на машине с российским IP (домашний сервер/ПК, роутер или РФ VPS).

1. Задайте токены в .env

MCP_TRANSPORT=http
MCP_HOST=0.0.0.0
MCP_PORT=8030

# Сгенерируйте случайные ключи (например: python -c "import secrets; print(secrets.token_urlsafe(32))"):
MCP_TOKEN=твой_секретный_токен_bearer
MCP_CLIENT_ID=mti-lms
MCP_CLIENT_SECRET=твой_секретный_токен_oauth

2. Запуск через Docker

docker compose up -d --build

Сервер слушает на 127.0.0.1:8030.

3. Подключение в Claude.ai

  1. Опубликуйте сервис наружу по HTTPS (например, через Cloudflare Tunnel, Caddy, Nginx или Traefik).

  2. В веб-интерфейсе Claude.ai перейдите в Settings → Integrations → Add Custom Connector:

    • Server URL: https://твой-домен/mcp

    • Client ID: mti-lms (из MCP_CLIENT_ID)

    • Client Secret: значение MCP_CLIENT_SECRET из .env

  3. Нажмите Connect — откроется 1-клик окно подтверждения авторизации.


🔒 Безопасность и приватность

  • 100% локальное хранение данных: Ваши пароли, куки и токены хранятся только на вашем устройстве в файле .env. Файл закрыт в .gitignore и никогда не передаётся во внешние сервисы.

  • Двухэтапная отправка: Случайная сдача работ невозможна — инструмент требует явного подтверждения пользователя перед выполнением POST-запроса.

  • Чистый парсинг: Все данные запрашиваются напрямую с lms.mti.moscow под вашей сессией без сторонних прокси-серверов.


Related MCP server: tbank-edu-mcp

🌐 English Version

⚖️ Disclaimer: This project is an independent open-source tool developed exclusively for educational, personal productivity, and research purposes. It is not an official tool and is not affiliated with, endorsed by, or connected to OANO VO "MosTech" (Moscow Technological Institute / lms.mti.moscow) or any of its subsidiaries. The server does not bypass platform security, access unauthorized data, or modify university systems. It strictly operates within the permissions of the authenticated user's session. The author assumes no responsibility or liability for how this software is used, any session/network restrictions, or any academic consequences resulting from assignment submissions. Use at your own discretion and risk.

📖 Overview

mti-lms-mcp is an open-source Model Context Protocol (MCP) server that connects the Moscow Technological Institute student portal (lms.mti.moscow) directly to any AI agent, agentic workflow, or IDE supporting the MCP standard.

It supports both local stdio transport (for desktop applications) and Streamable HTTP / SSE with OAuth 2.0 PKCE (for web clients like Claude.ai).

Capabilities:

  • 📅 Schedule & Webinars: Check upcoming classes, lectures, seminars, and live webinar URLs.

  • 📚 Courses & Syllabi: Browse subjects across any semester with grading progress.

  • 📝 Assignments & Deadlines: Inspect full assignment prompts, deadlines, download study materials, and check previous attempts.

  • 📊 Grades & Transcripts: Retrieve continuous evaluation points and complete official gradebook records.

  • 🔔 Notifications & Messages: Track graded homework, instructor feedback, and internal LMS messages.

  • 📤 Safe Homework Submission: Send solutions (text/file) with mandatory dry-run verification.


🛠 MCP Tools

Read Operations

Tool

Parameters

Description

schedule

limit: int = 10, kind: str = ""

List classes by date. Pass kind="webinar" for webinar schedule.

courses

semester: int = 0

List courses for a semester (0 = current) with IDs and current scores.

course

course_id: str

Course card: professors, topics, assignments, deadlines, and event_id.

assignment

event_id: str

Full prompt, instructions, attached guidelines, and submission status.

grades

—

Current term grades and complete academic record.

curriculum

—

Official curriculum: discipline list, departments, study hours, and ECTS credits.

notifications

—

Notification feed: graded submissions, review remarks, score updates.

messages

message_id: str = ""

Inbox messages (pass message ID for full body).

dialog

kind: str = "curator"

Chat threads ("curator", "teacher", "support").

finance

—

Tuition billing, semester payments, applied discounts, balance.

announcements

—

Official university bulletin announcements.

Write Operations

Tool

Parameters

Description

submit_assignment

event_id, text="", file_path="", confirm=False

Submit an assignment response (file and/or text).

⚠️ Submission Safety: Submissions to MTI LMS cannot be revoked or edited once sent.
Therefore, calling submit_assignment without confirm=True performs a dry run only, previewing the target event, attached file, size, and message. Live submission occurs only when explicitly invoked with confirm=True.


🚀 Quick Start

1. Clone & Setup

Requires Python 3.10+.

git clone https://github.com/ilodezis/mti-lms-mcp.git
cd mti-lms-mcp

# Create virtual environment
python -m venv .venv

# Activate:
# Windows (PowerShell):
.venv\Scripts\Activate.ps1
# macOS / Linux:
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

2. Authentication Setup (.env)

Copy the template:

cp .env.example .env

Choose one of two authentication options:

  • Option A: Login & Password (Recommended)
    Provide LMS credentials in .env:

    LMS_LOGIN=your_username
    LMS_PASSWORD=your_password

    The server automatically signs in and handles session renewal upon expiration.

  • Option B: Session Cookie
    If you prefer not storing passwords:

    1. Log into lms.mti.moscow in your browser.

    2. Open DevTools (F12) → Console.

    3. Execute: copy(document.cookie)

    4. Paste into .env:

      LMS_COOKIE=pasted_cookie_string

3. Verification

Run the smoke test:

python test_lms.py

🔌 Connecting to Any AI Agent (stdio)

The server conforms to the Model Context Protocol specification using standard I/O (stdio). It can be hooked into any MCP-compliant tool, agentic runtime, or IDE.

Generic MCP JSON Configuration

{
  "mcpServers": {
    "mti-lms": {
      "command": "/path/to/mti-lms-mcp/.venv/bin/python",
      "args": ["/path/to/mti-lms-mcp/server.py", "--transport", "stdio"]
    }
  }
}

Client Configuration Snippets:

  • Claude Desktop: Add entry to %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS).

  • Cursor: Configure .cursor/mcp.json or add in Settings → MCP.

  • Windsurf: Add to ~/.codeium/windsurf/mcp_config.json.

  • Claude Code CLI: Run claude mcp add mti-lms -- /path/to/.venv/bin/python /path/to/server.py --transport stdio.

  • VS Code Extensions (Cline / Roo Code / Continue): Paste into MCP server configuration panel.

  • Zed Editor: Add under context_servers in settings.json.


🌐 Remote Deployment (Docker & Claude.ai)

To connect from the Claude.ai Web UI:

  1. Fill required secrets in .env:

    MCP_TRANSPORT=http
    MCP_HOST=0.0.0.0
    MCP_PORT=8030
    MCP_TOKEN=generate_random_secret_token
    MCP_CLIENT_ID=mti-lms
    MCP_CLIENT_SECRET=generate_random_secret_token
  2. Start container:

    docker compose up -d --build
  3. Expose via HTTPS (Cloudflare Tunnel, Caddy, Nginx).

  4. In Claude.ai: Settings → Integrations → Add Custom Connector with your server URL, client ID, and secret.

(Note: MTI LMS enforces DDOS-Guard protection; run the server on a Russian residential or VPS IP).


📄 License

Distributed under the MIT License.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that turns UPB Virtual (Moodle) into a structured knowledge source, enabling AI assistants to query courses, assignments, deadlines, announcements, and sync materials via REST API.
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    A Model Context Protocol (MCP) server that connects AI coding agents to your Moodle LMS. Fetch assignments, grades, deadlines, and sync everything to Obsidian automatically.
    -
  • A
    license
    A
    quality
    B
    maintenance
    MCP server and CLI for EVA FING (Moodle of Facultad de Ingeniería, UdelaR) that authenticates headlessly via Shibboleth, enabling AI agents and users to query courses, announcements, activities, calendar, and study material.
    8
    MIT