← 返回列表

新工具 GitHub · boyuchengz/canvas-mcp

用 canvas-mcp 把 Canvas 课程接给 Claude,问截止和成绩直接答

部署一个只读 MCP 服务器并接入 Claude/ChatGPT,就能用自然语言问课程截止、缺交作业、成绩权重和公告,得到汇总回答。

开始尝试

效果

README 未提供结果截图或示例对话截图,只展示了工具列表与调用流程图;原站没有结果截图。

这是什么

新在哪里:以前查课程作业、成绩和公告要逐门课在 Canvas 里点开或自己写 API 脚本;现在把 canvas-mcp 部署一次接入 AI 助手,直接一句话问出跨课程汇总。

怎么做到的:在 Canvas 生成个人访问令牌,用 node 命令生成连接器密钥,把仓库部署到 Railway(或 Render/Fly.io/VPS/本地)并配置 CANVAS_BASE_URL、CANVAS_API_TOKEN、MCP_SECRET,得到 https://<your-domain>/<MCP_SECRET>/mcp;在 Claude 的 Settings → Connectors 添加自定义连接器,或在 ChatGPT 开启连接器开发者模式新建连接器(No authentication),或用 claude mcp add --transport http 添加,然后问“List my Canvas courses”验证。服务器把工具调用翻译成 Canvas REST API 的 GET 请求并裁剪返回内容。

适合谁
使用 Canvas LMS、想用 AI 助手一次性汇总作业与成绩的学生(以及愿意自托管的学生助手开发者)。
能帮你
把 Canvas 的只读数据变成对话式查询,跨课程汇总截止、缺交与成绩权重。

评分 三项分开看,不合成总分;热度不等于好用

新颖性
全新做法 · 2026-10-26 出现
热度
未知
易上手
需要一些准备
怎么评的

三项都由本站记录的事实按固定规则算出,编辑不能直接改档位;规则改动会写进更新说明。

新颖性

  • ●●● 全新做法,且有来源依据的出现时间在最近 30 天内
  • ●●○ 老工具新用法或近期刚开放,且有来源依据的时间在最近 30 天内
  • ●○○ 出现时间超过 30 天、未核实到精确日期,或已不再是新做法
  • 其他 出现时间未核实、晚于今天,或新颖类型未核实时按最低一档处理,不靠猜测加分

热度

  • ●●● 最近一次每周人工确认为“热门”:最近 14 天里独立讨论、实际案例、持续时间、传播平台、相对关注五项门槛全部满足(规则 heat-v1)
  • ●●○ 最近一次人工确认为“观察中”:前三项至少一项达到,或讨论增长 ≥ 50%,且至少 2 个独立案例
  • ●○○ 最近一次人工确认为“未进入跟踪”
  • 其他 还没有人工确认过的热度记录时显示“未知”。热度只统计本站已接入的信源,不代表全网

易上手

  • ●●● 准备门槛低且难度入门:不需要新账号或付费,首次尝试不超过 30 分钟,公开可用,会复制粘贴即可
  • ●●○ 准备门槛中等,或门槛低但需要改少量代码或配置
  • ●○○ 准备门槛高:需要商业软件或付费服务、首次尝试超过 2 小时、特殊硬件或网络、排队或邀请且无替代方案,或需要专业知识
  • 其他 只有介绍、还没有站内步骤,或关键步骤已失效时显示“暂不可试”;门槛未核实时显示“未核实”

怎么尝试

  • 时间 首次约 40 分钟
  • 费用 免费:代码 MIT 开源、免费;本地部署免费,Railway / Render 等托管平台可能有费用,原站未说明具体价格。
  • 账号 不需要新账号
  • 环境 Node.js 20+ 的服务端环境(Railway / Render / Fly.io / VPS 或本地);客户端为 Claude 网页/桌面/移动版、ChatGPT(连接器开发者模式)或 Claude Code 等支持 Streamable HTTP 的 MCP 客户端。
  • 准备 Canvas 个人访问令牌:服务器用它调用 Canvas REST API 的 GET 接口
  • 准备 Canvas 实例地址:填写 CANVAS_BASE_URL,如 https://canvas.instructure.com 或学校域名
  • 准备 支持 HTTPS 的 Node.js 20+ 部署环境:运行 canvas-mcp,README 以 Railway 为例
  • 准备 支持自定义连接器 / MCP 的 AI 客户端:Claude(网页/桌面/移动)、ChatGPT 连接器开发者模式或 Claude Code
  • 准备 浏览器:在 Canvas 生成令牌、在 Railway 面板配置变量

替代方案:官方 Canvas App / 网页 + 自己调 Canvas REST API。能做到:不部署服务器也能查作业、成绩与公告,或写脚本直接请求 Canvas API;差别:需要手动逐页查找或自己维护脚本,无法获得对话式的跨课程汇总。

完成替代方案不算复现本实践。

按下面的步骤就能做出第一个结果。复制命令不会自动执行。

  1. 创建 Canvas 访问令牌

    在 Canvas 打开 Account → Settings,滚动到 Approved Integrations,点击 + New Access Token,填写用途(如 canvas-mcp)和有效期,复制令牌(只显示一次)。

    预期结果:得到一个 Canvas 个人访问令牌,并已保存到安全位置

  2. 生成连接器密钥

    在命令行运行以下命令生成 24 字节随机十六进制字符串,作为 MCP_SECRET(至少 24 位 URL 安全字符)。

    bash原始来源命令
    node -e " console.log(require('crypto').randomBytes(24).toString('hex')) "

    预期结果:输出一串 48 位十六进制字符串,即连接器 URL 中的密钥

  3. 安装 Railway CLI

    README 的 Quick start 第 3 步先安装 Railway CLI。

    bash原始来源命令
    npm i -g @railway/cli

    预期结果:命令执行成功,终端可调用 railway 命令

  4. 登录、初始化并部署

    依次执行 log in、init 与 up 三条命令完成部署:

    bash原始来源命令
    railway login
    railway init
    railway up

    预期结果:登录成功、项目初始化并在 Railway 面板出现已上传的服务

  5. 配置变量与域名

    在 Railway 控制台 Variables 添加 CANVAS_BASE_URL、CANVAS_API_TOKEN、MCP_SECRET;在 Settings → Networking 点击 Generate Domain。连接器 URL 为 https://<your-domain>/<MCP_SECRET>/mcp。服务器启动时会校验所有变量,缺失会带提示退出。

    预期结果:配置齐全后服务启动,得到可访问的 HTTPS 域名

  6. 接入客户端并验证

    Claude(网页/桌面/移动)在 Settings → Connectors 选择 Add custom connector 粘贴连接器 URL(OAuth 留空);ChatGPT 开启连接器开发者模式,新建连接器粘贴 URL 并选 No authentication;或用 claude mcp add --transport http canvas https://<your-domain>/<MCP_SECRET>/mcp。随后发起对话“List my Canvas courses”。

    预期结果:对话中返回当前活跃课程列表,说明服务器连通 Canvas

原始来源:boyuchengz/canvas-mcp ↗