这是一个最小化的 Canvas LMS MCP(机器对话协议)服务器,用于通过您的 Canvas LMS 实例轻松访问教育数据。此服务器提供了一个桥梁,连接 AI 系统(如 Cursor)与 Canvas 学习管理系统。
要通过 Smithery 自动安装 Canvas LMS 服务器到 Claude Desktop:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude
uv 包管理器(推荐)最简单的方式是使用 uvx 安装和运行 canvas-lms-mcp:
uvx canvas-lms-mcp
这将在隔离环境中运行服务器,而不会永久安装它。
要永久安装工具:
uv tool install canvas-lms-mcp
克隆仓库:
git clone https://github.com/yourusername/canvas-lms-mcp.git
cd canvas-lms-mcp
使用 uv 安装:
# 如果还没有 uv,请先安装
curl -LsSf https://astral.sh/uv/install.sh | sh
# 创建虚拟环境并安装依赖
uv venv
uv pip install -e .
或者使用传统方法:
python -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
pip install -e .
设置以下环境变量:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # 默认值: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 进行交互。
服务器提供了以下工具来与 Canvas LMS 进行交互:
list_courses列出用户当前注册的所有课程。
参数:
page(可选,默认值为 1):页码(从 1 开始)items_per_page(可选,默认值为 10):每页项数get_course通过 ID 获取单个课程。
参数:
course_id(必需):课程 IDinclude(可选):需要包含的附加数据列表get_course_syllabus获取课程的大纲。
参数:
course_id(必需):课程 IDget_course_modules获取课程的模块。
参数:
course_id(必需):课程 IDinclude(可选):需要包含的附加数据列表list_assignments列出课程的作业。
参数:
course_id(必需):课程 IDbucket(必需):按类型过滤作业("past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming", "future")order_by(必需):排序字段("due_at", "position", "name")page(可选,默认值为 1):页码(从 1 开始)items_per_page(可选,默认值为 10):每页项数get_assignment通过 ID 获取单个作业。
参数:
course_id(必需):课程 IDassignment_id(必需):作业 IDlist_quizzes列出课程的测验。
参数:
course_id(必需):课程 IDinclude(可选):需要包含的附加数据列表page(可选,默认值为 1):页码(从 1 开始)items_per_page(可选,默认值为 10):每页项数get_quiz通过 ID 获取单个测验。
参数:
course_id(必需):课程 IDquiz_id(必需):测验 IDlist_files列出课程或文件夹的文件。
参数:
course_id(可选):课程 IDfolder_id(可选):文件夹 IDinclude(可选):需要包含的附加数据列表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):每页项数Cursor 是一个由 AI 驱动的 IDE,可以与 Canvas LMS MCP 服务器交互,直接在您的开发环境中提供教育数据。
从 https://cursor.sh/ 安装 Cursor IDE
在您的项目目录中创建一个 .cursor/mcp.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"
}
}
}
}
替换:
your_canvas_api_token 为您实际的 Canvas API 令牌your-institution.instructure.com 为您 Canvas 机构的 URL重启 Cursor 以使更改生效。
您还可以通过在 mcp.json 中添加一个 "time" 服务器来集成时间服务器,用于时区相关的查询:
"time": {
"command": "uvx",
"args": [
"mcp-server-time",
"--local-timezone=America/New_York"
]
}
这允许您使用与 Canvas 数据相关的时间函数。
一旦连接,您可以向 Cursor AI 查询您的 Canvas 数据:
示例对话:
您:我近期有哪些作业到期?
Cursor:我将检查您的即将到期的作业。
根据您的 Canvas 数据,以下是您的即将到期的作业:
- "最终项目" 对于 CS101,截止日期为 2023 年 12 月 10 日
- "实验报告 #5" 对于 BIOL200,截止日期为 2023 年 12 月 7 日
- "研究论文" 对于 ENGL301,截止日期为 2023 年 12 月 15 日
有关详细的开发说明,请参阅 DEVELOPMENT.md 文件。
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。 </中文翻译>