RohanMuppa/brightspace-mcp-server

RohanMuppa/brightspace-mcp-server

от rohanmuppa
MCP сервер для прямого доступа к курсам Brightspace через ИИ-ассистентов. Позволяет запрашивать оценки, дедлайны и объявления. Полезен студентам, работающим с Claude, ChatGPT или Cursor в вузах, использующих D2L.

Brightspace MCP Server

npm version npm downloads CI License: MIT Node >= 20

By Rohan Muppa, ECE @ Purdue

Lets your AI see your Brightspace classes, so you can just ask:

"What's due this week?" · "Am I passing all my classes?" · "Summarize today's announcements" · "Turn my lecture slides into flashcards"

Works with Claude Desktop, Claude Code, Cursor, ChatGPT Desktop, Windsurf, and any other app that supports MCP (the standard way to plug tools into an AI). It only reads your courses — it never submits, edits, or deletes anything.

Architecture diagram

Get started in 3 steps

  1. Install Node.js (version 20 or newer) if you don't have it. Download, run the installer, done.

  2. Open a terminal and run the setup:

    npx -y brightspace-mcp-server@latest setup
    

    It asks for your school's Brightspace address, your username and password, and how you confirm it's you when you sign in (a phone app, or another way like a text message). Your password goes into your computer's own password store (Keychain on Mac, Credential Manager on Windows), never into a file. Before signing you in, it connects itself to Claude Desktop, Cursor, Antigravity, Codex, or Claude Code if you have them. If one of them already has a brightspace entry pointing somewhere else (an old local build, a fork), setup shows you that entry and asks before replacing it.

    On a Mac: when Keychain asks whether node may use the saved Brightspace password, choose Always Allow, not just Allow. That lets later sign-ins (the auth command and questions from your AI app) read it without asking again.

  3. Restart your AI app and ask it something — the first question signs you in. If your phone asks you to approve a sign-in, approve it and ask again.

Часто задаваемые вопросы

Инструменты были проиндексированы:
download_dropbox_submission_file

Скачивает конкретный файл из сданной в Dropbox работы студента (или группы) в локальный каталог, для преподавателя или TA. Сначала нужно вызвать get_dropbox_submissions или get_dropbox_user_submissions, чтобы найти submissionId и fileId. Требует доступа преподавателя или TA к курсу. ВАЖНО: Перед вызовом этого инструмента нужно спросить пользователя, куда сохранить файл. После того как файл найден, нужно предложить понятное читаемое имя и спросить, не хотят ли они его переименовать.

Скачивает файл отправки Dropbox.

Параметры
  • courseIdintegerобязательный

    ID курса, которому принадлежит папка dropbox.

  • customFilenamestring

    Пользовательское имя для скачиваемого файла (с расширением). Если не указано, используется исходное имя файла из отправки.

  • downloadPathstringобязательный

    Абсолютный путь к локальной директории, в которую нужно сохранить файл.

  • fileIdintegerобязательный

    ID файла в этой отправке.

  • folderIdintegerобязательный

    ID папки Dropbox.

  • submissionIdintegerобязательный

    ID отправки, из get_dropbox_submissions или get_dropbox_user_submissions.

download_file

Скачивает файл из содержимого курса, файлов, привязанных по пути внутри описания модуля (coursePath, из quickLink-URL get_course_content с type=coursefile), вложений преподавателя к заданиям (source: assignmentAttachment с folderId + fileId), отправленных решений заданий или вложений объявления. Используйте этот инструмент, когда пользователю нужен файл из содержимого курса Brightspace, отправленных решений в dropbox или объявления (newsId + fileId, из get_announcements). Два режима ответа: (1) INLINE (по умолчанию - опустите downloadPath): файл возвращается прямо в ответе инструмента - извлечённый текст для PDF и документов Office, блок изображения для jpeg/png/gif/webp или краткое описание для всего остального, так что его можно прочитать сразу, не трогая файловую систему. Это правильный выбор в таких клиентах, как Claude Desktop, чьи инструменты анализа/песочницы не видят файл, который MCP-сервер записывает в свою файловую систему хоста. (2) DISK (задайте downloadPath как абсолютный путь в файловой системе ХОСТА, где работает MCP-сервер): файл сохраняется туда. Спросите пользователя, куда сохранить файл, прежде чем использовать режим DISK - никогда не угадывайте каталог. Определив файл, предложите понятное читаемое имя (например, 'Lecture 7 - Memory Management.pdf' вместо 'L07_CS251_2026SP_v2.pdf') и передайте его как customFilename, или опустите его, чтобы сохранить оригинальное имя. Если скачивание темы содержимого не удаётся, потому что файл ещё не выпущен, ответ объясняет причину, когда метаданные модуля/темы Brightspace это поддерживают (ещё не открыт, завершён, заблокирован или скрыт).

