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 installed
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
- AlicenseCqualityAmaintenanceLocal-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.104MIT
- AlicenseBqualityAmaintenanceMCP 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.241639955MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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