Canvas LMS本地MCP服务器

一个本地运行的Canvas LMS MCP服务器,允许从任何MCP兼容的AI客户端查询课程、作业、成绩、模块等信息,同时确保API密钥仅存储在本地。

  • by a-ariff
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 a-ariff/canvas-mcp

使用说明

画布MCP

Canvas LMS的本地MCP(模型上下文协议)服务器。从任何兼容MCP的AI客户端(Claude Desktop、Cursor、VS Code Copilot等)查询您的课程、作业、成绩、模块等。

您的API密钥保留在您的计算机上。 与需要您交出Canvas凭据的托管MCP服务器不同,此服务器在本地运行并直接与您的Canvas实例通信。

建筑

graph TB
    subgraph "MCP Clients"
        Claude["Claude Desktop"]
        Cursor["Cursor / VS Code"]
        Other["Other MCP Clients"]
    end

    subgraph "Your Machine (Local)"
        Server["Canvas MCP Server<br/>Node.js + TypeScript"]
        ENV["Environment Variables<br/>CANVAS_API_KEY"]
    end

    subgraph "Canvas LMS Tools"
        Courses["list_courses"]
        Assignments["get_assignments<br/>get_upcoming_assignments"]
        Grades["get_grades<br/>get_submission_status"]
        Content["get_modules<br/>get_announcements<br/>get_discussions"]
        Calendar["get_calendar_events<br/>get_todo_items<br/>get_quizzes"]
        Profile["get_user_profile"]
    end

    subgraph "Canvas Instance"
        API["Canvas REST API<br/>HTTPS Only"]
    end

    Claude -->|stdio| Server
    Cursor -->|stdio| Server
    Other -->|stdio| Server

    ENV -.->|read at startup| Server

    Server --> Courses
    Server --> Assignments
    Server --> Grades
    Server --> Content
    Server --> Calendar
    Server --> Profile

    Courses --> API
    Assignments --> API
    Grades --> API
    Content --> API
    Calendar --> API
    Profile --> API

    style Server fill:#4CAF50,stroke:#333,color:#fff
    style ENV fill:#FF9800,stroke:#333,color:#fff
    style API fill:#2196F3,stroke:#333,color:#fff
    style Claude fill:#7C4DFF,stroke:#333,color:#fff
    style Cursor fill:#7C4DFF,stroke:#333,color:#fff
    style Other fill:#7C4DFF,stroke:#333,color:#fff

🔒 隐私设计 -API密钥从本地环境变量中读取,并仅通过HTTPS发送到Canvas实例。没有中间服务器,没有第三方存储。

特性

  • 12个Canvas LMS工具 --课程、作业、成绩、模块、测验等
  • 在本地运行 --您的凭据永远不会离开您的计算机
  • 零配置托管 --无需服务器、Cloudflare或Docker
  • 适用于任何MCP客户端 --克劳德桌面,光标,VS代码副本,ChatGPT
  • TypeScript --完全键入Zod验证

快速开始

1.获取Canvas API密钥

首选 Canvas → Account → Settings → Approved Integrations → New Access Token

📖 以前从没做过? 跟随 带截图的分步指南

2.克隆和构建

git clone https://github.com/a-ariff/canvas-mcp.git
cd canvas-mcp
npm install
npm run build

3.添加到您的MCP客户端

Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "canvas": {
      "command": "node",
      "args": ["/path/to/canvas-mcp/dist/standalone.js"],
      "env": {
        "CANVAS_API_KEY": "your-canvas-api-token",
        "CANVAS_BASE_URL": "https://your-canvas-instance.edu"
      }
    }
  }
}
Cursor / VS Code

添加到您的 .cursor/mcp.json 或VS代码MCP设置:

{
  "mcpServers": {
    "canvas": {
      "command": "node",
      "args": ["/path/to/canvas-mcp/dist/standalone.js"],
      "env": {
        "CANVAS_API_KEY": "your-canvas-api-token",
        "CANVAS_BASE_URL": "https://your-canvas-instance.edu"
      }
    }
  }
}

4.开始聊天

问你的AI助手一些事情,比如:

  • “我报名参加了哪些课程?”
  • “本周有什么作业要交?”
  • “给我看计算机科学101的成绩”
  • “有什么新的公告吗?”

工具

工具 描述 Args
list_courses 获取所有活动课程 --
get_assignments 获取课程作业 course_id
get_upcoming_assignments 所有课程即将完成的作业 --
get_grades 课程的成绩和分数 course_id
get_user_profile 您的Canvas个人资料信息 --
get_modules 课程模块和结构 course_id
get_announcements 最近的课程公告 course_id
get_discussions 讨论主题 course_id
get_calendar_events 即将到来的日历活动 --
get_todo_items 未决行动项目 --
get_quizzes 课程测验 course_id
get_submission_status 任务提交状态 course_id, assignment_id

环境变量

变量 必填 默认 描述
CANVAS_API_KEY 是 - 您的Canvas API访问令牌
CANVAS_BASE_URL 没有 https://canvas.instructure.com 您的Canvas实例URL
DEBUG 没有 false 启用调试日志记录

安全

  • 仅限本地执行 --服务器通过stdio在您的计算机上运行
  • 直接API调用 -Canvas API密钥仅发送到Canvas实例,从不发送到任何第三方
  • 无数据存储 --会话之间不会缓存或持久化任何内容
  • 基于环境的配置 --凭据是从环境变量中读取的,从不进行硬编码

发展

# install deps
npm install

# build
npm run build

# run locally
CANVAS_API_KEY=your-token CANVAS_BASE_URL=https://your-canvas.edu npm start

# run tests
npm test

# lint
npm run lint

贡献

欢迎投稿!请看 贡献.md 作为指导方针。

许可证

麻省理工学院