Canvas课程管理服务器

一个连接Claude到Canvas LMS的MCP服务器,允许通过自然对话管理课程作业。

  • by lucanardinocchi
  • TypeScript
  • 本地部署
  • 24 星标
  • 更新于
在 GitHub 查看 lucanardinocchi/canvas-mcp

使用说明

Claude的Canvas LMS MCP服务器

一个MCP(模型上下文协议)服务器,将Claude连接到Canvas LMS,让您通过自然对话管理您的课程作业。

问克劳德这样的问题:

  • “本周我有什么作业要交?”
  • “给我看看我论文作业的评分标准”
  • “我的教授在反馈中说了什么?”
  • “列出我的所有课程”
  • “是否有逾期未交的作业?”

快速开始

1.获取Canvas API代币

  1. 登录Canvas
  2. 点击您的 头像 → 设置
  3. 滚动到 已批准的集成
  4. 点击 +新访问令牌
  5. 命名(例如“Claude”)并单击 生成令牌
  6. 复制令牌 -你不会再看到它了!

2.安装MCP服务器

# Clone this repository
git clone https://github.com/lucanardinocchi/canvas-mcp.git
cd canvas-mcp

# Install dependencies
npm install

# Build the project
npm run build

3.配置克劳德桌面

打开Claude Desktop的配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

添加(或合并)此配置:

{
  "mcpServers": {
    "canvas": {
      "command": "node",
      "args": ["/FULL/PATH/TO/canvas-mcp/dist/index.js"],
      "env": {
        "CANVAS_API_TOKEN": "YOUR_TOKEN_HERE",
        "CANVAS_BASE_URL": "https://your-school.instructure.com"
      }
    }
  }
}

替换:

  • /FULL/PATH/TO/canvas-mcp 使用克隆此仓库的实际路径
  • YOUR_TOKEN_HERE 使用Canvas API代币
  • https://your-school.instructure.com 使用您的Canvas URL

常见画布URL:

大学 画布URL
悉尼大学 https://canvas.sydney.edu.au
通用说明书 https://canvas.instructure.com
您的学校 登录Canvas时检查浏览器

4.重新启动克劳德桌面

完全退出克劳德桌面(Cmd+Q/Alt+F4)并重新打开。

您现在应该可以在Claude中看到Canvas工具了!


它能做什么?

📚 课程

  • 列出您注册的所有课程
  • 获取课程详情和教学大纲

📝 作业

  • 列出作业(按即将完成、逾期等进行筛选)
  • 查看完整的作业详细信息和说明
  • 见量规和评分标准
  • 检查你的成绩和提交状态

💬 讨论

  • 查看讨论板
  • 发布新的讨论条目
  • 回复同学

📤 提交

  • 直接提交文本作业
  • 上传文件以供提交
  • 查看讲师反馈和评论

🔍 搜索

  • 按截止日期查找作业
  • 搜索课程内容
  • 获取所有课程中即将进行的所有工作

所有可用工具

工具 它做什么
list_courses 列出您注册的课程
get_course 获取特定课程的详细信息
list_assignments 列出作业(带过滤器)
get_assignment 获取完整的作业细节+评分标准
get_rubric 获取作业的评分标准
get_submission 查看您的提交和反馈
submit_assignment 向作业提交文本或URL
upload_file 上传文件以供提交
list_modules 浏览课程模块
list_announcements 获取课程公告
list_discussions 查看讨论主题
get_discussion_entries 阅读讨论帖子
post_discussion_entry 发布到讨论
reply_to_discussion 回复讨论帖子
find_assignments_by_due_date 查找日期范围内的作业
get_upcoming_assignments 在接下来的N天内完成工作
get_overdue_assignments 查找逾期工作
search_course_content 搜索模块和作业
get_all_upcoming_work 所有课程即将开展的工作

故障排除

“画布工具未显示”

  1. 确保您完全重新启动了Claude Desktop
  2. 检查配置中的路径是否正确
  3. 验证您的 claude_desktop_config.json 是有效的JSON

“401未经授权”错误

您的API令牌无效或已过期。在Canvas设置中生成一个新的。

“403禁止”错误

您无权访问该资源。课程可能已经结束,或者你没有注册。

“连接被拒绝”或网络错误

检查你的 CANVAS_BASE_URL 正确(没有尾随斜线)。


安全说明

⚠️ 对您的API代币保密!

  • 永远不要将代币提交给git
  • 不要与他人共享您的令牌
  • 创建令牌时设置过期日期
  • 撤销您不再使用的令牌(画布设置→ 已批准的集成)

您的API代币与Canvas帐户具有相同的访问权限-任何拥有该代币的人都可以查看您的成绩、提交作业等。


发展

# Install dependencies
npm install

# Build once
npm run build

# Watch mode (auto-rebuild on changes)
npm run dev

项目结构

canvas-mcp/
├── src/
│   ├── index.ts           # MCP server entry point
│   ├── canvas-client.ts   # Canvas API wrapper
│   ├── tools/             # Tool implementations
│   │   ├── courses.ts
│   │   ├── assignments.ts
│   │   ├── submissions.ts
│   │   ├── discussions.ts
│   │   ├── modules.ts
│   │   └── search.ts
│   └── types/
│       └── canvas.ts      # TypeScript types
├── dist/                  # Compiled output
├── package.json
└── tsconfig.json

贡献

欢迎投稿!请随意:

  • 报告错误
  • 建议新功能
  • 提交拉取请求

许可证

麻省理工学院-随心所欲地使用它!


致谢

内置: