使用说明
Canvas LMS MCP服务器
远程MCP(模型上下文协议)服务器 Canvas LMS 部署在Cloudflare Workers上。只需两个字段,即可将任何兼容MCP的AI代理连接到您的Canvas帐户。
设置
1.获取Canvas API代币
转到Canvas实例→ 设置 → 新访问令牌 → 复制令牌(它以数字开头 ~).
2.连接您的MCP客户端
| 字段 | 值 |
|---|---|
| 服务器URL | https://canvas-mcp.workers.dev/mcp |
| 持有者令牌 | yourschool:your_canvas_api_token |
承载令牌格式为 school:token 哪里:
- 学校 --您的Canvas子域名(例如。
grambling从grambling.instructure.com) - 令牌 -您的Canvas API代币
例子:
Server URL: https://canvas-mcp.workers.dev/mcp
Bearer Token: grambling:7~aBcDeFg123456...
可用工具
| 工具 | 说明 |
|---|---|
list_courses |
列出所有已注册的课程 |
get_course |
获取课程详情,包括教学大纲 |
list_assignments |
列出作业(按过去、即将、逾期等筛选) |
get_assignment |
获取任务详细信息 |
submit_assignment |
向作业提交文本或URL |
get_grades |
获取课程成绩 |
get_submissions |
获取您的提交和分数 |
get_missing_assignments |
获取所有课程中缺失/逾期的作业 |
get_upcoming |
获取即将到来的活动和任务 |
get_todo |
获取Canvas待办事项 |
get_calendar |
获取日期范围内的日历事件 |
list_announcements |
列出课程公告 |
list_discussions |
列出讨论主题 |
get_discussion |
与所有回复进行讨论 |
post_discussion |
发布对讨论的回复 |
get_user |
获取您的Canvas个人资料 |
发展
先决条件
- Node.js 18+
- Cloudflare帐户(用于部署)
- Canvas API令牌(用于测试)
本地设置
git clone https://github.com/your-username/canvas-mcp.git
cd canvas-mcp
npm install
创建一个 .env.test 运行测试的文件:
TEST_SCHOOL=yourschool
TEST_TOKEN=your_canvas_api_token
命令
npm run dev # Start local dev server
npm test # Run test suite
npm run deploy # Deploy to Cloudflare Workers
错误报警
Worker现在公开了一个健康端点 /health 并且当它遇到意外的内部错误时可以发送警报。
部署前设置webhook目标:
npx wrangler secret put ERROR_ALERT_WEBHOOK_URL
推荐目的地:
- 松弛传入webhook
- Discord webhook
- 如果您需要电子邮件通知,可以使用webhook到电子邮件服务
可选运行时变量:
npx wrangler deploy --var ENVIRONMENT:production
健康检查示例:
curl https://canvas-mcp.workers.dev/health
本地测试
# Start the dev server
npm run dev
# Test with curl
curl -X POST http://localhost:8787/mcp \
-H "Authorization: Bearer yourschool:your_token" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
建筑
MCP Client → POST /mcp (Authorization: Bearer school:token)
↓
Cloudflare Worker
1. Parse school + token from bearer header
2. Create per-request MCP server
3. Proxy Canvas API calls to school.instructure.com
↓
Canvas LMS API (https://school.instructure.com/api/v1/...)
- 无状态 --没有数据库,没有持久对象,每个请求都携带所有上下文
- 按请求隔离 --每个请求都会得到一个新的MCP服务器实例
- 休息时零成本 --Cloudflare Workers仅按请求计费
技术栈
- Cloudflare员工 --无服务器运行时
- @模型上下文协议/sdk --MCP服务器SDK
- 代理 --Cloudflare针对Workers的MCP处理程序
- 萨德 --输入验证
- Vitest --测试框架
许可证
麻省理工学院
