返回市场
麦克画布学习管理系统

麦克画布学习管理系统

作者:DMontgomery4065 星标更新:2025-06-27

项目介绍

Canvas MCP Server v2.2.0

一个全面的模型上下文协议(MCP)服务器,适用于Canvas LMS,具有完整的学员、教师和账户管理功能。

🚀 v2.2.0 新特性

  • 🔧 修复了:课程创建时“页面未找到”错误(缺少account_id参数)
  • 👨‍💼 账户管理:完整的账户级管理工具
  • 📊 报告与分析:生成并访问Canvas账户报告
  • 👥 用户管理:在账户级别创建和管理用户
  • 🏢 多账户支持:处理账户层次结构和子账户
  • ✅ API合规性:所有端点现在遵循正确的Canvas API模式

🎯 主要功能

🎓 学员

  • 课程管理:访问所有课程、大纲和课程材料
  • 作业流程:查看、提交(文本/URL/文件)并跟踪作业
  • 沟通:参与讨论、阅读公告、发送消息
  • 进度跟踪:监控成绩、模块完成情况及日历事件
  • 测验:参加测验、查看结果和反馈
  • 文件访问:浏览并下载课程文件和资源

👨‍🏫 教师

  • 课程创建:创建和管理课程结构(现在具有正确的账户支持)
  • 评分:评分、提供反馈、管理评分标准
  • 用户管理:注册学生、管理权限
  • 内容管理:创建作业、测验、讨论

👨‍💼 账户管理员(新!)

  • 账户管理:管理机构的Canvas账户
  • 用户管理:跨账户创建和管理用户
  • 课程监督:列出并管理账户内的所有课程
  • 报告:生成注册、成绩和活动报告
  • 子账户管理:处理账户层次结构和结构

🛠️ 技术卓越

  • 健壮的API:自动重试、分页、全面的错误处理
  • 云就绪:Docker容器、Kubernetes清单、健康检查
  • 经过充分测试:单元测试、集成测试、模拟、覆盖率报告
  • 类型安全:使用严格的类型实现全TypeScript
  • 50+ 工具:全面覆盖Canvas LMS功能

快速开始

选项1:Claude桌面集成(推荐的MCP设置)

添加到claude_desktop_config.json

{
  "mcpServers": {
    "canvas-mcp-server": {
      "command": "npx",
      "args": ["-y", "canvas-mcp-server"],
      "env": {
        "CANVAS_API_TOKEN": "your_token_here",
        "CANVAS_DOMAIN": "your_school.instructure.com"
      }
    }
  }
}

选项2:NPM包

# 全局安装
npm install -g canvas-mcp-server

# 配置
export CANVAS_API_TOKEN="your_token_here"
export CANVAS_DOMAIN="your_school.instructure.com"

# 运行
canvas-mcp-server

选项3:Docker

docker run -d \
  --name canvas-mcp \
  -e CANVAS_API_TOKEN="your_token" \
  -e CANVAS_DOMAIN="school.instructure.com" \
  ghcr.io/dmontgomery40/mcp-canvas-lms:latest

💼 账户管理员工作流示例

创建新课程(已修复!)

"在账户123中创建名为'高级生物学'的新课程"

现在正确地创建带有所需account_id参数的课程

管理用户

"在我们的主账户中创建新的学生用户John Doe,邮箱为john.doe@school.edu"

创建用户账户,并正确设置别名和注册

生成报告

"为账户456生成当前学期的注册报告"

启动Canvas报告系统进行机构分析

列出账户课程

"显示我们工程账户中的所有已发布的计算机科学课程"

高级过滤和搜索账户课程目录

🎓 学员工作流示例

检查本周作业

"这周我有哪些作业需要提交?"

列出带有截止日期、分数和提交状态的即将到期的作业

提交作业

"帮我提交我的英语101第3次作业的论文"

指导通过文本提交,并提供格式选项

查看成绩

"我在生物课上的当前成绩是多少?"

显示当前分数、成绩和作业反馈

参与讨论

"显示我哲学课上最新的讨论帖子"

显示最近的讨论主题,并允许发布回复

跟踪进度

"我在数学200课程中还需要完成哪些模块?"

显示模块完成状态和接下来需要完成的项目

获取Canvas API令牌

  1. 登录Canvas → 账户 → 设置
  2. 滚动到“批准的集成”
  3. 点击"+ 新访问令牌"
  4. 输入描述:"Claude MCP集成"
  5. 复制生成的令牌 并安全保存!

⚠️ 账户管理员注意:对于账户级别的操作,请确保您的API令牌具有管理员权限。

生产部署

Docker Compose

git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
cp .env.example .env
# 使用您的Canvas凭证编辑.env
docker-compose up -d

Kubernetes

kubectl create secret generic canvas-mcp-secrets \
  --from-literal=CANVAS_API_TOKEN="your_token" \
  --from-literal=CANVAS_DOMAIN="school.instructure.com"

kubectl apply -f k8s/

健康监测

# 检查应用程序健康状况
curl http://localhost:3000/health

# 或使用内置的健康检查
npm run health-check

开发

# 设置开发环境
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
npm install

# 启动热更新开发
npm run dev:watch

# 运行测试
npm run test
npm run coverage

# 代码质量
npm run lint
npm run type-check

📚 可用工具(50+ 工具)

