mcpField
C
Canvas LMS MCP Server

Canvas LMS MCP Server

本地服务
github.com/ahnopologetic科研与教育736 周前更新

关于 Canvas LMS MCP Server

Canvas LMS MCP Server 将 Canvas LMS 数据接入 AI 客户端,面向学生及其他账户持有者。工具涵盖课程、作业、成绩、讨论、日程、文件等学习信息。

主要功能

  1. 01浏览课程和模块
  2. 02查看作业与提交记录
  3. 03获取成绩和反馈
  4. 04读取公告与讨论
  5. 05查看日历和规划事项
  6. 06访问测验与文件

适用场景

  1. 01查询即将到期的作业
  2. 02查看课程成绩和提交反馈
  3. 03查找多个课程的公告
  4. 04查看课程讨论和日历活动

MCP 相关

通过 MCP 工具提供 Canvas LMS 数据,包括课程、作业、提交记录、讨论、日历活动和文件。支持 Claude Desktop、Claude Code、Cursor 和 Windsurf 等 MCP 客户端。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"canvas-lms": {
"command": "uvx",
"args": [
"canvas-lms-mcp"
],
"env": {
"CANVAS_API_TOKEN": "<CANVAS_API_TOKEN>",
"CANVAS_BASE_URL": "<CANVAS_BASE_URL>"
}
}
}
}
启动命令uvx canvas-lms-mcp
需要配置的环境变量
CANVAS_API_TOKEN密钥
CANVAS_BASE_URL

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicanvas-lms-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Canvas LMS MCP 服务

smithery badge 一个精简的 Canvas LMS MCP(Machine Conversation Protocol)服务,可通过你的 Canvas LMS 实例轻松访问教育数据。此服务为 AI 系统(如 Cursor)与 Canvas Learning Management System 搭建桥梁。

功能

  • 课程:列出已选课程,获取课程详情、大纲、模块和模块项目
  • 作业:列出并获取作业,可选包含提交状态
  • 页面:按 URL 别名获取课程页面
  • 提交:列出你自己的提交及其成绩和反馈
  • 公告:列出多个课程中的公告
  • 讨论:列出主题并查看完整讨论串
  • 日历:按日期筛选并列出日历事件
  • 规划器:列出规划器项目(作业、公告等)
  • 选课记录:获取带成绩的选课记录数据
  • 测验:列出并获取测验(仅限经典测验)
  • 文件:列出并获取文件
  • 导航:获取课程标签页、作业组和收藏课程

安装

通过 Smithery 安装

要通过 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:从源代码安装
  1. 克隆仓库:

    git clone https://github.com/yourusername/canvas-lms-mcp.git
    cd canvas-lms-mcp
    
  2. 使用 uv 安装:

    # 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。你可以通过 http://localhost:8000/docs 上的 FastMCP 界面与 API 交互。

可用工具

该服务提供 22 个工具,用于与 Canvas LMS 交互:

课程
list_courses

列出用户当前已选的课程。

参数:

  • page(可选,默认值=1):页码(从 1 开始)
  • items_per_page(可选,默认值=10):每页项目数
get_course

按 ID 获取单个课程。

参数:

  • course_id(必填):课程 ID
  • include(可选):要包含的附加数据列表
get_course_syllabus

以 HTML 格式获取课程大纲正文。

参数:

  • course_id(必填):课程 ID
get_course_modules

获取课程的模块。

参数:

  • course_id(必填):课程 ID
  • include(可选):要包含的附加数据列表
  • per_page(可选,默认值=100):每页项目数
get_module_items

获取指定模块中的项目。

参数:

  • course_id(必填):课程 ID
  • module_id(必填):模块 ID
作业
list_assignments

列出课程的作业。

参数:

  • course_id(必填):课程 ID
  • bucket(必填):按 “past”、“overdue”、“undated”、“ungraded”、“unsubmitted”、“upcoming” 或 “future” 筛选
  • order_by(必填):按 “due_at”、“position” 或 “name” 排序
  • include(可选):要包含的附加数据列表(例如,使用 ["submission"] 查看成绩状态)
  • page(可选,默认值=1):页码(从 1 开始)
  • items_per_page(可选,默认值=10):每页项目数
get_assignment

按 ID 获取单个作业。

参数:

  • course_id(必填):课程 ID
  • assignment_id(必填):作业 ID
list_assignment_groups

列出课程的作业组(显示成绩权重/类别)。

参数:

  • course_id(必填):课程 ID
页面
get_page

根据 URL 别名获取单个页面。

参数:

  • course_id(必填):课程 ID
  • page_slug(必填):页面 URL 别名(例如,“syllabus”“course-handbook”)
提交
list_submissions

列出当前用户在课程中的提交,包括成绩和反馈。

参数:

  • course_id(必填):课程 ID
  • include(可选):要包含的其他数据列表(例如,["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(必填):课程 ID
  • page(可选,默认值为 1):页码(从 1 开始)
  • items_per_page(可选,默认值为 10):每页项目数
get_discussion_view

获取讨论主题的完整视图,包括所有回复。

参数:

  • course_id(必填):课程 ID
  • discussion_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

列出课程的测验。注意:仅适用于 Classic Quizzes,不适用于 New Quizzes(quiz_lti)。

参数:

  • course_id(必填):课程 ID
  • include(可选):要包含的其他数据列表
  • page(可选,默认值为 1):页码(从 1 开始)
  • items_per_page(可选,默认值为 10):每页项目数
get_quiz

根据 ID 获取单个测验。

参数:

  • course_id(必填):课程 ID
  • quiz_id(必填):测验 ID
文件
list_files

列出课程或文件夹中的文件。注意:根据机构权限,学生账户可能会收到 403 错误。

参数:

  • course_id(可选):课程 ID
  • folder_id(可选):文件夹 ID
  • include(可选):要包含的其他数据列表
  • page(可选,默认值为 1):页码(从 1 开始)
  • items_per_page(可选,默认值为 10):每页项目数
get_file

根据 ID 获取文件。即使 list_files 受到限制,也可通过已知文件 ID 获取文件。

参数:

  • course_id(必填):课程 ID
  • file_id(必填):文件 ID
其他
get_tabs

获取课程可用的标签页/导航项。

参数:

  • course_id(必填):课程 ID
list_favorites

列出当前用户收藏的课程。

集成

此 MCP 服务适用于所有支持 Model Context Protocol 的客户端,包括 Claude Desktop、Claude Code、Cursor、Windsurf 等。

所有客户端的 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 → Account → Settings → New Access Token 中找到),并将 your-institution.instructure.com 替换为你所在机构的 Canvas URL。

Claude Desktop

将以下内容添加到 Claude Desktop 配置文件中:

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

保存后重启 Claude Desktop。

Claude Code

将以下内容添加到项目的 .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

将以下内容添加到项目目录中的 .cursor/mcp.json。保存后重启 Cursor。

Windsurf

将以下内容添加到 ~/.codeium/windsurf/mcp_config.json。保存后重启 Windsurf。

使用示例

连接后,你可以向 AI 助手询问 Canvas 数据:

  • “我下周有哪些作业要到期?”
  • “显示我的生物课程教学大纲”
  • “今天发布了哪些公告?”
  • “到目前为止我的成绩如何?”
  • “我明天的日程是什么?”
  • “显示我的英语课讨论帖”

开发

有关详细的开发说明,请参阅 DEVELOPMENT.md 文件。

许可证

本项目采用 MIT License 授权,详情请参阅 LICENSE 文件。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。