Скачивает файл.

Параметры
  • courseIdintegerобязательный

    ID курса, которому принадлежит файл.

  • coursePathstring

    Файл в файловом хранилище курса, для файлов, на которые преподаватель дал ссылку внутри модуля или описания страницы, а не добавил их как тему контента (get_course_content перечисляет их как courseFiles у модуля). Принимает один из таких путей (например, 'Notes/Lecture 1.pdf') или полный URL quickLink. Не сочетается с topicId, folderId или newsId.

  • customFilenamestring

    Своё имя файла для скачанного файла (с расширением). Если не указано, используется исходное имя файла из Brightspace.

  • downloadPathstring

    Абсолютный путь к каталогу, куда сохранить файл на диске. Не указывайте его, чтобы получить файл прямо в ответе инструмента - правильный выбор в клиентах вроде Claude Desktop, чьи инструменты анализа/песочницы не видят файлы, которые MCP-сервер пишет в свою собственную файловую систему хоста. Режим inline возвращает извлечённый текст для PDF и документов Office, блок изображения для jpeg/png/gif/webp и краткое описание (с отсылкой к режиму диска) для всего остального, с ограничением 10 МБ и 400 000 символов извлечённого текста.

  • fileIdinteger

    ID конкретного файла в отправке dropbox, вложении к заданию преподавателя (с source: assignmentAttachment) или вложении к объявлению (с newsId).

  • folderIdinteger

    ID папки Dropbox. Скачивает вашу работу по умолчанию; установите source в assignmentAttachment для раздаточного материала от преподавателя.

  • newsIdinteger

    ID объявления (новости), вложение которого нужно скачать. Требуется fileId.

  • sourceenum

    Для folderId + fileId: assignmentAttachment скачивает предоставленный преподавателем раздаточный материал из get_assignment_files; submission (по умолчанию) скачивает ваш собственный сданный файл. Не комбинируйте source с topicId или newsId.

  • topicIdinteger

    ID темы контента для скачивания (для файлов с материалами курса).

get_announcement_filesтолько чтение

Читает файлы, которые преподаватель прикрепил к объявлению: вопросы для обсуждения, рубрику, обновлённое расписание, слайды. Вызывайте его только с courseId, чтобы увидеть, в каких объявлениях есть вложения, затем с newsId и fileId, чтобы прочитать одно из них. Используйте это, когда пользователь спрашивает, что говорит файл, прикреплённый к объявлению. Возвращает сам текст. Вместо этого используйте download_file (newsId + fileId), когда пользователь хочет сохранить файл на диск.

Получает файлы объявлений.

Параметры
  • courseIdintegerобязательный

    Course ID, вложения объявлений которого нужно просмотреть.

  • extractTextboolean

    Извлекает читаемый текст из файла. Работает с PDF, DOCX, XLSX, PPTX и обычным текстом.

  • fileIdinteger

    Идентификатор файла вложения для чтения. Требует newsId. Если не указать, выводит список файлов, не читая их.

  • maxCharsinteger

    Максимальное количество символов извлечённого текста для возврата. Ответ сообщает, был ли он усечён.

  • newsIdinteger

    ID объявления (новости). Пропустите, чтобы вывести список всех объявлений в курсе, у которых есть вложения.

get_announcementsтолько чтение

Получает объявления из одного курса по courseId или из всех курсов, если параметр опущен, сначала новые. count от 1 до 50 на страницу. Каждый body - полный текст объявления в markdown (ссылки сохраняются); pagination.truncated означает только то, что остались ещё объявления, и никогда - что body обрезан. Продолжайте с offset= pagination.nextOffset, пока он не станет null. Метаданные пагинации лежат в отдельном текстовом блоке JSON для ответов-массивов или в поле pagination вместе с modifiedSince. coverageComplete = false означает, что часть курсов не была получена: повторите запрос с offset 0 после восстановления. Смещения отражают текущий отфильтрованный список; новые записи могут сдвигать страницы. Вложения перечисляются для каждого объявления; скачивайте их через download_file (newsId + fileId) или читайте через get_announcement_files.

Получает объявления

