Canvas LMS MCP 服务器

一个连接Claude到Canvas LMS API的MCP服务器,允许Claude直接从Canvas读取课程、作业、成绩、公告等信息。

  • by alexherman11
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 alexherman11/Canvas_MCP

使用说明

Canvas LMS MCP服务器

将Claude连接到Canvas LMS API的MCP(模型上下文协议)服务器。让Claude直接从Canvas阅读您的课程、作业、成绩、公告、文件等。

作品 远程地 (托管在Railway上,没有本地设置)或 本地 (克劳德桌面的stdio传输)。

工具

工具 说明
canvas_get_courses 列出所有活动课程
canvas_get_assignments 课程作业(截止日期、分数、提交状态)
canvas_get_grades 课程的当前成绩
canvas_get_announcements 课程的最新公告
canvas_get_upcoming_due 所有课程的作业将在接下来的N天内完成
canvas_submit_text_entry 提交基于文本的作业
canvas_get_course_files 列出课程中的文件
canvas_send_message 发送Canvas收件箱消息

快速入门--远程(推荐)

无需安装。只需将此添加到您的Claude Desktop配置中:

窗户: %APPDATA%\Claude\claude_desktop_config.json 雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "canvas-lms": {
      "url": "https://YOUR_RAILWAY_URL/mcp",
      "headers": {
        "x-canvas-api-token": "YOUR_CANVAS_API_TOKEN",
        "x-canvas-base-url": "https://canvas.yourschool.edu"
      }
    }
  }
}

替换 YOUR_RAILWAY_URL 使用部署的服务器URL,并填写您的Canvas凭据。

然后 重新启动克劳德桌面 (完全退出,而不仅仅是关闭窗口)。

本地设置(开发)

1.获取Canvas API代币

  1. 登录您的Canvas实例(例如。 https://canvas.yourschool.edu)
  2. 首选 账户 > 设置
  3. 滚动到 已批准的集成
  4. 点击 +新访问令牌
  5. 为其命名(例如“Claude MCP”),根据需要设置到期时间,单击 生成令牌
  6. 立即复制令牌 --你再也看不到了

2.克隆和安装

git clone https://github.com/alexherman11/Canvas_MCP.git
cd Canvas_MCP
npm install

3.配置凭据

cp .env.example .env

编辑 .env 并填写您的值:

CANVAS_BASE_URL=https://canvas.yourschool.edu
CANVAS_API_TOKEN=your_token_here

4.测试

node test.js

这将:

  • 验证Canvas API证书是否有效
  • 调用每个API端点
  • 启动stdio和HTTP MCP服务器并确认它们工作正常

5.在克劳德桌面(本地)注册

{
  "mcpServers": {
    "canvas-lms": {
      "command": "node",
      "args": ["/absolute/path/to/Canvas_MCP/src/index.js"],
      "env": {
        "CANVAS_BASE_URL": "https://canvas.yourschool.edu",
        "CANVAS_API_TOKEN": "your_token_here"
      }
    }
  }
}

重要提示: 替换中的路径 args 通过绝对路径 src/index.js 在你的机器上。

铁路自助托管

  1. 分叉此回购
  2. 在上创建新项目 铁路 并连接你的叉子
  3. Railway自动检测Node.js——不需要Dockerfile
  4. 可选设置 CANVAS_BASE_URL 和 CANVAS_API_TOKEN 单租户模式下铁路的环境变量
  5. 部署--服务器在指定的位置启动 PORT 自动地
  6. 在Claude Desktop配置中使用Railway提供的URL(请参阅上面的快速入门)

服务器公开:

  • POST/GET/DELETE /mcp --MCP可流式HTTP端点
  • GET /health --健康检查(退货 200 OK)

在Claude Desktop中验证

重启后,试着问克劳德:

  • “这个季度我要上什么课?”
  • “本周有什么作业要交?”
  • “我(课程名称)的成绩是多少?”

项目结构

Canvas_MCP/
  src/
    index.js        — MCP server entry point (stdio transport, local dev)
    server-http.js  — MCP server entry point (HTTP transport, remote)
    tools.js        — All 8 tool definitions and handlers
    canvas-api.js   — Canvas REST API client (pagination, retries)
    config.js       — Environment configuration
  test.js           — Standalone test script
  .env.example      — Template for credentials
  .gitignore        — Excludes .env and node_modules
  package.json
  README.md

建筑

Remote mode:
  Claude Desktop/claude.ai → HTTPS → Railway → Streamable HTTP → MCP server → Canvas API
                                                                    ↑
                                                      reads x-canvas-api-token &
                                                      x-canvas-base-url from headers

Local mode:
  Claude Desktop → spawns process → stdio → MCP server → Canvas API
                                               ↑
                                    reads CANVAS_API_TOKEN &
                                    CANVAS_BASE_URL from env vars

许可证

麻省理工学院