mcpField
C
canvas-lms-mcp-local

canvas-lms-mcp-local

本地服务
github.com/Fireiscoolsolo科研与教育1今天更新

关于 canvas-lms-mcp-local

canvas-lms-mcp-local 为使用 Canvas 的学生提供本地 MCP 服务,可在 AI 助手中查看课程、成绩、作业和日程,并规划学习。它通过本机标准输入输出连接,不开放网络端口;提交或发送等写入操作需先预览并确认。

主要功能

  1. 01查看课程、作业和截止日期
  2. 02分析成绩并计算目标分数
  3. 03提交文本、链接和文件
  4. 04读取讨论、收件箱与课程内容
  5. 05写入操作先预览再确认

适用场景

  1. 01汇总本周各课程的到期作业
  2. 02估算期末成绩所需分数
  3. 03找出对成绩影响最大的缺交作业

MCP 相关

作为本地 MCP 服务,通过 stdio 连接桌面或命令行 MCP 客户端,并调用 Canvas API。使用 Canvas 访问令牌进行身份验证。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"fireiscoolsolo-canvas-lms-mcp-local": {
"command": "npx",
"args": [
"-y",
"canvas-lms-mcp-local"
],
"env": {
"CANVAS_API_TOKEN": "<CANVAS_API_TOKEN>",
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>"
}
}
}
}
启动命令npx -y canvas-lms-mcp-local
需要配置的环境变量
CANVAS_API_TOKEN密钥Canvas personal access token (Account > Settings > Approved Integrations > New Access Token)
CANVAS_BASE_URLYour school's Canvas address, e.g. https://yourschool.instructure.com

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmcanvas-lms-mcp-local1.0.3

工具

209

收录的工具列表 · 更新于 1 天前

此工具无需参数。

详细介绍

提示

想在手机、网页或多台电脑上使用? 请前往 🌐 远程版 →。它包含相同的 209 个工具,通过受密码保护的 ngrok 隧道提供服务,并在多台电脑之间自动故障切换。

💻 Canvas LMS MCP:本地版

在自己的电脑上通过 AI 助手使用 Canvas。无需隧道、无需密码、无需后台服务。

209 个工具 · 一个配置文件 · 不会暴露到互联网

npm npm downloads npm downloads per month Release downloads Node.js MCP License: MIT Website

网站 · 快速开始 · 配置 · 工具 · 故障排除

对话示例:询问期末考试需要考多少分,以及本周有哪些截止事项(示例数据)


🤔 本地版还是远程版?

💻 本地版(此仓库)🌐 远程版
适用范围此电脑上的桌面端和命令行 MCP 客户端任何设备上支持远程服务的 MCP 客户端
运行时间仅在 AI 应用打开时运行,因为应用会启动它始终在后台运行
所需条件Node.js 和 Canvas 令牌Node.js、Canvas 令牌、ngrok 账号和密码
互联网暴露无:不会开放端口公开的 HTTPS 地址,受密码保护
多台电脑需在每台电脑上分别安装内置电脑之间的自动故障切换
设置时间约 5 分钟约 15 分钟,每增加一台电脑约需 5 分钟

✨ 亮点

  • 📊 成绩分析:what_if_grade、compute_needed_score、grade_impact_ranking、完整的加权成绩明细
  • 📅 规划:get_week_ahead、semester_snapshot、study_priority_ranking,一次调用即可查看所有课程的未完成作业
  • 📝 提交作业:提交文本、URL 和文件,并可先预览模拟提交结果
  • 💬 讨论区和收件箱:一次请求即可阅读完整讨论串,并给教师发送消息
  • 📁 内容:文件、页面、模块、讲座字幕以及完整的 .imscc 课程导出

🧭 工作原理

 Your AI app (MCP client)      ──stdio──►  node index.js  ──HTTPS──►  your school's Canvas API
        (starts the server)              (209 tools, runs only
                                          while your app is open)

无需 Web 服务器,无需开放端口,也无需保持服务运行。AI 应用打开时会启动服务,关闭时会停止服务。

🚀 快速开始

你需要: Node.js 18+ 和一个 Canvas 账号。无需自行下载任何内容:AI 应用会通过 npx 获取服务。

1. 创建 Canvas 访问令牌

在 Canvas 中,前往 Account → Settings → Approved Integrations → + New Access Token。Canvas 只会显示一次令牌,请立即复制。学生令牌通常会在 30–120 天后过期。

2. 将其添加到你的 AI 应用
桌面应用
  1. 打开应用的 MCP 配置文件。它通常位于 Settings → Developer 或 Settings → MCP servers 下,大多数应用使用 mcpServers JSON 块。

  2. 添加此 canvas 条目,并填入你的令牌和学校地址(另见 mcp_config.example.json):

    {
      "mcpServers": {
        "canvas": {
          "command": "npx",
          "args": ["-y", "canvas-lms-mcp-local"],
          "env": {
            "CANVAS_API_TOKEN": "your_token_here",
            "CANVAS_BASE_URL": "https://yourschool.instructure.com"
          }
        }
      }
    }
    
  3. 完全退出应用:在 Windows 上,右键单击系统托盘图标并选择 Quit;在 macOS 上,按 ⌘Q。然后重新打开应用。仅关闭窗口是不够的。