Параметры
  • countinteger

    Объявлений на странице: 1-50 (по умолчанию 10).

  • courseIdinteger

    Course ID, для которого нужно получить объявления. Если не указан, возвращает последние объявления по всем курсам.

  • modifiedSincestring

    Возвращает только объявления, последнее изменение которых произошло в указанный момент в формате ISO 8601 или позже (например, 2026-01-15T00:00:00Z). Объявления без отметки времени изменения включаются всегда. Если параметр задан, ответ сообщает, сколько объявлений отфильтровано.

  • offsetinteger

    Смещение объявлений после фильтрации и сортировки. Продолжайте с pagination.nextOffset; начинайте заново с 0, когда неудавшийся курс станет доступен.

get_assignment_filesтолько чтение

Читает файлы, которые преподаватель прикрепил к заданию: PDF со спецификацией или инструкциями, стартовый воркбук, документ с рубрикой оценивания. Вызовите его только с courseId, чтобы увидеть, у каких заданий есть вложения, затем с folderId и fileId, чтобы прочитать одно из них. Используйте его, когда пользователь спрашивает, что требуется в задании, что говорится в инструкциях, или просит кратко изложить раздаточный материал. Возвращает сам текст. Вместо этого используйте download_file, когда пользователь хочет сохранить файл на диск.

Получите файлы заданий.

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно просмотреть вложения заданий.

  • extractTextboolean

    Извлекает читаемый текст из файла. Работает с PDF, DOCX, XLSX, PPTX и обычным текстом.

  • fileIdinteger

    ID файла вложения для чтения. Требует folderId. Пропустите, чтобы вывести список файлов, не читая их.

  • folderIdinteger

    ID задания (папки Dropbox). Если не указать, выводит список всех заданий в курсе, у которых есть вложения.

  • maxCharsinteger

    Максимальное количество символов извлечённого текста для возврата. Ответ сообщает, был ли он усечён.

get_assignment_rubricтолько чтение

Получает полную рубрику оценивания для задания Dropbox: каждую группу критериев, критерий и уровень достижения с его баллами и описанием, а также собственный результат оценивания студента по каждому критерию, как только его опубликуют. Инструмент нужен, когда пользователь спрашивает, что требует рубрика, как будут оценивать задание или почему он получил конкретный балл по критерию.

Получает рубрику задания

Параметры
  • assignmentIdintegerобязательный

    ID задания (папки Dropbox), возвращаемый get_assignments.

  • courseIdintegerобязательный

    ID курса, к которому относится задание.

get_assignmentsтолько чтение

Получает задания и тесты для конкретного курса или всех курсов, на которые записан пользователь. Показывает работы, отправленные в dropbox, и тесты с датами сдачи, статусом и информацией о критериях оценки. Используйте этот инструмент, когда пользователь спрашивает о заданиях, домашней работе, что нужно сдать, тестах или деталях заданий и критериях оценки. Читайте submissionStatus/attemptStatus, а не только submission/attemptsUsed, чтобы понять, сдана ли работа: некоторые tenants закрывают студентам доступ к данным о сдаче или попытках, и тогда статус будет "unknown", даже если submission равен null или attemptsUsed равен 0. Никогда не сообщайте об элементе со статусом "unknown" как о пропущенном, несданном или невыполненном - скажите, что проверить не удалось, и направьте пользователя в Brightspace. Тесты берутся из списка тестов, содержимого курса и журнала оценок; каждая строка теста указывает источник в поле source. Тест с id null найден только как тема содержимого. Строка теста с detailsStatus "unavailable" отображалась в содержимом курса, но Brightspace не вернул её детали (возможно, тест закрыт, ещё не открыт или доступен только некоторым студентам), поэтому даты и попытки могут отсутствовать: направьте пользователя по её ссылке. availability (notYetOpen, open, closed) вычисляется из собственных дат начала и окончания теста и опускается, если их нет. exempt: true означает, что Brightspace отметил пользователя как освобождённого от темы этого теста; тест всё равно попадает в список. Каждый курс также содержит quizCoverage. "complete" означает, что ответили все источники тестов, а не то, что все тесты гарантированно попадут в список; "incomplete" означает, что какой-то источник тестов прочитать не удалось, поэтому в курсе могут быть тесты, не попавшие в список. Никогда не делайте вывод, что тест пропущен или не пройден, только потому что его нет в списке, и никогда не подавайте перечисленные тесты как полный список. Строка gradeOnly с названием, похожим на тест, - это тест, детали которого прочитать не удалось.

Получает задания.

Параметры
  • courseIdinteger

    Course ID для получения заданий. Если не указан, возвращает задания для всех курсов, на которые вы записаны.

get_calendar_eventsтолько чтение

