C

Canvas桥

@vishalsachdev/canvas-mcp
0 Stars 312 次浏览 vishalsachdev 更新于 2026-08-23

一个本地服务器,通过 Claude Desktop 启用与 Canvas 学习管理系统 API 的交互,允许用户管理课程、访问作业、查看公告和获取课程材料。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "canvas-api": {
      "command": "canvas-mcp-server"
    }
  }
}

服务介绍

Canvas MCP 服务器

此仓库包含了一个用于与Canvas学习管理系统API交互的消息控制协议(MCP)服务器实现。该服务器旨在与Claude桌面版以及可能的其他MCP客户端一起使用。

概览

Canvas MCP服务器提供了一个本地接口到Canvas LMS API,允许您:

  • 列出和管理课程
  • 访问作业和提交
  • 查看公告
  • 获取课程大纲和模块
  • 管理用户和注册
  • 生成课程摘要

先决条件

  • Python 3.x
  • 虚拟环境 (venv)
  • Canvas API令牌
  • Canvas API URL(例如:https://canvas.illinois.edu/api/v1)

安装

  1. 克隆此仓库:
git clone https://github.com/vishalsachdev/canvas-mcp.git
cd canvas-mcp
  1. 创建并激活虚拟环境:
python -m venv canvas-mcp
source canvas-mcp/bin/activate  # On Unix/macOS
  1. 安装依赖项:
pip install -r requirements.txt

配置

1. 创建环境文件

在根目录下创建一个.env文件,并添加以下变量:

CANVAS_API_TOKEN=your_canvas_api_token_here
CANVAS_API_URL=https://canvas.youruniversity.edu/api/v1

将值替换为:

2. 配置启动脚本

start_canvas_server.sh脚本已配置为:

  • .env文件加载环境变量
  • 激活虚拟环境
  • 运行缓存的服务器实现

使启动脚本可执行:

chmod +x start_canvas_server.sh

3. Claude桌面版配置

  1. 如果尚未安装,请安装Claude桌面版

  2. 创建或编辑Claude桌面版配置文件:

vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 添加Canvas MCP服务器配置:
{
  "mcpServers": [
    {
      "name": "canvas-api",
      "command": "/Users/YOUR_USERNAME/path/to/canvas-mcp/start_canvas_server.sh"
    }
  ]
}

/Users/YOUR_USERNAME/path/to/canvas-mcp替换为您克隆此仓库的绝对路径。

  1. 重启Claude桌面版以加载新配置。

可用工具

服务器提供了以下工具用于与Canvas LMS交互:

课程管理

  • list_courses: 列出认证用户的全部课程
  • get_course_details: 获取特定课程的详细信息
  • summarize_course: 生成课程的全面总结

作业

  • list_assignments: 列出一门课程的所有作业
  • get_assignment_details: 获取特定作业的详细信息
  • get_assignment_description: 获取作业的完整描述

提交

  • list_submissions: 列出特定作业的所有提交

用户

  • list_users: 列出一门课程中所有注册的用户

资源

  • list_announcements: 列出一门课程的所有公告
  • get_course_syllabus: 获取课程大纲
  • get_course_modules: 获取课程的所有模块

与Claude桌面版一起使用

此MCP服务器设计为与Claude桌面版无缝配合工作:

  1. Claude Desktop 会在需要时自动启动服务器
  2. 您将在 Claude Desktop 界面中看到 Canvas API 工具(锤子图标 🔨)
  3. 您可以要求 Claude 执行 Canvas 操作,如“显示我的课程”或“获取我的生物课程大纲”

对于手动测试,您可以直接启动服务器:

./start_canvas_server.sh

技术细节

服务器实现

服务器使用了以下工具:

  • fastmcp:一个用于构建 MCP 服务器的 Python 库
  • httpx:用于对 Canvas API 进行异步 HTTP 请求
  • 缓存机制以提高课程查找性能

主要实现文件是 canvas_server_cached.py,它提供了:

  • 有效的课程信息缓存
  • 对 Canvas API 请求的分页处理
  • 错误处理和报告
  • 支持课程 ID 和课程代码

依赖项

服务器需要以下 Python 包:

  • httpx:用于 HTTP 请求
  • fastmcp:用于 MCP 服务器实现
  • requests:用于某些 HTTP 操作
  • 其他标准库,用于编码和网络

故障排除

如果您遇到问题:

  1. 服务器无法启动

    • 检查您的 .env 文件是否存在并包含有效的凭证
    • 验证 start_canvas_server.sh 中虚拟环境路径是否正确
    • 确保所有依赖项都已安装
  2. 认证错误

    • 验证您的 Canvas API 令牌是否有效且未过期
    • 检查您在 Canvas 中是否有必要的权限
  3. 连接问题

    • 确保您的 Canvas API URL 是正确的
    • 检查您的互联网连接
    • 确认您的机构没有限制 API 访问
  4. 调试

    • 查看 Claude Desktop 控制台中的服务器日志
    • 尝试手动运行服务器以查看错误输出

安全注意事项

  • 您的 Canvas API 令牌授予访问您的 Canvas 账户的权限
  • 切勿将您的 .env 文件提交到版本控制
  • 如果可能的话,考虑使用权限有限的令牌
  • 服务器在您的本地机器上运行,并不会对外暴露您的凭据

贡献

欢迎贡献!请随意:

  • 提交关于 bug 或功能请求的问题
  • 创建带有改进的拉取请求
  • 分享您的使用案例和反馈

许可证

本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。


Vishal Sachdev 创建

相关 MCP 服务