命令行客户端

将此命令注册为名为 canvas 的 stdio MCP 服务,并在其环境中设置 CANVAS_API_TOKEN 和 CANVAS_BASE_URL:

npx -y canvas-lms-mcp-local

然后检查客户端的 MCP 状态,确认连接成功。

3. 试用

向助手询问:“运行 test_connection。” 它会检查你的身份、课程、计划表、收件箱和未提交的作业,并报告学校禁用的功能。

然后试试这些问题:“这周有哪些截止事项?”、“期末考试需要考多少分才能拿到 B?” 或 “哪些未提交的作业对我的成绩影响最大?”

更喜欢从源代码运行?
git clone https://github.com/Fireiscoolsolo/canvas-lms-mcp-local.git
cd canvas-lms-mcp-local
npm install

将 .env.example 复制到与 index.js 相同的文件夹下并命名为 .env,填入你的令牌和学校地址,然后将配置指向该文件,而不是使用 npx:

{ "mcpServers": { "canvas": { "command": "node", "args": ["C:/Users/YOUR-NAME/Documents/canvas-lms-mcp-local/index.js"] } } }

在 Windows 上可以使用正斜杠。在 macOS 上,路径类似 /Users/you/canvas-lms-mcp-local/index.js。在 Windows 上,请确保文件名为 .env,而不是 .env.txt。要检查文件名,请在文件资源管理器中开启 View → File name extensions。

⚙️ 配置

按照第 2 步的示例,将设置放在配置的 env 块中。如果从源代码运行,也可以使用 index.js 同目录下的 .env 文件。

变量必需默认值说明
CANVAS_API_TOKEN✅—你的 Canvas 个人访问令牌
CANVAS_BASE_URL✅—例如:https://yourschool.instructure.com
CANVAS_ALLOW_WRITEStruefalse = 只读模式
CANVAS_PROFILEfullcore = 精选工具子集
CANVAS_CACHE_TTL60响应缓存时间,单位为秒
CANVAS_TIMEZONEsystem用于计算截止日期的 IANA 时区
CANVAS_DOWNLOAD_DIRcanvas-downloads,位于 index.js 同目录下载工具保存文件的位置

🧰 工具

分组数量亮点
身份24check_token_expiry、get_rate_limit_status、自定义数据存储
课程16权限、昵称、收藏
作业12list_missing_submissions、get_late_policy
提交16文本、URL 和文件提交、评论、评分标准评估
成绩13what_if_grade、compute_needed_score、grade_impact_ranking
测验12只读:日期、尝试记录、复查
讨论17get_full_topic_view、回复、评分
收件箱14消息、find_recipients、对话线程
日历11事件、办公时间预约
内容33文件、页面、模块、字幕、.imscc 导出
小组11小组工作区
评分标准11同伴评审
搜索3smart_search,支持关键词回退
规划11get_week_ahead、semester_snapshot、study_priority_ranking
元数据4使用 raw_canvas_request 调用上述列表中未列出的任何端点

🔐 安全

  • **不会暴露任何内容:**服务不会监听任何端口。只有启动它的应用能通过专用管道与它通信。
  • **确认门控:**发送、提交、发布或删除内容的工具会先返回预览,只有在调用时传入 confirm: true 才会执行操作。
  • **提示注入隔离:**其他人编写的文本会用 <<<CANVAS_CONTENT>>> 标记括起来,并标注为不可信内容。
  • **不参与测验:**不会提供测验作答端点。

切勿提交 .env。它已列入 .gitignore。请参阅 SECURITY.md。

🎓 负责任地使用

这是一款用于学习和组织事务的工具,可帮助你查看截止日期、了解成绩并规划每周安排。它不会代你参加测验;在你查看预览并确认之前,不会发送或提交任何内容。

  • 请遵守学校的学术诚信和可接受使用政策。有些学校会限制使用个人 API 令牌或第三方工具。
  • 想要完全避免意外更改?将 CANVAS_ALLOW_WRITES=false 设为只读模式。

🛠️ 故障排除

症状解决方法
应用中没有显示 Canvas 工具检查配置是否为有效的 JSON,以及 index.js 的路径是否为绝对路径,然后完全退出并重新打开应用
spawn npx ENOENT / 找不到“npx”安装 Node.js,然后重启应用。如果仍然失败,请将 command 设为完整路径,例如 "C:/Program Files/nodejs/npx.cmd"
首次启动速度较慢npx 首次运行时会下载软件包。之后启动会很快
“CANVAS_API_TOKEN is not set”将其添加到配置中 canvas 条目的 env 块。如果从源代码运行,请确认 .env 与 index.js 位于同一目录,且文件名不是 .env.txt
Canvas 返回 401你的令牌已过期。请创建一个新令牌(步骤 2)
修改 index.js 后未生效请重启 AI 应用,因为工具列表会在连接时加载
日志在哪里?在 AI 应用的 MCP 日志文件夹中。此服务的每一行日志都以 [canvas-mcp] 开头

已知限制: 学生令牌无法访问管理端点、成绩册历史记录、课程分析或测验统计信息。smart_search 是 Canvas 的测试版功能,且经常返回 404。

📄 许可证

MIT。本项目与 Instructure 无关。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。