Получает события календаря курса (экзамены, промежуточные экзамены, лабораторные, семинары, обзорные занятия, изменения расписания и дедлайны, которые преподаватели вносили прямо в календарь) по всем вашим курсам или одному курсу в заданном временном окне (по умолчанию следующие 7 дней). Используйте этот инструмент, когда пользователь спрашивает, когда экзамен, что у него в календаре или что происходит на этой неделе.

Получает события календаря.

Параметры
  • courseIdinteger

    ID курса, для которого нужно получить события календаря. Если не указан, возвращает события по всем курсам, на которые вы записаны.

  • fromstring

    Начало окна, ISO 8601 (например, 2026-01-15T00:00:00Z). По умолчанию: текущий момент.

  • includeGeneratedboolean

    Включает события, которые Brightspace создаёт на основе сроков сдачи заданий, тестов и обсуждений (помеченные generatedFrom). По умолчанию выключено, потому что get_upcoming_due_dates и get_assignments уже сообщают о них.

  • tostring

    Конец окна, ISO 8601 (например, 2026-01-22T00:00:00Z). По умолчанию - 7 дней после from.

get_classlist_emailsтолько чтение

Получите все адреса электронной почты для всех участников курса: преподавателей, ассистентов и студентов. Используйте это, когда пользователь хочет получить список адресов для группы, отправить письмо всей группе или получить контактную информацию для всех записанных.

Получает электронные письма из списка класса.

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно получить письма.

get_course_contentтолько чтение

Получает дерево содержимого курса с модулями, темами, файлами и ссылками. Используйте его, когда пользователь спрашивает о материалах курса, слайдах лекций, загруженных файлах, структуре содержимого или о том, что находится в модуле курса. Используйте moduleTitle, чтобы отфильтровать конкретный модуль (например, 'Labs', 'Staff', 'Homeworks'), а не получать всё дерево целиком. Используйте maxDepth, чтобы ограничить глубину рекурсии для просмотра в виде оглавления. Модуль или тема, которые сейчас недоступны, содержат isAvailable/availabilityStatus/availabilityMessage (и startDate/endDate, когда они известны), которые объясняют, почему; если этих полей нет, значит, они доступны сейчас.

Получает содержимое курса.

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно получить дерево содержимого.

  • maxDepthinteger

    Ограничивает глубину рекурсии дерева содержимого. Глубина 1 возвращает модули верхнего уровня только с прямыми дочерними элементами. Пригодится, чтобы получить оглавление без всего вложенного содержимого.

  • modifiedSincestring

    Возвращает только темы, последний раз изменённые в указанную дату и время ISO 8601 или позже (например, 2026-01-15T00:00:00Z), а также любой модуль, содержащий подходящую тему. Темы без отметки времени изменения включаются всегда. Если параметр задан, ответ сообщает, сколько тем было отфильтровано.

  • moduleTitlestring

    Совпадение подстроки в названиях модулей без учёта регистра. Возвращает только те модули, в названии которых есть эта строка (например, 'Labs', 'Staff', 'Homeworks'). Дочерние элементы совпавших модулей включаются полностью.

  • typeFilterenum

    Необязательный фильтр, сужающий результаты по типу содержимого.

get_discussionsтолько чтение

Получает содержимое доски обсуждений для курса, включая форумы, темы и сообщения. Используйте его, когда пользователь спрашивает о досках обсуждений, сообщениях на форуме, обсуждениях в классе или хочет посмотреть, что было опубликовано. Передайте только courseId, чтобы получить список всех форумов и их тем. Добавьте forumId, чтобы получить темы и сообщения для конкретного форума. Добавьте и forumId, и topicId, чтобы получить все сообщения в конкретной теме обсуждения.

Получает обсуждения.

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно получить доски обсуждений.

  • forumIdinteger

    ID конкретного форума, для которого получает темы и сообщения. Если не указан, возвращает все форумы.

  • topicIdinteger

    ID конкретной темы, для которой нужно получить посты. Требует forumId.

get_dropbox_feedbackтолько чтение

Получает сохранённый отзыв для папки dropbox: оценку, состояние проверки, текст отзыва и подробности оценки по рубрике. Студенты: пропустите entityType и entityId, чтобы прочитать СВОЙ опубликованный отзыв по заданию (он не скрыт; используйте это, когда get_assignments показывает, что отзыв недоступен). Преподаватели и ассистенты: передайте entityType и entityId, чтобы прочитать то, что уже сохранено для любого пользователя или группы, например перед подготовкой нового отзыва; для чтения чужого отзыва нужен доступ преподавателя или ассистента к курсу.

Получает отзывы Dropbox

