Canvas API MCP服务器
将Claude连接到您的Canvas LMS。问一些自然的问题,比如 _“本周我有什么作业要交?”_ 或 _“我现在的生物学成绩是多少?”_ 并直接从您的Canvas帐户中获取真实答案。
适用于 克劳德桌面版 和 克劳德代码 (CLI)。
______________________________________________________________________
快速安装
要求: Node.js 18+、Git和Canvas个人访问令牌(如何获得一个)
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
bash install.sh安装脚本将:
- 安装依赖项并构建项目
- 询问您的Canvas URL和API令牌
- 将服务器添加到 克劳德代码 和 克劳德桌面版 自动地
______________________________________________________________________
手动设置
1.获取Canvas API代币
- 登录您的Canvas实例(例如。
https://yourschool.instructure.com) - 点击您的个人资料图片→ 账户 → 设置
- 向下滚动至 已批准的集成
- 点击 +新访问令牌
- 命名(例如。
Claude MCP)然后单击 生成令牌 - 立即复制令牌 --画布永远不会再显示它
2.克隆和构建
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
npm install
npm run build3.创建您的 .env 文件
cp .env.example .env编辑 .env:
CANVAS_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com4.添加到克劳德代码
claude mcp add canvas \
-e CANVAS_TOKEN=your_token_here \
-e CANVAS_BASE_URL=https://yourschool.instructure.com \
-- node /absolute/path/to/Canvas-API-MCP/dist/index.js替换 /absolute/path/to/Canvas-API-MCP 使用实际路径(run pwd 在回购中获取它)。
5.添加到克劳德桌面
编辑 ~/.config/claude/claude_desktop_config.json 在Linux/Mac上,或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上。如果文件不存在,则创建该文件。
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/Canvas-API-MCP/dist/index.js"],
"env": {
"CANVAS_TOKEN": "your_token_here",
"CANVAS_BASE_URL": "https://yourschool.instructure.com"
}
}
}
}重新启动克劳德桌面 保存后。您应该在聊天界面中看到一个锤子图标,表示工具可用。
______________________________________________________________________
可用工具
| 工具 | 它做什么 |
|---|---|
list_courses | 列出您所有的活动课程 |
get_course | 课程的全部细节(包括教学大纲) |
list_assignments | 带有截止日期和分值的课程的所有作业 |
get_assignment | 完整的任务细节,包括描述 |
list_upcoming_assignments | 未来N天内到期的作业 全部 你的课程 |
get_grades | 您当前和最终的课程成绩 |
list_submissions | 课程中每个作业的提交状态 |
list_announcements | 课程的最新公告 |
list_discussions | 课程讨论主题 |
list_calendar_events | 日期范围内的即将发生的事件和截止日期 |
list_files | 课程中提供的文件,带有下载链接 |
______________________________________________________________________
示例提示
安装后,尝试询问Claude:
- _“接下来三天我有什么作业要交?”_
- _“列出我这学期的所有课程。”_
- _“我现在每个班的成绩是多少?”_
- _“我的计算机科学课上有什么通知吗?”_
- _“显示课程12345的讨论主题。”_
- _“我的生物学课程中有哪些文件?”_
- _“这周我的日程表上有什么?”_
______________________________________________________________________
验证其工作原理(MCP检查员)
在添加到Claude之前,您可以直接测试服务器:
npx @modelcontextprotocol/inspector node dist/index.js集 CANVAS_TOKEN 和 CANVAS_BASE_URL 在检查器的“环境变量”部分,然后调用 list_courses 确认你得到了真实的数据。
______________________________________________________________________
故障排除
“未找到课程”或结果为空
- 仔细检查你的
CANVAS_BASE_URL--它应该是你学校的Canvas URL,而不是canvas.instructure.com - 确保您的令牌被正确复制(没有多余的空格)
- 尝试生成一个新的令牌
Claude Desktop不显示Canvas工具
- 确认路径
claude_desktop_config.json是 绝对的 通往dist/index.js - 确保你跑了
npm run build而那个dist/index.js存在 - 完全重新启动Claude Desktop(从系统托盘退出,而不仅仅是关闭窗口)
Claude Code找不到服务器
- 跑
claude mcp list查看已注册的服务器 - 跑
claude mcp remove canvas如果看起来有问题,请重新添加
Canvas出现403个错误
- 您的令牌可能已过期--在画布设置中生成一个新的令牌
- 某些Canvas实例限制API访问;联系学校的IT部门
______________________________________________________________________
安全
- 您的Canvas令牌仅存储在您的本地
.env文件(git忽略)和/或本地Claude配置文件 - 该令牌允许您读取Canvas帐户可以看到的所有内容——将其视为密码
- 要撤销访问权限:转到Canvas→ 账户→ 设置→ 已批准的集成→ 删除令牌
- 永远不要分享你的
.env将其归档或提交到版本控制
______________________________________________________________________
发展
# Install deps
npm install
# Build (uses esbuild, outputs to dist/)
npm run build
# Run directly (requires .env file)
node dist/index.js
# Dev mode with ts-node
npm run dev来源组织如下:
src/
├── index.ts # Entry point — loads env, starts server
├── server.ts # McpServer setup, registers all tools
├── canvas-client.ts # Axios wrapper: auth headers, pagination, rate-limit backoff
└── tools/
├── courses.ts # list_courses, get_course
├── assignments.ts # list_assignments, get_assignment, list_upcoming_assignments
├── grades.ts # get_grades, list_submissions
├── announcements.ts # list_announcements
├── discussions.ts # list_discussions
├── calendar.ts # list_calendar_events
└── files.ts # list_files