一个全面的模型上下文协议(MCP)服务器,适用于Canvas LMS,具有完整的学员、教师和账户管理功能。
account_id参数)添加到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"
}
}
}
}
# 全局安装
npm install -g canvas-mcp-server
# 配置
export CANVAS_API_TOKEN="your_token_here"
export CANVAS_DOMAIN="your_school.instructure.com"
# 运行
canvas-mcp-server
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课程中还需要完成哪些模块?"
显示模块完成状态和接下来需要完成的项目
⚠️ 账户管理员注意:对于账户级别的操作,请确保您的API令牌具有管理员权限。
git clone https://github.com/DMontgomery40/mcp-canvas-lms.git
cd mcp-canvas-lms
cp .env.example .env
# 使用您的Canvas凭证编辑.env
docker-compose up -d
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
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 - 更新资料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 - 获取评分标准详情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 - 生成账户报告之前(故障):
{
"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 使用 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]
常见问题:
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
MIT 许可证 - 详情见LICENSE文件。
⭐ 如果您觉得这个仓库有用,请给它点赞! ⭐
</div>