Параметры
  • courseIdintegerобязательный

    ID курса, которому принадлежит папка dropbox.

  • entityIdinteger

    ID пользователя или группы, чью существующую обратную связь нужно получить. Если не указать, будет прочитана собственная обратная связь вошедшего пользователя.

  • entityTypeenum

    Показывает, определяет ли entityId отдельного пользователя или группу. Не указывайте ни entityType, ни entityId, чтобы прочитать свою обратную связь.

  • folderIdintegerобязательный

    ID папки Dropbox.

get_dropbox_foldersтолько чтение

Выводит список всех папок заданий/dropbox курса для преподавателя или TA. Возвращает ID папки, название, срок сдачи, даты начала и окончания, тип отправки, видимость и то, прикреплены ли рубрики. Используйте этот инструмент, чтобы узнать значения folderId перед вызовом get_dropbox_submissions, get_dropbox_user_submissions, get_dropbox_feedback или get_rubrics_for_object. Этот инструмент читает тот же список папок, который использует клиент самого студента, поэтому он не ограничен учётными записями преподавателя/TA, в отличие от get_dropbox_submissions, get_dropbox_feedback и download_dropbox_submission_file.

Получает папки Dropbox

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно вывести список папок dropbox (задания).

get_dropbox_submissionsтолько чтение

Выводит список всех работ, сданных каждым студентом (или группой) в папку dropbox, для преподавателя или TA: имена отправителей, даты сдачи, статус опоздания, списки файлов и статус обратной связи/оценки. Сначала использует get_dropbox_folders, чтобы найти folderId. Требует доступа преподавателя или TA; аккаунт студента получает понятное примечание вместо данных (собственные download_file / get_assignments студента уже покрывают его собственную сдачу). Результаты ограничены параметром limit (по умолчанию 100, максимум 1000); усечённый ответ сообщает об этом и запрашивает обратную связь только для возвращённой части.

Получает материалы Dropbox

Параметры
  • activeOnlyboolean

    Если true, пропускает работы, которые уже полностью оценены (отзыв опубликован с оценкой). По умолчанию false: возвращает все работы, оценённые и неоценённые.

  • courseIdintegerобязательный

    ID курса, которому принадлежит папка dropbox.

  • folderIdintegerобязательный

    ID папки Dropbox, для которой нужно вывести список работ. Найти его поможет get_dropbox_folders.

  • ignoreFeedbackboolean

    Если true, пропускает статус обратной связи в каждой записи отправки, чтобы уменьшить размер ответа.

  • limitinteger

    Максимальное количество отправок для возврата. По умолчанию 100. Ответ сообщает истинное общее количество и был ли он усечён; обратная связь запрашивается только для возвращённого среза.

get_dropbox_user_submissionsтолько чтение

Получает все работы, отправленные одним конкретным студентом (или группой) в папке dropbox, для преподавателя или TA - полезно для проверки работы одного студента перед подготовкой обратной связи. Сначала используйте get_dropbox_submissions или get_roster, чтобы найти userId. Требуется доступ преподавателя или TA к курсу.

Получает заявки пользователей Dropbox.

Параметры
  • courseIdintegerобязательный

    ID курса, которому принадлежит папка dropbox.

  • folderIdintegerобязательный

    ID папки Dropbox.

  • ignoreFeedbackboolean

    Если true, не включает статус обратной связи в ответ.

  • userIdintegerобязательный

    ID пользователя Brightspace (или ID группы для групповой папки), чьи работы нужно получить.

get_my_coursesтолько чтение

Получает ваши курсы Brightspace, на которые вы записаны, с названиями, кодами и идентификаторами. Используйте этот инструмент, когда пользователь спрашивает о своих курсах, записанных классах, о том, что он проходит в этом семестре, или когда ему нужен идентификатор курса для других запросов.

Получает мои курсы.

Параметры
  • activeOnlyboolean

    Возвращает только текущие активные курсы. По умолчанию берёт значение из настроенного на сервере параметра activeOnly (true, если не переопределён).

get_my_gradesтолько чтение

Получает разбивку оценок для конкретного курса или всех курсов, на которые записан пользователь. Показывает элементы оценок с баллами, процентами и комментариями. Используйте этот инструмент, когда пользователь спрашивает об оценках, баллах, отметках, среднем балле, академической успеваемости или о том, как у него успехи на курсе.

Get My Grades

Параметры
  • courseIdinteger

    Идентификатор курса, для которого нужно получить оценки. Если не указан, возвращает оценки по всем курсам, на которые вы записаны.

get_my_groupsтолько чтение

Перечисляет проектные/дискуссионные группы текущего пользователя в курсе вместе с участниками каждой группы. Используйте, когда студент спрашивает, кто входит в его проектную группу, лабораторную группу или дискуссионную группу.

