← 返回 Skills 市场
chrischall

Tmp.JNcNGAYkf9

作者 chrischall · GitHub ↗ · v1.1.4 · MIT-0
cross-platform ✓ 安全检测通过
61
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install canvas-parent-mcp
功能描述
This skill should be used when the user asks about Canvas LMS (Instructure) data for themselves or any student they observe. Triggers on phrases like "check...
使用说明 (SKILL.md)

canvas-parent-mcp

MCP server for Canvas LMS (Instructure) — 18 tools covering profile, observees, courses, assignments, submissions, grades, calendar, planner, announcements, conversations, discussions, and files. Read-only except for one file-download tool.

Setup

Pick one auth mode. Username/password is recommended — most schools have disabled personal-access-token creation.

Option A — Claude Code (direct MCP, no mcporter)

Add to .mcp.json in your project or ~/.claude/mcp.json:

{
  "mcpServers": {
    "canvas": {
      "command": "npx",
      "args": ["-y", "canvas-parent-mcp"],
      "env": {
        "CANVAS_BASE_URL": "https://cms.instructure.com",
        "CANVAS_USERNAME": "[email protected]",
        "CANVAS_PASSWORD": "your-canvas-password",
        "CANVAS_NAME": "CMS"
      }
    }
  }
}

The server logs in lazily on the first request and silently re-mints cookies on 401, so you never have to re-bootstrap. Direct Canvas accounts only — won't work with SAML/Google/Microsoft SSO or 2FA.

Advanced alternatives

If your admin still allows tokens, swap CANVAS_USERNAME/CANVAS_PASSWORD for CANVAS_TOKEN:

"env": {
  "CANVAS_BASE_URL": "https://cms.instructure.com",
  "CANVAS_TOKEN": "your-personal-access-token"
}

