Skip to main content
Glama

CanvasLMS - API

CanvasLMS - API — это локальный MCP-сервер, который предоставляет ваш аккаунт Canvas LMS в распоряжение ИИ-ассистента. Он работает на вашем компьютере, общается с Canvas через ваш личный токен доступа и предоставляет около 100 инструментов, охватывающих курсы, задания, оценивание, обсуждения, модули, страницы, файлы, сообщения, взаимные рецензии и доступность. Каждый инструмент возвращает Markdown. Каждый инструмент, изменяющий Canvas, сначала показывает предпросмотр изменения и применяет его только после вашего подтверждения.

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

  1. Получите личный токен доступа Canvas: в Canvas перейдите в Account > Settings > Approved Integrations > New Access Token.

  2. Клонируйте репозиторий и установите его.

    git clone https://github.com/harryx2011-boop/CanvasLMS-API.git
    cd CanvasLMS-API
    uv venv .venv
    uv pip install -e .

    Без uv используйте стандартное виртуальное окружение:

    python -m venv .venv
    .venv\Scripts\activate   # Windows
    source .venv/bin/activate # macOS/Linux
    pip install -e .
  3. Скопируйте пример файла окружения и укажите ваш хост Canvas и токен.

    cp .env.example .env
  4. Проверьте подключение.

    canvaslms-api --test

    Эта команда выводит ваше имя, идентификатор пользователя и активные курсы. Если она завершается ошибкой, проверьте CANVAS_URL и CANVAS_TOKEN в .env.

Related MCP server: Canvas LMS MCP Server

Подключение к Claude Code

Windows:

claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"

macOS/Linux:

claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"

Сервер читает .env из папки репозитория при запуске, поэтому переменные окружения не нужно указывать в конфигурации клиента. Используйте абсолютный путь к исполняемому файлу внутри .venv.

Подключение к Claude Desktop

Добавьте запись в файл конфигурации Claude Desktop:

{
  "mcpServers": {
    "canvaslms-api": {
      "command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
    }
  }
}

В macOS/Linux укажите <absolute path>/.venv/bin/canvaslms-api в поле command.

Расположение файлов конфигурации:

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

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

Перезапустите Claude Desktop после изменения файла.

Другие клиенты

Любой MCP-клиент, поддерживающий stdio-серверы, может запускать исполняемый файл напрямую, так же как Claude Code и Claude Desktop выше.

Для клиентов, работающих только по HTTP, запустите сервер с HTTP-транспортом:

canvaslms-api --transport http --host 127.0.0.1 --port 7100

Укажите клиенту адрес http://127.0.0.1:7100. Сервер по-прежнему читает учётные данные Canvas из .env в папке репозитория.

Поведение сервера

  • Идентификаторы курсов. Аргумент course принимает числовой идентификатор Canvas, код курса (ENG101), часть названия курса или sis_course_id:X. Если вы не уверены, какой курс нужен, сначала используйте list_courses.

  • Шлюз подтверждения. Каждый инструмент, изменяющий Canvas, принимает аргумент confirm: bool = false. При вызове без него инструмент возвращает предпросмотр того, что изменится, и не отправляет запрос, изменяющий Canvas. После просмотра предпросмотра вызовите его снова с confirm=true.

  • Права доступа. Каждый инструмент работает от имени владельца токена. Студенческий токен не может видеть личные данные других студентов или использовать инструменты преподавателя, такие как оценивание или массовая рассылка; такие вызовы возвращают ошибку 403 от Canvas с подсказкой о том, какого разрешения не хватает.

  • Вывод. Каждый инструмент возвращает Markdown, отформатированный для прямого отображения в переписке чата.

  • Анонимизация. Когда CANVAS_ANONYMIZE_STUDENTS=true, имена студентов в выводе инструментов заменяются на стабильный псевдоним для каждого курса вместо настоящего имени.

Справочник инструментов

Инструменты записи (помечены confirm) возвращают предпросмотр, пока не будут вызваны снова с confirm=true.

Курсы и идентификация

Tool

Назначение

confirm

get_profile

Получить профиль Canvas владельца токена

get_enrollments

Список записей на курсы владельца токена

list_courses

Список и поиск курсов, доступных владельцу токена

get_course

Получить сведения об одном курсе

get_syllabus

Получить текст силлабуса курса

get_course_overview