Получает мои группы

Параметры
  • courseIdintegerобязательный

    ID курса, для которого выводятся проектные/дискуссионные группы текущего пользователя.

get_rosterтолько чтение

Получает список участников курса, включая преподавателей, ассистентов и, при необходимости, студентов с их именами, электронными адресами и ролями. Используйте этот инструмент, когда пользователь спрашивает об однокурсниках, контактах преподавателя, электронных адресах ассистентов, именах профессоров или о том, кто входит в группу. По умолчанию возвращает только преподавателей и ассистентов для конфиденциальности. Используйте параметр includeStudents, чтобы получить полный список группы.

Получает состав курса

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно получить список.

  • includeStudentsboolean

    Включает студентов в результаты. По умолчанию - только преподаватели и ассистенты.

  • limitinteger

    Максимальное число пользователей для возврата. По умолчанию 100. Ответ сообщает фактическое общее количество и был ли он усечён.

  • searchTermstring

    Необязательный поисковый запрос для фильтрации по имени.

get_rubrics_for_objectтолько чтение

Получает полную таблицу рубрики (критерии, уровни и баллы), прикреплённую к папке dropbox, для преподавателя или ассистента (TA). Сначала нужно вызвать get_dropbox_folders, чтобы найти folderId. Как и get_dropbox_folders, этот инструмент читает встроенные данные рубрики из листинга папки, поэтому доступ к нему не ограничен аккаунтами преподавателя/TA, в отличие от get_dropbox_submissions и get_dropbox_feedback.

Получает рубрики для папки Dropbox

Параметры
  • courseIdintegerобязательный

    ID курса, которому принадлежит папка dropbox.

  • folderIdintegerобязательный

    ID папки Dropbox, для рубрики(рубрик) которой нужно получить полные критерии и детали уровней.

get_server_infoтолько чтение

Сообщает, какая версия Brightspace MCP server запущена, среду выполнения Node.js, платформу, путь к файлу конфигурации, каталог состояния сессии, настроенный URL школы, сохранены ли учётные данные, локальный часовой пояс сервера и смещение UTC, (если вход в браузере сохранён) что запомнил Microsoft: stay-signed-in и флажок Don't ask again MFA, (при входе) uniqueName/displayName аккаунта как signedInAs, и счётчики запросов этого процесса (запросы: ответы по классам статуса, сетевые ошибки, попадания/промахи кэша, coalesced joins и обновления токенов). Применяется для устранения неполадок, когда пользователь спрашивает, какая у него версия, или относительно какого часового пояса/дат аккаунта ведутся вычисления. Никогда не связывается с Brightspace и никогда не возвращает секреты.

Получает информацию о сервере.

Параметры

Без параметров.

get_syllabus

Получает текст программы курса/обзора и необязательное вложение для курса. Возвращает описание обзора курса в формате Markdown. Когда программа курса находится во внешнем инструменте LTI (например, Simple Syllabus), перечисляет эти источники в externalSyllabusSources; их содержимое прочитать нельзя. Если какие-то из этих запросов не удалось выполнить (например, доступ запрещён), externalSyllabusDiscovery указывает, какие именно, и пустой результат тогда не доказывает, что у курса нет программы. Если указан downloadPath, дополнительно скачивает вложение с программой курса (например, PDF). ВАЖНО: Вы ОБЯЗАНЫ спросить пользователя, куда он хочет сохранить файл, прежде чем вызывать этот инструмент с downloadPath.

Получает программу курса.

Параметры
  • courseIdintegerобязательный

    ID курса, для которого нужно получить учебную программу.

  • downloadPathstring

    Абсолютный путь к каталогу, в который нужно сохранить вложение.

get_upcoming_due_datesтолько чтение

Получает предстоящие сроки сдачи по всем вашим курсам, вычисляемые из сроков сдачи заданий (папок Dropbox), тестов и самих оцениваемых тем обсуждений, а также событий календаря курса, таких как экзамены и лабораторные работы (тип: event). Используйте это, когда пользователь спрашивает о дедлайнах, что нужно сдать, предстоящей работе или что им нужно сделать на этой неделе.

Получает предстоящие сроки выполнения.

Параметры
  • courseIdinteger

    Фильтрует по конкретному ID курса.

  • daysAheadinteger

    Количество дней вперёд для поиска сроков выполнения

get_video_transcriptтолько чтение