If your account uses SSO (so username/password won't work), mint OAuth credentials by reusing the Canvas mobile-app QR-login flow (canvas-parent-mcp-qr-login), then:

"env": {
  "CANVAS_BASE_URL": "https://cms.instructure.com",
  "CANVAS_CLIENT_ID": "...",
  "CANVAS_CLIENT_SECRET": "...",
  "CANVAS_REFRESH_TOKEN": "..."
}

Option B — mcporter

1. Install

npm install -g canvas-parent-mcp

Or from source:

git clone https://github.com/chrischall/canvas-parent-mcp
cd canvas-parent-mcp
npm install && npm run build

2. Configure credentials

cp .env.example .env
# Edit .env: set CANVAS_BASE_URL plus one of CANVAS_TOKEN, CANVAS_USERNAME+CANVAS_PASSWORD, or the OAuth triple.

3. Register with mcporter

mcporter config add canvas \
  --command "canvas-parent-mcp" \
  --env "CANVAS_BASE_URL=https://cms.instructure.com" \
  --env "[email protected]" \
  --env "CANVAS_PASSWORD=your-canvas-password" \
  --env "CANVAS_NAME=CMS" \
  --config ~/.mcporter/mcporter.json

(Or substitute CANVAS_TOKEN / OAuth env vars per the alternatives above.)

4. Verify

mcporter list --config ~/.mcporter/mcporter.json
mcporter call canvas.canvas_get_profile --config ~/.mcporter/mcporter.json

Calling tools (mcporter)

mcporter call canvas.\x3Ctool_name> [key=value ...] --config ~/.mcporter/mcporter.json

Always pass --config ~/.mcporter/mcporter.json unless a local config/mcporter.json exists.

Most tools accept an optional observeeId (defaults to self) — set it to a student's user ID when an observer is checking on a linked student. List the candidates with canvas_list_observees.

Tools

Profile & observees

Tool Notes
canvas_get_profile Your Canvas profile (id, name, email, login, locale, timezone). Call this first to confirm credentials work.
canvas_list_observees Students linked to your observer account. Returns [] for plain student tokens.

Courses

Tool Notes
canvas_list_courses(observeeId?) Active courses with course-level grades. Includes total scores + current grading period scores.
canvas_get_course(courseId) Course detail: syllabus, teachers, term.

Assignments & submissions

Tool Notes
canvas_list_assignments(courseId, bucket?) Assignments for a course. bucket can be upcoming, overdue, past, or undated. Includes the user's submission inline.
canvas_list_missing_submissions(observeeId?, courseIds?) Past-due unsubmitted assignments. For an observee, courseIds is required.
canvas_get_submission(courseId, assignmentId, userId?) A single submission with comments + rubric assessment. userId defaults to self.
canvas_list_recent_submissions(courseId, since?) Recently graded submissions in a course. Defaults to a 14-day window.

Grades

Tool Notes
canvas_list_enrollments(observeeId?) Active student enrollments with grades (current_score, final_score, current_grade, final_grade, current grading period).

Calendar & planner

Tool Notes
canvas_list_calendar_events(contextCodes?, type?, startDate?, endDate?) Calendar events / assignments. contextCodes is an array like ["course_123", "user_456"].
canvas_list_upcoming_events Canvas's curated next-7-days view.
canvas_list_planner_items(observeeId?, startDate?, endDate?, contextCodes?) Unified planner: assignments + announcements + planner notes + calendar events.

Communication

Tool Notes
canvas_list_announcements(contextCodes, startDate?, endDate?) Announcements across one or more courses. contextCodes is required (e.g. ["course_123"]). Defaults to the last 14 days.
canvas_list_conversations(scope?) Inbox conversation list. scopeunread / starred / archived.
canvas_get_conversation(id) Full conversation thread with messages.
canvas_list_discussion_topics(courseId) Discussion topic list for a course (read-only).

Files

Tool Notes
canvas_list_course_files(courseId, searchTerm?) File metadata: id, display_name, size, content-type, url.
canvas_download_file(url, destinationPath, overwrite?) Writes the file to destinationPath on disk. destinationPath is required — confirm the path with the user before calling.

Workflows

Discovery (first time):

  1. canvas_get_profile → confirm credentials
  2. canvas_list_observees → if empty, you're a student; otherwise capture observee IDs
  3. canvas_list_courses → capture course IDs

Is everything OK at school?

  1. canvas_list_courses (capture IDs)
  2. canvas_list_recent_submissions(courseId) for each — last 14 days of grading
  3. canvas_list_missing_submissions — past-due work
  4. canvas_list_announcements(contextCodes=["course_\x3Cid>"]) — recent announcements

What got graded this week?

  • canvas_list_recent_submissions(courseId, since="YYYY-MM-DDTHH:MM:SSZ")

What's due soon?

  • canvas_list_planner_items(startDate=..., endDate=...) — unified planner
  • Or canvas_list_assignments(courseId, bucket="upcoming") per course

Today's calendar:

  • canvas_list_upcoming_events

Read a syllabus:

  • canvas_get_course(courseId)syllabus_body is included

Inbox:

  1. canvas_list_conversations — find a thread
  2. canvas_get_conversation(id) — read it

Download a file:

  1. canvas_list_course_files(courseId) → find the file's url
  2. Confirm destination path with the user
  3. canvas_download_file(url, destinationPath="/Users/.../file.pdf")

Caution

  • canvas_download_file writes to disk at destinationPath — confirm the path with the user; pass overwrite:true to replace.
  • All auth credentials (password, token, refresh token) grant the same access as the user account. Treat them as secrets — never commit .env.
  • Endpoints that return paginated results follow Canvas's RFC 5988 Link headers automatically up to 50 pages (5,000 items at the default per_page=100).
安全使用建议
Install only if you intend to let an agent access your Canvas account or linked observer/student records. Use a dedicated token or OAuth flow if available, protect Canvas passwords and refresh tokens, avoid committing .env or MCP config files, and confirm file download paths before allowing writes.
能力标签
requires-oauth-tokenrequires-sensitive-credentials
能力评估
Purpose & Capability
The stated purpose is to connect to Canvas LMS and expose profile, courses, grades, assignments, calendar, inbox, announcements, discussions, and files; those capabilities match the documented use case.
Instruction Scope
The trigger text is broad and includes generic phrases like grades and due dates, so users should invoke it only for intended Canvas LMS requests, especially when observee or student data is involved.
Install Mechanism
The install/setup instructions use standard MCP or mcporter configuration with npx/npm or source installation; no hidden install scripts or unexpected execution artifacts were present in the submitted skill bundle.
Credentials
The skill requires Canvas credentials or OAuth/token secrets and can read private academic records and inbox conversations, which is sensitive but expected for this Canvas integration.
Persistence & Privilege
The artifact documents credential configuration and one file-download tool that writes to a user-specified destination path with confirmation; it does not show background persistence, privilege escalation, destructive actions, or undisclosed data export.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install canvas-parent-mcp
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /canvas-parent-mcp 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.1.4
canvas-parent-mcp 1.1.4 changelog: - Updated SKILL.md with detailed setup instructions and tool documentation. - Expanded usage examples and workflow guidance for both direct MCP and mcporter setups. - Clarified authentication options, including username/password, token, and OAuth via mobile QR-login. - Listed all supported tools, their options, and usage notes. - Added important cautions regarding file downloads and credential security.
元数据
Slug canvas-parent-mcp
版本 1.1.4
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

Tmp.JNcNGAYkf9 是什么?

This skill should be used when the user asks about Canvas LMS (Instructure) data for themselves or any student they observe. Triggers on phrases like "check... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 61 次。

如何安装 Tmp.JNcNGAYkf9?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install canvas-parent-mcp」即可一键安装,无需额外配置。

Tmp.JNcNGAYkf9 是免费的吗?

是的,Tmp.JNcNGAYkf9 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Tmp.JNcNGAYkf9 支持哪些平台?

Tmp.JNcNGAYkf9 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Tmp.JNcNGAYkf9?

由 chrischall(@chrischall)开发并维护,当前版本 v1.1.4。

💬 留言讨论