Canvas LMS MCP服务器
](https://smithery.ai/server/@ahnopologetic/canvas-lms-mcp) 一个最小的Canvas LMS MCP(机器对话协议)服务器,可通过Canvas LMS实例轻松访问教育数据。该服务器在人工智能系统(如Cursor)和Canvas学习管理系统之间提供了一座桥梁。
特性
- 课程:列出已注册的课程,获取课程详细信息、教学大纲、模块和模块项目
- 作业:列出并获取具有可选提交状态的作业
- 页面:通过URL slug获取课程页面
- 提交:列出你自己提交的成绩和反馈
- 公告:列出多个课程的公告
- 讨论:列出主题并查看完整的讨论线索
- 日历:使用日期筛选列出日历事件
- 规划师:列出计划项目(任务、公告等)
- 报名人数:获取包含成绩的注册数据
- 测验:列出并获取测验(仅限经典测验)
- 文件:列出并获取文件
- 导航:获取课程选项卡、作业组和最喜欢的课程
安装
通过Smithery安装
通过以下方式自动安装Claude Desktop的Canvas LMS服务器 史密瑟里:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude先决条件
- Python 3.13+
- Canvas LMS API代币
uv包管理器(推荐)
安装方法
选项1:使用uvx安装(推荐)
安装和运行canvas lms-mcp的最简单方法是使用uvx:
uvx canvas-lms-mcp这将在隔离环境中运行服务器,而无需永久安装。
要永久安装该工具,请执行以下操作:
uv tool install canvas-lms-mcp选项2:从源代码安装
- 克隆存储库:
git clone https://github.com/yourusername/canvas-lms-mcp.git
cd canvas-lms-mcp- 使用紫外线进行安装:
# Install uv if you don't have it yet
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create a virtual environment and install dependencies
uv venv
uv pip install -e .或者,使用传统方法:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .配置
设置以下环境变量:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com您可以从Canvas帐户设置中获取Canvas API令牌。
运行服务器
使用uv启动服务器:
uv run src/canvas_lms_mcp/main.py如果使用uvx工具安装:
canvas-lms-mcp默认情况下,服务器运行在http://localhost:8000.您可以在以下网址使用FastMCP接口http://localhost:8000/docs以与API交互。
可用工具
服务器提供22个与Canvas LMS交互的工具:
课程
list_courses
列出用户正在积极注册的课程。
参数:
page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
get_course
通过ID获得一门课程。
参数:
course_id(必填):课程IDinclude(可选):要包含的附加数据列表
get_course_syllabus
以HTML格式获取课程的教学大纲正文。
参数:
course_id(必填):课程ID
get_course_modules
获取课程模块。
参数:
course_id(必填):课程IDinclude(可选):要包含的附加数据列表per_page(可选,默认值=100):每页项目数
get_module_items
获取特定模块的项目。
参数:
course_id(必填):课程IDmodule_id(必填):模块ID
作业
list_assignments
列出课程的作业。
参数:
course_id(必填):课程IDbucket(必填):按“过去”、“逾期”、“未注明日期”、“不分级”、“尚未提交”、“即将”或“未来”筛选order_by(必填):按“due_at”、“职位”或“姓名”排序include(可选):要包括的附加数据列表(例如。,["submission"]查看成绩状态)page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
get_assignment
按ID获取单个作业。
参数:
course_id(必填):课程IDassignment_id(必填):任务ID
list_assignment_groups
列出课程的作业组(显示成绩权重/类别)。
参数:
course_id(必填):课程ID
页面
get_page
通过URL段获取单个页面。
参数:
course_id(必填):课程IDpage_slug(必填):页面URL(例如“教学大纲”、“课程手册”)
提交
list_submissions
列出当前用户提交的课程,包括成绩和反馈。
参数:
course_id(必填):课程IDinclude(可选):附加数据列表(例如。,["assignment", "submission_comments"])page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
公告
list_announcements
列出一门或多门课程的公告。
参数:
course_ids(必填):课程ID列表page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
讨论
list_discussions
列出课程的讨论主题。
参数:
course_id(必填):课程IDpage(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
get_discussion_view
获取讨论主题的完整视图,包括所有回复。
参数:
course_id(必填):课程IDdiscussion_id(必填):讨论主题ID
日历
list_calendar_events
列出课程的日历事件。
参数:
context_codes(必填):上下文代码列表(例如。,["course_123"])start_date(可选):ISO 8601格式的开始日期end_date(可选):ISO 8601格式的结束日期page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
计划项目
list_planner_items
列出已验证用户的计划项目。
参数:
start_date(必填):ISO 8601格式的开始日期end_date(必填):ISO 8601格式的结束日期context_codes(可选):上下文代码列表(例如。,["course_123"])page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
报名人数
get_enrollments
获取当前用户的注册信息,包括成绩。
测验
list_quizzes
列出一门课程的测验。注意:仅适用于经典测验,不适用于新测验(quiz_lti)。
参数:
course_id(必填):课程IDinclude(可选):要包含的附加数据列表page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
get_quiz
按ID进行一次测验。
参数:
course_id(必填):课程IDquiz_id(必填):测验ID
文件
list_files
列出课程或文件夹的文件。注意:根据机构权限,学生帐户可能会返回403。
参数:
course_id(可选):课程IDfolder_id(可选):文件夹IDinclude(可选):要包含的附加数据列表page(可选,默认=1):页码(1索引)items_per_page(可选,默认值=10):每页项目数
get_file
按ID获取文件。即使在以下情况下,也可以使用已知的文件ID list_files 受到限制。
参数:
course_id(必填):课程IDfile_id(必填):文件ID
其他
get_tabs
获取课程的可用选项卡/导航项。
参数:
course_id(必填):课程ID
list_favorites
列出当前用户最喜欢的课程。
整合
此MCP服务器可与任何支持 模型上下文协议,包括克劳德桌面、克劳德代码、光标、风帆等。
所有客户端的MCP配置都是相同的,只是配置文件位置不同:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}替换 your_canvas_api_token 使用Canvas API令牌(在Canvas中找到→ 账户→ 设置→ 新访问令牌)和 your-institution.instructure.com 使用您所在机构的Canvas URL。
克劳德桌面
添加到您的Claude Desktop配置文件中:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
保存后重新启动Claude Desktop。
克劳德代码
添加到您的项目 .mcp.json 或全球 ~/.claude/settings.json:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}光标
增添 .cursor/mcp.json 在您的项目目录中。保存后重新启动Cursor。
帆板运动
增添 ~/.codeium/windsurf/mcp_config.json保存后重新启动Windsurf。
使用示例
连接后,您可以向您的AI助手询问Canvas数据:
- “我下周有什么作业要交?”
- “给我看生物课程的教学大纲”
- “今天发布了什么公告?”
- “到目前为止,我的成绩怎么样?”
- “我明天的日程安排是什么?”
- “显示我英语课的讨论帖子”
发展
有关详细的开发说明,请参阅 Developpent.md 文件。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
