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_URL 和 CANVAS_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。

  • 令牌永远不会被记录。--config 和 get_privacy_status 会对其掩码处理。

  • 写入工具在预览后需要显式的 confirm=true。Canvas 中的任何内容都不会被意外更改。

  • download_file 不会覆盖目标路径下已存在的文件。

许可证

MIT。参见 LICENSE。

Related MCP Connectors

Related MCP Servers