Сводка по курсу: силлабус, модули, предстоящие работы

get_course_structure

Получить полную структуру курса: модули/страницы/задания

get_cache_status

Показать, какие данные разрешения курсов кэшированы

clear_cache

Очистить кэш разрешения курсов

Студент

Tool

Назначение

confirm

get_upcoming_assignments

Список заданий с ближайшим сроком сдачи по курсам

get_todo

Получить список дел Canvas

get_submission_status

Показать статус сданных/пропущенных/оценённых работ по курсу

get_grades

Получить текущие оценки по одному или всем курсам

get_pending_peer_reviews

Список взаимных рецензий, которые ещё должен сделать владелец токена

get_submission

Получить сведения об одной работе и отзыв

submit_assignment

Сдать задание

confirm

comment_on_submission

Добавить комментарий к работе

confirm

mark_module_item_done

Отметить элемент модуля выполненным

confirm

Задания и оценивание

Tool

Назначение

confirm

list_assignments

Список заданий курса

get_assignment

Получить сведения об одном задании

list_submissions

Список работ по заданию

get_assignment_analytics

Сводка по сдаче и распределению оценок по заданию

get_student_analytics

Сводка активности одного студента в курсе

create_assignment

Создать задание

confirm

update_assignment

Обновить задание

confirm

bulk_grade_submissions

Оценить несколько работ одним вызовом

confirm

grade_with_rubric

Оценить работу по рубрике

confirm

Рубрики

Tool

Назначение

confirm

list_rubrics

Список рубрик курса

get_rubric

Получить критерии одной рубрики

get_rubric_assessment

Получить оценку работы по рубрике

create_rubric

Создать рубрику

confirm

create_rubric_from_csv

Создать рубрику из CSV-определения

confirm

associate_rubric

Прикрепить рубрику к заданию

confirm

Обсуждения и объявления

Tool

Назначение

confirm

list_discussion_topics

Список тем обсуждений курса

get_discussion_topic

Получить одну тему обсуждения

list_discussion_entries

Список записей верхнего уровня в теме

get_discussion_entry

Получить одну запись обсуждения

get_discussion_thread

Получить полную ветку с ответами

post_discussion_entry

Опубликовать новую запись в теме

confirm

reply_to_discussion_entry

Ответить на существующую запись

confirm

create_discussion_topic

Создать тему обсуждения

confirm

update_discussion_topic

Обновить тему обсуждения

confirm

list_announcements

Список объявлений курса

create_announcement

Создать объявление

confirm

delete_announcement

Удалить одно объявление

confirm

delete_announcements

Удалить несколько объявлений по id

confirm

delete_announcements_matching

Удалить объявления, соответствующие фильтру

confirm

Модули

Tool

Назначение

confirm

list_modules

Список модулей курса

list_module_items

Список элементов модуля

create_module

Создать модуль

confirm

update_module

Обновить модуль

confirm

delete_module

Удалить модуль

confirm

add_module_item

Добавить элемент в модуль

confirm

update_module_item

Обновить элемент модуля

confirm

delete_module_item

Удалить элемент модуля

confirm

Страницы

Tool

Назначение

confirm

list_pages

Список страниц курса

get_page

Получить метаданные одной страницы

get_page_content

Получить содержимое одной страницы

get_front_page

Получить главную страницу курса

create_page

Создать страницу

confirm

edit_page_content

Заменить содержимое страницы

confirm

update_page_settings

Обновить настройки страницы (заголовок, статус публикации, права редактирования)

confirm

bulk_update_pages

Применить одно и то же изменение к нескольким страницам

confirm

delete_page

Удалить страницу

confirm

Файлы

Tool

Назначение

confirm

list_files

Список файлов курса

read_file

Прочитать содержимое текстового файла

download_file

Скачать файл на диск

upload_file

Загрузить файл в курс

confirm

Сообщения

Tool

Назначение

confirm

list_conversations

Список переписок в Canvas Inbox

get_conversation

Получить сообщения одной переписки

get_unread_count

Получить количество непрочитанных сообщений

mark_conversations_read

Отметить переписки прочитанными

confirm

send_conversation

Отправить новое сообщение

confirm

send_bulk_messages

Отправить одно сообщение нескольким получателям

confirm

Взаимные рецензии

Tool

Purpose

confirm

list_peer_reviews

