Canvas桥
一个本地服务器,通过 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)
安装
- 克隆此仓库:
git clone https://github.com/vishalsachdev/canvas-mcp.git
cd canvas-mcp
- 创建并激活虚拟环境:
python -m venv canvas-mcp
source canvas-mcp/bin/activate # On Unix/macOS
- 安装依赖项:
pip install -r requirements.txt
配置
1. 创建环境文件
在根目录下创建一个.env文件,并添加以下变量:
CANVAS_API_TOKEN=your_canvas_api_token_here
CANVAS_API_URL=https://canvas.youruniversity.edu/api/v1
将值替换为:
- 您的Canvas API令牌 (如何获取您的Canvas API令牌)
- 您所在大学的Canvas API URL
2. 配置启动脚本
start_canvas_server.sh脚本已配置为:
- 从
.env文件加载环境变量 - 激活虚拟环境
- 运行缓存的服务器实现
使启动脚本可执行:
chmod +x start_canvas_server.sh
3. Claude桌面版配置
-
如果尚未安装,请安装Claude桌面版。
-
创建或编辑Claude桌面版配置文件:
vim ~/Library/Application\ Support/Claude/claude_desktop_config.json
- 添加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替换为您克隆此仓库的绝对路径。
- 重启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桌面版无缝配合工作:
- Claude Desktop 会在需要时自动启动服务器
- 您将在 Claude Desktop 界面中看到 Canvas API 工具(锤子图标 🔨)
- 您可以要求 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 操作- 其他标准库,用于编码和网络
故障排除
如果您遇到问题:
-
服务器无法启动
- 检查您的
.env文件是否存在并包含有效的凭证 - 验证
start_canvas_server.sh中虚拟环境路径是否正确 - 确保所有依赖项都已安装
- 检查您的
-
认证错误
- 验证您的 Canvas API 令牌是否有效且未过期
- 检查您在 Canvas 中是否有必要的权限
-
连接问题
- 确保您的 Canvas API URL 是正确的
- 检查您的互联网连接
- 确认您的机构没有限制 API 访问
-
调试
- 查看 Claude Desktop 控制台中的服务器日志
- 尝试手动运行服务器以查看错误输出
安全注意事项
- 您的 Canvas API 令牌授予访问您的 Canvas 账户的权限
- 切勿将您的
.env文件提交到版本控制 - 如果可能的话,考虑使用权限有限的令牌
- 服务器在您的本地机器上运行,并不会对外暴露您的凭据
贡献
欢迎贡献!请随意:
- 提交关于 bug 或功能请求的问题
- 创建带有改进的拉取请求
- 分享您的使用案例和反馈
许可证
本项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。
由 Vishal Sachdev 创建