<details> <summary><strong>🎓 核心学员工具(点击展开)</strong></summary>
  • canvas_health_check - 检查API连接
  • canvas_list_courses - 列出所有课程
  • canvas_get_course - 获取详细课程信息
  • canvas_list_assignments - 列出课程作业
  • canvas_get_assignment - 获取作业详情
  • canvas_submit_assignment - 提交作业
  • canvas_get_submission - 检查提交状态
  • canvas_list_modules - 列出课程模块
  • canvas_get_module - 获取模块详情
  • canvas_list_module_items - 列出模块中的项目
  • canvas_mark_module_item_complete - 标记项目完成
  • canvas_list_discussion_topics - 列出讨论主题
  • canvas_get_discussion_topic - 获取讨论详情
  • canvas_post_to_discussion - 发布到讨论
  • canvas_list_announcements - 列出课程公告
  • canvas_get_user_grades - 获取成绩
  • canvas_get_course_grades - 获取特定课程的成绩
  • canvas_get_dashboard - 获取仪表板信息
  • canvas_get_dashboard_cards - 获取课程卡片
  • canvas_get_upcoming_assignments - 获取截止日期
  • canvas_list_calendar_events - 列出日历事件
  • canvas_list_files - 列出课程文件
  • canvas_get_file - 获取文件详情
  • canvas_list_folders - 列出课程文件夹
  • canvas_list_pages - 列出课程页面
  • canvas_get_page - 获取页面内容
  • canvas_list_conversations - 列出消息
  • canvas_get_conversation - 获取对话详情
  • canvas_create_conversation - 发送消息
  • canvas_list_notifications - 列出通知
  • canvas_get_syllabus - 获取课程大纲
  • canvas_get_user_profile - 获取用户资料
  • canvas_update_user_profile - 更新资料
</details> <details> <summary><strong>👨‍🏫 教师工具(点击展开)</strong></summary>
  • canvas_create_course - 创建新课程(已修复:现在需要account_id)
  • canvas_update_course - 更新课程设置
  • canvas_create_assignment - 创建作业
  • canvas_update_assignment - 更新作业
  • canvas_list_assignment_groups - 列出作业组
  • canvas_submit_grade - 评分
  • canvas_enroll_user - 注册学生
  • canvas_list_quizzes - 列出课程测验
  • canvas_get_quiz - 获取测验详情
  • canvas_create_quiz - 创建测验
  • canvas_start_quiz_attempt - 开始测验尝试
  • canvas_list_rubrics - 列出课程评分标准
  • canvas_get_rubric - 获取评分标准详情
</details> <details> <summary><strong>👨‍💼 账户管理工具(新!)</strong></summary>
  • canvas_get_account - 获取账户详情
  • canvas_list_account_courses - 列出账户中的课程
  • canvas_list_account_users - 列出账户中的用户
  • canvas_create_user - 在账户中创建新用户
  • canvas_list_sub_accounts - 列出子账户
  • canvas_get_account_reports - 列出可用报告
  • canvas_create_account_report - 生成账户报告
</details>

🔧 v2.2.0 中的重大变更

课程创建修复

之前(故障):

{
  "tool": "canvas_create_course",
  "arguments": {
    "name": "My Course"  // ❌ 缺少account_id - 导致“页面未找到”
  }
}

之后(修复):

{
  "tool": "canvas_create_course", 
  "arguments": {
    "account_id": 123,              // ✅ 需要的account_id
    "name": "My Course",
    "course_code": "CS-101"
  }
}

🌟 示例Claude对话

学员:"我需要检查我的即将到来的作业并提交我的英语论文。"

Claude:"我会帮助您检查即将到来的作业,然后协助您提交英语论文。让我先获取您的即将到来的作业..."

[Claude 使用 canvas_get_upcoming_assignments 然后帮助 canvas_submit_assignment]


教师:"在科学部门创建一个新的高级物理课程并注册我的助教。"

Claude:"我会帮您在您的科学部门账户中创建高级物理课程,然后注册您的助教..."

[Claude 使用 canvas_create_course 并正确使用 account_id,然后 canvas_enroll_user]


管理员:"生成本学期所有计算机科学课程的注册报告。"

Claude:"我会生成一份全面的计算机科学课程注册报告..."

[Claude 使用 canvas_list_account_courses 并应用筛选器,然后 canvas_create_account_report]

🔍 故障排除

常见问题:

  • 401 未经授权:检查您的API令牌和权限
  • 404 未找到:验证课程/作业ID和访问权限
  • 课程创建时“页面未找到”:升级到v2.2.0以修复account_id问题
  • 超时:增加 CANVAS_TIMEOUT 或检查网络连接

调试模式:

export LOG_LEVEL=debug
npm start

健康检查:

npm run health-check

🤝 贡献

我们欢迎贡献!请参阅CONTRIBUTING.md了解指南。

快速贡献设置

git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
npm install
npm run dev:watch
# 进行更改,添加测试,提交PR

📈 发展路线图

  • v2.3:增强报告、批量操作、高级搜索
  • v2.4:移动支持、离线能力、分析仪表板
  • v3.0:多租户、GraphQL API、AI驱动洞察

🙋 支持与社区

📄 许可证

MIT 许可证 - 详情见LICENSE文件。


<div align="center"> <strong>Canvas MCP Server v2.2.0</strong><br> <em>为学生、教育者和管理员提供无缝的Canvas集成</em><br><br>

如果您觉得这个仓库有用,请给它点赞!

</div>