项目简介

Notioc Canvas MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端应用,旨在将Canvas学习管理系统(LMS)的丰富功能智能地集成到大型语言模型(LLM)客户端(如Claude Desktop)中。它通过标准化的JSON-RPC协议,让LLM能够以自然语言与用户的Canvas学业数据进行深度交互,涵盖课程、作业、成绩、文件、测验、讨论、沟通和小组协作等多个方面,极大地提升学术体验。

主要功能点

  • 学业分析: 实时追踪各课程的成绩、进行“假设”成绩情景计算(例如:“期末考试需要多少分才能得A?”)、分析成绩趋势并预测学业表现。
  • 文档管理与处理: 访问所有历史提交的作业和文件、支持从超过94种文件类型(如PDF、DOCX、XLSX、PPTX、图像、音频)中提取内容、进行智能文件搜索和内容处理(包括图像OCR和音频转录)。
  • 测验与学习辅助: 提交后详细复习测验内容、分析测验问题与正确答案、追踪测验表现,并能根据用户需求生成学习指南。
  • 课程结构与规划: 集成Canvas日历以跟踪截止日期和事件、导航课程模块和内容、分析课程大纲并提取关键政策信息。
  • 沟通与协作: 直接在Canvas内发送消息、参与讨论区、管理小组协作(包括访问小组讨论和成员)、以及草拟专业电子邮件。
  • 智能搜索: 提供AI驱动的语义内容搜索功能,即使在Canvas API受限的情况下也能通过网页发现技术查找相关信息。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Kuria-Mbatia/notioc-canvas-mcp-server.git
  2. 进入项目目录:
    cd notioc-canvas-mcp-server
  3. 安装依赖并构建:
    npm install && npm run build
  4. 配置Canvas API凭证:
    • 在项目根目录创建一个名为 '.env' 的文件(如果不存在)。
    • 在 '.env' 文件中添加以下配置,请务必替换为你的实际Canvas实例URL和个人访问令牌:
      CANVAS_BASE_URL=https://your-canvas-instance.instructure.com
      CANVAS_ACCESS_TOKEN=your_canvas_access_token_here
      LLAMA_CLOUD_API_KEY=your_llamacloud_api_key_here # 可选:用于高级文档处理,请替换为你的LlamaParse API Key
      ENABLE_LLAMAPARSE=true # 可选:设置为true以启用LlamaParse进行文档处理
      LLAMA_PARSE_ALLOW_UPLOAD=true # 可选:设置为true以允许上传文件到LlamaParse服务
    • 'CANVAS_BASE_URL' 是你的Canvas学习管理系统域名,例如 'https://psu.instructure.com'。
    • 'CANVAS_ACCESS_TOKEN' 是你在Canvas用户设置中生成的个人访问令牌。
    • 'LLAMA_CLOUD_API_KEY', 'ENABLE_LLAMAPARSE', 'LLAMA_PARSE_ALLOW_UPLOAD' 是可选的LlamaParse配置,用于启用对94种文件类型(如PDF、DOCX、图像、音频)的高级文档内容提取和处理。
  5. 启动服务器:
    • 推荐使用Docker:
      # 1. 复制环境模板
      cp .env.docker .env
      # 2. 编辑 .env 文件,填入你的Canvas凭证
      # 3. 启动服务器 (macOS/Linux)
      ./docker.sh prod
      # 或 (Windows)
      docker.bat prod
    • 手动启动 (需Node.js 18+ 环境):
      node dist/mcp.js

服务器配置

MCP客户端(例如Claude Desktop)需要以下JSON格式的配置信息来连接 Notioc Canvas MCP 服务器。请根据你的实际情况填写路径和凭证。

{
  "mcpServers": {
    "notioc-canvas": {
      "command": "node",
      "args": ["/path/to/your/project/dist/mcp.js"],
      "cwd": "/path/to/your/project",
      "env": {
        "NODE_ENV": "production",
        "CANVAS_BASE_URL": "https://your-canvas-instance.instructure.com",
        "CANVAS_ACCESS_TOKEN": "your_canvas_access_token_here",
        "LLAMA_CLOUD_API_KEY": "your_llamacloud_api_key_here",
        "ENABLE_LLAMAPARSE": "true",
        "LLAMA_PARSE_ALLOW_UPLOAD": "true"
      }
    }
  }
}
  • '"command"': 启动MCP服务器的可执行文件或脚本,通常是 '"node"'。
  • '"args"': 传递给 'command' 的参数列表,这里指向编译后的服务器主文件 '/path/to/your/project/dist/mcp.js'。请将 '/path/to/your/project' 替换为你的项目实际根路径。
  • '"cwd"': 服务器的工作目录,通常是项目的根路径。
  • '"env"': 服务器运行时所需的环境变量,包括:
    • '"NODE_ENV"': 运行环境,设置为 '"production"'。
    • '"CANVAS_BASE_URL"': 你的Canvas实例的基础URL,请替换为实际值。
    • '"CANVAS_ACCESS_TOKEN"': 你的Canvas API访问令牌,请替换为实际值。
    • '"LLAMA_CLOUD_API_KEY"': (可选)LlamaParse API Key,用于高级文档处理,请替换为实际值。
    • '"ENABLE_LLAMAPARSE"': (可选)设置为 '"true"' 以启用LlamaParse功能。
    • '"LLAMA_PARSE_ALLOW_UPLOAD"': (可选)设置为 '"true"' 以允许LlamaParse上传文件进行处理。

基本使用方法

一旦Notioc Canvas MCP 服务器成功启动并连接到你的LLM客户端(如Claude Desktop),你可以通过自然语言提出各种与Canvas相关的问题和请求:

  • 查询成绩:
    • “我生物课的当前成绩是多少?”
    • “我期末考试需要多少分才能得A?”
    • “显示我这学期的成绩趋势。”
  • 管理作业与提交:
    • “这周有什么作业要交?”
    • “显示我最近提交的论文。”
    • “我上次作业的反馈是什么?”
  • 获取学习材料:
    • “帮我复习上次测验。”
    • “我需要复习哪些主题才能通过期中考试?”
    • “生成第五章的学习指南。”
  • 处理文档:
    • “从这份PDF教学大纲中提取文本。”
    • “这份讲座幻灯片的要点是什么?”
    • “总结这份研究论文。”
  • 沟通与协作:
    • “我在哪些小组里?”
    • “列出我的项目小组的成员。”
    • “给我的老师发消息,主题是‘关于作业的问题’,内容是‘我有些问题需要澄清’。”

信息

分类

生产力应用