CanvasLMS-API
CanvasLMS - API
CanvasLMS - API 是一个本地 MCP 服务器,可将您的 Canvas LMS 账户接入 AI 助手。它在您的机器上运行,使用您自己的个人访问令牌与 Canvas 通信,并暴露约 100 个工具,涵盖课程、作业、评分、讨论、模块、页面、文件、消息、同伴互评和无障碍功能。每个工具都返回 Markdown。每个会更改 Canvas 的工具都会先预览其更改,并且只有在您确认后才会应用。
快速开始
获取 Canvas 个人访问令牌:在 Canvas 中转到 账户 > 设置 > 已批准的集成 > 新建访问令牌。
克隆仓库并安装。
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 .复制示例环境文件并填写您的 Canvas 主机和令牌。
cp .env.example .env验证连接。
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.jsonmacOS:
~/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 主机,例如 | |
| 是 | 您的 Canvas 个人访问令牌。 | |
| 否 |
| HTTP 请求超时时间,以秒为单位。 |
| 否 |
| 课程解析结果的缓存时长,以秒为单位。 |
| 否 |
| 对 Canvas 的最大并发请求数。 |
| 否 |
| 在工具输出中用稳定的化名替换学生姓名。 |
| 否 | 系统临时目录 |
|
运行 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。
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseCqualityCmaintenanceLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo list, and bulk file dump as MCP tools.1029 PyPI4MIT
- AlicenseAqualityAmaintenanceMCP server for Canvas LMS, providing 115+ tools to read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.1851,751 npm10MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.10 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.-