项目简介
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受限的情况下也能通过网页发现技术查找相关信息。
安装步骤
- 克隆仓库:
git clone https://github.com/Kuria-Mbatia/notioc-canvas-mcp-server.git - 进入项目目录:
cd notioc-canvas-mcp-server - 安装依赖并构建:
npm install && npm run build - 配置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、图像、音频)的高级文档内容提取和处理。
- 启动服务器:
- 推荐使用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
- 推荐使用Docker:
服务器配置
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教学大纲中提取文本。”
- “这份讲座幻灯片的要点是什么?”
- “总结这份研究论文。”
- 沟通与协作:
- “我在哪些小组里?”
- “列出我的项目小组的成员。”
- “给我的老师发消息,主题是‘关于作业的问题’,内容是‘我有些问题需要澄清’。”
信息
分类
生产力应用