Читает расшифровку видео, встроенного в содержимое курса, например записанной лекции или поясняющего ролика. Вызывайте его с courseId и topicId из get_course_content (typeFilter: 'video' или 'other') или напрямую с videoUrl, если ссылка уже есть. Возвращает текст расшифровки с временными метками, а также название и длительность, когда они доступны. Сейчас поддерживает Kaltura (например, BoilerCast, включая его ссылки Brightspace LTI) и YouTube; другие платформы возвращают понятное сообщение с указанием того, что пока не поддерживается. Каждый вызов возвращает не более maxChars символов (до 100000); чтобы прочитать всю расшифровку, вызывайте снова с offset, установленным в возвращённый nextOffset, пока truncated не станет false. Только для чтения: этот инструмент никогда не отмечает видео как просмотренное.

Получает стенограмму видео.

Параметры
  • courseIdinteger

    Course ID курса, к которому относится видео. Обязателен вместе с topicId, кроме случаев, когда videoUrl указан напрямую.

  • maxCharsinteger

    Максимальное количество символов текста расшифровки, возвращаемых за один вызов, от 1 до 100000 (по умолчанию 12000). В ответе указывается, был ли текст обрезан; чтобы прочитать дальше этого лимита, листайте с offset/nextOffset.

  • offsetinteger

    Смещение в символах в транскрипте, с которого нужно продолжить. Передайте обратно nextOffset из усечённого ответа, чтобы получить следующую часть.

  • topicIdinteger

    Content topic ID (из get_course_content), встроенное видео которой нужно расшифровать. Требует courseId.

  • videoUrlstring

    Прямой URL видео для транскрипции, например, поле url, которое уже вернул get_course_content. Используйте вместо courseId/topicId, если ссылка уже есть.

search_courseтолько чтение

Ищет по ключевому слову в содержимом курса (модули, темы, имена файлов), объявлениях и форумах/темах обсуждений за один вызов, вместо чтения всего дерева содержимого. Используйте этот инструмент, когда пользователь хочет найти что-то конкретное, например «найди слайды к промежуточному экзамену» или «кто-нибудь писал про консультации». Результаты ранжируются: совпадение по всем словам запроса стоит выше совпадения лишь по части слов, а внутри этой группы совпадение в заголовке стоит выше совпадения только в тексте. Если какой-то источник (например, обсуждения) прочитать не удаётся, его пропускают и указывают в note, а не роняют весь поиск. Инструмент проходит по всему дереву содержимого, объявлениям и каждому форуму обсуждений, поэтому работает медленнее, чем прямой вызов одного инструмента вроде get_course_content.

Ищет курс

Параметры
  • courseIdintegerобязательный

    Course ID, в пределах которого выполняется поиск.

  • limitinteger

    Максимальное количество результатов для возврата, сначала с наивысшей оценкой.

  • querystringобязательный

    Ключевые слова для поиска, например 'слайды для повторения перед промежуточным экзаменом' или 'часы консультаций'.

sign_outидемпотентный

Выполняет выход из Brightspace на этом компьютере: удаляет сохранённую сессию Brightspace, поэтому каждое приложение Brightspace на этом компьютере должно снова войти с нуля при следующем вопросе. Оставляет сохранённый пароль, настройки и ключ аутентификатора. Не выполняет выход из Microsoft или Brightspace на других устройствах. Вызывайте этот инструмент ТОЛЬКО когда пользователь явно просит выйти или разлогиниться из Brightspace (общий компьютер, передача машины другому). Никогда не вызывайте его для исправления ошибки, никогда в рамках ответа на другой вопрос и никогда, чтобы повторить или обновить вход.

Выйти из Brightspace

Параметры

Без параметров.

4.0.6основная
4.0.5
4.0.4
4.0.3
4.0.2
4.0.1
3.15.4
4.0.0
3.15.3
3.15.2
3.15.1
3.15.0
3.14.0
3.13.22
3.13.21
3.13.20
3.13.19
3.13.18
3.13.17
3.13.16
3.13.15
3.13.14
3.13.12
3.13.11
3.13.10
3.13.9
3.13.8
3.13.7
3.13.6
3.13.4
3.13.3
3.13.2
3.13.1
3.13.0
3.12.3
3.12.2
3.12.1
3.12.0
3.11.15
3.11.14
3.11.13
3.11.12
3.11.11
3.11.9
3.11.10
3.11.8
3.11.6
3.11.7
3.11.5
3.11.4
3.11.3
3.11.2
3.11.1
3.11.0
3.10.16
3.10.15
3.10.13
3.10.11
3.10.10
3.10.9
3.10.8
3.10.6
3.10.5
3.10.4
3.10.3
3.10.2
3.10.1
3.10.0
3.9.26
3.9.25
3.9.24
3.9.23
3.9.22
3.9.21
3.9.20
3.9.19
3.9.18
3.9.17
3.9.16
3.9.15
3.9.14
3.9.13
3.9.12
3.9.11
3.9.10
3.9.8
3.9.9
3.9.7
3.9.6
3.9.4
3.9.5
3.9.2
3.9.3
3.9.1
3.9.0
3.8.14
3.8.13
3.8.12
3.8.11
3.8.10
3.8.9
3.8.5
3.8.4
3.8.3
3.8.2
3.8.1
3.7.14
3.7.13
3.7.10
3.7.12
3.7.11
3.7.8
3.7.6
3.7.5
3.7.4
3.7.3
3.7.2
3.7.1
3.7.0
3.6.1
3.6.0
3.5.0
3.4.1
3.4.0
3.3.0
3.2.0
3.1.0
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.0
1.6.3
1.6.2
1.6.1
1.6.0
1.5.2
1.5.1
1.5.0
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.1
1.0.0

