Skip to main content
Glama

CanvasLMS - API

CanvasLMS - API 是一个本地 MCP 服务器,可将您的 Canvas LMS 账户接入 AI 助手。它在您的机器上运行,使用您自己的个人访问令牌与 Canvas 通信,并暴露约 100 个工具,涵盖课程、作业、评分、讨论、模块、页面、文件、消息、同伴互评和无障碍功能。每个工具都返回 Markdown。每个会更改 Canvas 的工具都会先预览其更改,并且只有在您确认后才会应用。

快速开始

  1. 获取 Canvas 个人访问令牌:在 Canvas 中转到 账户 > 设置 > 已批准的集成 > 新建访问令牌

  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

    这会打印您的姓名、用户 ID 和活跃课程。如果失败,请检查 .env 中的 CANVAS_URLCANVAS_TOKEN

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。

其他客户端

任何支持 stdio 服务器的 MCP 客户端都可以直接启动该可执行文件,方式与上面的 Claude Code 和 Claude Desktop 相同。

对于只支持 HTTP 的客户端,请使用 HTTP 传输方式运行服务器:

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

将客户端指向 http://127.0.0.1:7100。服务器仍从仓库文件夹中的 .env 读取 Canvas 凭据。

行为说明

  • 课程标识符。 任何 course 参数都接受数字 Canvas ID、课程代码(ENG101)、课程名称的一部分或 sis_course_id:X。如果不确定要使用哪一个,请先使用 list_courses

  • 确认门。 每个会更改 Canvas 的工具都接受一个 confirm: bool = false 参数。不带该参数调用时,工具会返回将要更改的预览,并且不会发出任何改变 Canvas 的请求。查看预览后,使用 confirm=true 再次调用。

  • 权限。 每个工具都以令牌所有者的身份运行。学生令牌无法查看其他学生的私有数据,也无法使用评分或批量消息等教育者工具;这些调用会返回 Canvas 403 并附带缺少什么权限的提示。

  • 输出。 每个工具都返回 Markdown,格式化为可直接在聊天记录中显示。

  • 匿名化。CANVAS_ANONYMIZE_STUDENTS=true 时,工具输出中的学生姓名将替换为每个课程内稳定的化名,而不是真实姓名。

工具参考

写入工具(标记为 confirm)在再次以 confirm=true 调用之前会返回预览。

课程与身份

工具

用途

confirm

get_profile

获取令牌所有者的 Canvas 个人资料

get_enrollments

列出令牌所有者跨课程的所有注册记录

list_courses

列出并搜索令牌所有者可见的课程

get_course

获取一门课程的详细信息

get_syllabus

获取课程的教学大纲正文

get_course_overview

总结课程:教学大纲、模块、即将到来的作业

get_course_structure

获取课程的完整模块/页面/作业大纲

get_cache_status

显示哪些课程解析数据已被缓存

clear_cache

清除课程解析缓存

学生

工具

用途

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

作业与评分

工具

用途

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

评分量规

工具

用途

confirm

list_rubrics

列出课程的评分量规

get_rubric

获取一个评分量规的标准

get_rubric_assessment

获取提交的评分量规评估

create_rubric

创建评分量规

confirm

create_rubric_from_csv

从 CSV 定义创建评分量规

confirm

associate_rubric

将评分量规附加到作业

confirm

讨论与公告

工具

用途

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

模块

工具

用途

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

页面

工具

用途

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

文件

工具

用途

confirm

list_files

列出课程的文件

read_file

读取文本文件的内容

download_file

将文件下载到磁盘

upload_file

将文件上传到课程

confirm

消息

工具

用途

confirm

list_conversations

列出 Canvas 收件箱对话

get_conversation

获取一个对话的消息

get_unread_count

获取未读消息数

mark_conversations_read

将对话标记为已读

confirm

send_conversation

发送新消息

confirm

send_bulk_messages

向多个收件人发送相同的消息

confirm

同伴互评

工具

用途

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

人员与隐私

工具

用途

confirm

list_users

列出课程中已注册的用户

list_groups

列出课程的小组

check_enrollment

检查某用户在课程中的注册情况

export_anonymization_map

导出化名到真实姓名的映射

confirm

get_privacy_status

显示匿名化是否处于启用状态

无障碍

工具

用途

confirm

scan_course_content_accessibility

扫描课程页面和文件中的无障碍问题

fix_accessibility_issues

对检测到的无障碍问题应用修复

confirm

fetch_ufixit_report

获取现有的 UFIXIT 无障碍报告

parse_ufixit_violations

从 UFIXIT 报告中解析违规项

format_accessibility_summary

将无障碍扫描格式化为可读摘要

课程复制

工具

用途

confirm

create_content_migration

启动课程内容迁移/复制

confirm

get_content_migration_status

检查内容迁移的进度

工具

用途

confirm

search_tools

按关键词搜索可用工具

配置

所有配置均来自环境变量,从仓库根目录的 .env 文件中加载。

变量

必需

默认值

用途

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 可打印解析后的配置,令牌会被掩码处理。

开发

使用开发附加依赖安装:

uv pip install -e ".[dev]"

运行测试:

pytest

代码检查:

ruff check .

CI 在每次推送时运行测试和代码检查。还提供了 Docker 镜像;其入口点为 canvaslms-api

开发期间有用的 CLI 标志:canvaslms-api --list-tools 打印所有已注册的工具名称,canvaslms-api --config 打印解析后的设置,canvaslms-api --version 打印已安装的版本。

安全说明

  • 您的 Canvas 令牌保留在本地。它在启动时从 .env 读取,仅用于调用您配置的 Canvas API。

  • 令牌永远不会被记录。--configget_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