Список заданий на взаимное рецензирование для задания

assign_peer_review

Назначить взаимное рецензирование

confirm

get_peer_review_assignments

Показать, кто кого рецензирует

get_peer_review_completion_analytics

Сводка по доле завершённых взаимных рецензий

get_peer_review_followup_list

Список студентов, которые ещё не сдали взаимную рецензию

get_peer_review_comments

Получить комментарии, оставленные во взаимной рецензии

analyze_peer_review_quality

Оценить глубину и полезность отзывов взаимного рецензирования

identify_problematic_peer_reviews

Отметить небрежные или отсутствующие взаимные рецензии

generate_peer_review_report

Сформировать сводный отчёт об активности взаимного рецензирования

generate_peer_review_feedback_report

Сформировать отчёт о содержании отзывов во взаимных рецензиях

extract_peer_review_dataset

Экспортировать данные взаимного рецензирования для анализа

message_peer_reviewers

Написать студентам об их заданиях на взаимное рецензирование

confirm

send_peer_review_followups

Отправить напоминания студентам с несданными взаимными рецензиями

confirm

Люди и конфиденциальность

Tool

Purpose

confirm

list_users

Список зачисленных пользователей курса

list_groups

Список групп курса

check_enrollment

Проверить зачисление пользователя на курс

export_anonymization_map

Экспортировать соответствие псевдонимов реальным именам

confirm

get_privacy_status

Показать, активна ли анонимизация

Доступность

Tool

Purpose

confirm

scan_course_content_accessibility

Проверить страницы и файлы курса на проблемы доступности

fix_accessibility_issues

Применить исправления для обнаруженных проблем доступности

confirm

fetch_ufixit_report

Получить существующий отчёт UFIXIT о доступности

parse_ufixit_violations

Извлечь нарушения из отчёта UFIXIT

format_accessibility_summary

Оформить проверку доступности в виде читаемой сводки

Копирование курса

Tool

Purpose

confirm

create_content_migration

Запустить перенос/копирование содержимого курса

confirm

get_content_migration_status

Проверить ход переноса содержимого

Мета

Tool

Purpose

confirm

search_tools

Поиск доступных инструментов по ключевому слову

Конфигурация

Вся конфигурация задаётся через переменные окружения, загружаемые из файла .env в корне репозитория.

Variable

Required

Default

Purpose

CANVAS_URL

да

Хост Canvas, например https://yourschool.instructure.com. Без суффикса /api/v1.

CANVAS_TOKEN

да

Ваш персональный токен доступа Canvas.

CANVAS_TIMEOUT

нет

30

Таймаут HTTP-запросов, в секундах.

CANVAS_CACHE_TTL

нет

300

Сколько секунд кэшируются результаты определения курса.

CANVAS_MAX_CONCURRENCY

нет

5

Максимальное число одновременных запросов к Canvas.

CANVAS_ANONYMIZE_STUDENTS

нет

false

Заменять имена студентов на стабильные псевдонимы в выводе инструментов.

CANVAS_DOWNLOAD_DIR

нет

системная временная папка

Куда download_file сохраняет скачанные файлы.

Выполните canvaslms-api --config, чтобы вывести итоговую конфигурацию с замаскированным токеном.

Разработка

Установка с dev-дополнениями:

uv pip install -e ".[dev]"

Запуск тестов:

pytest

Линтинг:

ruff check .

CI запускает тесты и линтинг при каждом push. Также доступен Docker-образ; его точка входа — canvaslms-api.

Полезные флаги CLI при разработке: canvaslms-api --list-tools выводит имена всех зарегистрированных инструментов, canvaslms-api --config выводит итоговые настройки, canvaslms-api --version выводит установленную версию.

Заметки о безопасности

  • Ваш токен Canvas остаётся локальным. Он читается из .env при запуске и используется только для вызова настроенного вами API Canvas.

  • Токен никогда не попадает в журналы. --config и get_privacy_status маскируют его.

  • Инструменты записи требуют явного confirm=true после предпросмотра. В Canvas ничего не меняется случайно.

  • download_file не перезапишет существующий файл по пути назначения.

Лицензия

MIT. См. LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • An MCP server that gives your AI access to the source code and docs of all public github repos

  • Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/harryx2011-boop/CanvasLMS-API'

If you have feedback or need assistance with the MCP directory API, please join our Discord server