Выберите клиент, чтобы установить RohanMuppa/brightspace-mcp-server:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"rohanmuppa-brightspace-mcp-server-rpwpvyoztz\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"brightspace-mcp-server@latest\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
Claude CodeClaude Code

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

claude mcp add rohanmuppa-brightspace-mcp-server-rpwpvyoztz -- npx -y brightspace-mcp-server@latest

Либо через JSON-конфиг:

claude mcp add-json rohanmuppa-brightspace-mcp-server-rpwpvyoztz "{\"command\":\"npx\",\"args\":[\"-y\",\"brightspace-mcp-server@latest\"]}"
CodexCodex

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

codex mcp add rohanmuppa-brightspace-mcp-server-rpwpvyoztz -- npx -y brightspace-mcp-server@latest

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.rohanmuppa-brightspace-mcp-server-rpwpvyoztz]
command = "npx"
args = ["-y", "brightspace-mcp-server@latest"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите RohanMuppa/brightspace-mcp-server, а в поле команды запуска — строку ниже:
npx -y brightspace-mcp-server@latest

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например rohanmuppa-brightspace-mcp-server-rpwpvyoztz.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: rohanmuppa-brightspace-mcp-server-rpwpvyoztz
    command: npx
    args:
      - "-y"
      - "brightspace-mcp-server@latest"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "rohanmuppa-brightspace-mcp-server-rpwpvyoztz": {
      "command": "npx",
      "args": [
        "-y",
        "brightspace-mcp-server@latest"
      ]
    }
  }
}

Похожие MCP-сервера

rember/rember-mcp

rember/rember-mcp

от rember

Сервер Rember через MCP создаёт флеш-карточки для запоминания с интервальными повторениями — прямо из чатов с ИИ или PDF. Полезен студентам и всем, кто учится. Просто попросите «помоги запомнить» или «создай карточки», и инструмент сгенерирует заметки в Rember.

TypeScript⭐ 63
clouatre-labs/math-mcp-learning-server

clouatre-labs/math-mcp-learning-server

от clouatre-labs

Образовательный MCP сервер с 17 инструментами для математических вычислений, статистики, работы с матрицами и визуализации. Подходит студентам, преподавателям и разработчикам. Поддерживает облачный хостинг и персистентное рабочее пространство.

Python⭐ 5
r-huijts/ethics-check-mcp

r-huijts/ethics-check-mcp

от r-huijts

MCP сервер превращает ИИ в спарринг-партнера, прерывая комфортные беседы и оспаривая ваши предположения. Помогает выявлять когнитивные искажения, избегать предвзятости подтверждения и принимать осознанные решения. Для тех, кто ценит критическое мышление.

TypeScript⭐ 5
JuhongPark/mcp-server-pronunciation

JuhongPark/mcp-server-pronunciation

от juhongpark

MCP-сервер для голосового общения с ИИ-ассистентом, который в реальном времени оценивает английское произношение, грамматику и беглость. Всё работает локально — аудио не покидает устройство. Полезе...

Python⭐ 3
anki-mcp/anki-mcp-desktop

anki-mcp/anki-mcp-desktop

от anki-mcp

Управляет колодами и карточками Anki: создаёт заметки, редактирует поля, проводит повторения по расписанию и синхронизирует с AnkiWeb.

TypeScript⭐ 521
jinzcdev/leetcode-mcp-server

jinzcdev/leetcode-mcp-server

от jinzcdev

MCP сервер для LeetCode: поиск задач, получение решений и профилей, отправка кода. Помогает разработчикам автоматизировать подготовку к собеседованиям и отслеживать прогресс в алгоритмах.

TypeScript⭐ 154
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин