关于 Canvas LMS (Local-First)
Canvas LMS 本地优先 MCP 服务,将课程、作业、截止日期和成绩等 Canvas 数据接入兼容客户端。适用于学生、教师及 MCP 开发者,使用 stdio 连接官方 API,令牌保留在本机。
主要功能
- 01查看课程与作业
- 02查询模块、公告和页面
- 03获取成绩、日程与待办
- 04批量下载课程文件
- 05本地运行并使用 stdio
适用场景
- 01汇总多个课程的本周到期作业
- 02查看下周日程和规划事项
- 03按课程检查当前成绩
- 04下载课程内容供离线索引
MCP 相关
作为 MCP 服务,通过 stdio 向 Claude Code、Claude Desktop 等兼容客户端提供 Canvas 查询工具。它在本机读取配置并直接请求 Canvas 官方 API,不使用外部令牌中介。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx canvas-local-mcpCANVAS_BASE_URLCanvas institution root URL (no /api/v1 suffix), e.g. https://your-institution.instructure.comCANVAS_TOKEN密钥Canvas personal access token (Account -> Settings -> Approved Integrations -> New Access Token)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
10收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| active_only | boolean | 否 |
详细介绍
Canvas LMS MCP 服务(canvas-mcp)
在一个地方向 Claude 询问 Canvas 课程、作业、截止日期、模块和成绩。
canvas-mcp 是一款面向 Canvas LMS 用户(学生、教师和 MCP 构建者)的本地优先 MCP 服务。它将 Canvas REST API 操作转换为 MCP 工具,可在 Claude Code、Claude Desktop 和其他兼容 MCP 的客户端中使用。
状态: alpha。单用户,不提供担保,API 接口仍可能变动。若遇到问题,请提交 issue。
适用对象
- 学生:希望在一个视图中查看多门课程
- 教育工作者:希望更快访问作业、模块和公告
- MCP 用户:希望在本地 Claude 工作流中使用 Canvas 数据
可以向 Claude 提出的问题
- “我所有正在进行的课程中,本周有哪些作业到期?”
- “显示下周的即将到来的事件和计划事项。”
- “按课程列出我当前的成绩。”
- “获取课程
12345的模块(含项目)。” - “显示课程
12345的公告。” - “获取课程
12345中的页面syllabus。”
快速开始
前提条件:Python 3.10+。
1) 创建 Canvas 个人访问令牌
在 Canvas 中:Account → Settings → Approved Integrations → + New Access Token。 复制显示的令牌(Canvas 之后不会再次显示)。
2) 安装
从 PyPI 安装(推荐):
pip install canvas-local-mcp
或从源代码安装:
git clone https://github.com/admin978/canvas-mcp.git && cd canvas-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
3) 配置 ~/.canvas.env
curl -fsSL https://raw.githubusercontent.com/admin978/canvas-mcp/main/.canvas.env.example -o ~/.canvas.env
chmod 600 ~/.canvas.env
# edit ~/.canvas.env: set CANVAS_BASE_URL (institution root, no /api/v1)
# and paste the token into CANVAS_TOKEN
有关令牌安全的建议(最小权限、文件权限、轮换/撤销和漏洞报告),请参阅 SECURITY.md。
4) 在 MCP 客户端中注册
Claude Code:
claude mcp add canvas-local -- canvas-local-mcp
Claude Desktop:
- macOS 示例路径:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows 示例路径:
%APPDATA%\Claude\claude_desktop_config.json - Linux 示例路径:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"canvas-local": {
"command": "canvas-local-mcp"
}
}
}
提供的工具
list_courseslist_assignmentslist_moduleslist_announcementsget_pageget_file_infoget_gradesplanner_itemsupcoming_eventstodo
批量导出
canvas-local-mcp-dump 可下载课程文件及相关内容,以供离线索引。
canvas-local-mcp-dump # all active courses
canvas-local-mcp-dump 12345 67890 # specific course IDs
默认将输出保存到 ./canvas-dump/。可通过 CANVAS_DUMP_DIR=/path/to/dir 更改目录。
本地优先、隐私与令牌流转
- 服务在本地运行,并通过 stdio 传输方式与 MCP 客户端通信。
- 配置从
~/.canvas.env读取(CANVAS_BASE_URL、CANVAS_TOKEN)。 - 请求从本地服务发送到 Canvas 官方 API 端点。
- 请求流程中不会使用外部令牌代理。
- 安全建议和披露政策: SECURITY.md。
演示
目前尚未提交演示 GIF。你仍可快速验证工作流:
试试这些提示词
注册 MCP 服务后,向 Claude 询问:
- “列出我正在进行的 Canvas 课程。”
- “我所有正在进行的课程中,本周有哪些作业到期?”
- “显示下周的即将到来的事件和计划事项。”
- “按课程列出我当前的成绩。”
占位说明:未来的 PR 中会在此添加简短的终端/GIF 演示。
开发
需要 Python 3.10+。
pip install -e ".[dev]"
ruff check canvas_local_mcp tests # lint
pytest # tests run against a mocked Canvas API — no token needed
每次推送和拉取请求时,CI 都会在 Python 3.10–3.13 上运行 lint 和测试。
发布新版本
请按此顺序发布新版本(例如 0.1.4),以确保 PyPI 和 MCP Registry 上的版本一致。
1. 在所有位置更新版本号
在同一个 PR 中,将以下三个文件的版本号都更新为新版本:
| 文件 | 字段 |
|---|---|
pyproject.toml | [project].version |
canvas_local_mcp/__init__.py | __version__ |
server.json | 根级 version 和 packages[0].version |
如果这三处版本号不一致,CI 测试 test_server_json_version_matches_package 和工作流验证步骤都会失败。
2. 将 PR 合并到 main
合并前,请等待所有 CI 检查通过。
3. 将 canvas-local-mcp 发布到 PyPI
该项目使用 Trusted Publisher (OIDC) 上传到 PyPI。
请在创建标签之前触发 PyPI 发布工作流(或者在已配置凭据的情况下运行 python -m build && twine upload dist/*),这样 MCP Registry 获取软件包时,它就已经可用了。
4. 创建并推送标签 vX.Y.Z
git tag v0.1.4
git push origin v0.1.4
这会触发 Publish to MCP Registry 工作流,该工作流会:
- 验证
server.json、pyproject.toml和标签声明的版本是否一致。 - 通过 GitHub OIDC 将
server.json发布到 MCP Registry(无需密钥)。
5. 验证
- PyPI:
https://pypi.org/project/canvas-local-mcp/ - MCP Registry:
https://registry.modelcontextprotocol.io/?q=canvas-mcp - GitHub Actions:
https://github.com/admin978/canvas-mcp/actions
重要:绝不要重复使用或移动已有标签。如果出错后需要重新发布, 请将版本号升级到下一个补丁版本(例如
0.1.4),然后从第 1 步重新开始。
贡献、路线图与支持
- 问题 / 功能请求
- 欢迎提交修复 Bug 和改进 Canvas 工作流的拉取请求
- 路线图方向目前记录在未解决的问题和即将提交的 PR 中
如果这个项目能帮助你通过 Claude 管理 Canvas,请尝试上述流程,并考虑点亮一颗 ⭐,让更多学生和教育工作者找到它。
许可证
MIT — 参见 LICENSE。
由 AGENTE 404 S.L. 构建 · [email protected]
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。