Canvas Lms Mcp Server

io.github.Fireiscoolsolo由 GitHub 帳號 Fireiscoolsolo 發布v1.3.1更新於 Nov 5, 2026

Self-hosted Canvas LMS for every device: 237 student tools over HTTP with OAuth and phone alerts.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

給學生的 Canvas LMS 工具:讓 AI 助理查看課程、作業、成績、截止日期、討論與收件匣,並規劃讀書時間。

可以做什麼
  • 讀取課程、選課資訊、班級分區、導覽分頁、課程設定、教學大綱與課程檔案
  • 追蹤作業、繳交、測驗、成績以及假設成績試算
  • 查看活動串流、公告、討論、收件匣對話與行事曆事件
  • 用每日簡報、本週概覽、讀書計畫和規劃備註安排進度
  • 管理個人項目:收藏課程、課程暱稱、書籤、通知偏好與自訂鍵值資料
  • 預覽後繳交作業、發文或傳訊息,並可呼叫未列出的 Canvas 端點
適用情境
適合想讓助理彙整待辦事項、解釋成績、掌握課程動態並安排讀書計畫的學生;也適合需要查看待批改項目的教師或觀察者帳號。
執行需求
以 npm 套件形式在本機透過 stdio 執行,需要 Node.js 18+(讀取 PDF 需 22+)。需在 CANVAS_API_TOKEN 提供 Canvas 個人存取權杖,並在 CANVAS_BASE_URL 填入學校的 Canvas 位址。遠端版另需公開網址、密碼、叢集密鑰以及 ngrok 或 Cloudflare 通道。
安裝前請注意
權杖可存取使用者的 Canvas 帳號;寫入類工具在確認步驟後可繳交、發文、傳送或刪除,將 CANVAS_ALLOW_WRITES 設為 false 可改為唯讀。教師與同學撰寫的課程文字會被標示為不可信內容。遠端版透過通道對外公開,需妥善保管密碼、叢集密鑰與選用的通知 webhook。部分學校限制使用個人 API 權杖。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Canvas Lms Mcp Server,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[!TIP] Want it to run locally, on just your own computer? Go to the Local Edition → (website). It has the same 237 tools, with no tunnel, no password and a one-command setup.

[Canvas LMS MCP: Remote Edition logo]

Canvas LMS MCP: Remote Edition

Use Canvas from your AI assistant on any device: web, desktop and mobile. Always on, password-protected, with automatic failover across several computers.

237 tools · OAuth 2.1 · Status page · Phone alerts · ngrok or Cloudflare tunnel · Multi-computer failover

[npm] [npm downloads] [npm downloads per month] [Release downloads] [Tests] [Windows app] [Glama score] [GitHub stars] [Node.js] [MCP] [License: MIT] [Website] [PRs welcome]

Website · Quick start · Multi-device guide · Configuration · Tools · Phone alerts · Security · Changelog

[!TIP] On Windows? Skip the terminal. The free Canvas MCP Installer Assistant sets this up for Claude or the ChatGPT desktop app with pictures and a check after every step, or does every step for you. Download for Windows

[Example chat: asking what score is needed on the final and what's due this week (sample data)]


Remote or Local?

Remote (this repo)Local
Works withAny MCP client that supports remote servers, on any deviceClaude Desktop, the ChatGPT desktop app and other MCP clients on this computer
When it runsAlways on, in the backgroundOnly while your AI app is open
You needNode.js (or Docker), a Canvas token, an ngrok or Cloudflare account and a passwordNode.js and a Canvas token
Internet exposurePublic HTTPS address, password-protectedNone
Multiple computersAutomatic failover (guide)Install it separately on each one

Highlights

  • Your day and week: daily_briefing, get_week_ahead, semester_snapshot, planner notes, checking items off your To Do list
  • Study plans: study_plan spreads study time before each deadline; schedule_study_plan puts it on your Canvas calendar
  • Grade intelligence: final_grade_scenarios, what_if_grade, grade_impact_ranking, calculate_gpa, full weighted breakdowns
  • Assignments, submissions, discussions and inbox: assignment_brief in one call; submit, post and message after a preview
  • Content: read lecture PDFs, Word docs and slides with read_course_file; downloads come back as links your phone can open
  • Phone alerts: new grades, announcements, work due soon, new assignments, teacher comments, messages and more, by ntfy, Discord, Telegram, Slack, Teams or Pushover, instantly or as a daily digest
  • Status page: see from any browser whether your server is online, who is signed in, and sign apps out
  • Secure remote access: password-gated OAuth 2.1 with lockout, a login history and optional two-factor codes, over an ngrok or Cloudflare tunnel
  • Multi-computer failover: run it on two or more computers, and if one sleeps, another takes over in about a minute

How it works

 Your AI app (web / desktop / mobile / CLI)          │  HTTPS + OAuth          ▼   your-domain.ngrok-free.dev ──►  supervisor.js  ──►  index.js (127.0.0.1:3939/mcp)  ──►  Canvas API   (or a Cloudflare hostname)      (keeps it alive,     (237 tools, OAuth, status page,                                    failover)            phone alerts)

Quick start

[!NOTE] Rather click than type? Download the Canvas MCP Installer Assistant for Windows. It walks you through these steps with pictures and checks each one as you go, for both the Remote and Local editions. See screenshots.

Windows may show "Windows protected your PC" because the app isn't code-signed yet. Click More info, then Run anyway.

You need: Node.js 18+ (22+ to read PDFs), a Canvas account and a free ngrok account (or a Cloudflare account with your own domain). Prefer containers? See Docker.

1. Install

With npm (easiest):

bash
npm install -g canvas-lms-mcp-remotemkdir canvas-mcpcd canvas-mcpcanvas-lms-mcp-remote init

That folder is your settings folder. It holds your .env, logins and logs, so run every later step from it.

Or from source: git clone https://github.com/Fireiscoolsolo/canvas-lms-mcp-server.git, then run npm install inside the folder. No git? Download the zip from the latest release instead. The repo folder is then your settings folder.

All commands
CommandWhat it does
canvas-lms-mcp-remote initCreate a .env template in the current folder
canvas-lms-mcp-remoteStart the supervisor: server, tunnel and failover
canvas-lms-mcp-remote serveStart only the HTTP server on 127.0.0.1 (no tunnel)
canvas-lms-mcp-remote install-serviceStart it automatically when you sign in (Windows, Linux or macOS)
canvas-lms-mcp-remote uninstall-serviceStop starting it automatically
canvas-lms-mcp-remote stop / restartStop the running supervisor, or stop and start it again
canvas-lms-mcp-remote statusIs it running, which computer is serving, who is signed in
canvas-lms-mcp-remote logs [-f]Show the end of supervisor.log (-f keeps following it)
canvas-lms-mcp-remote doctorCheck settings, token, tunnel and startup service, and say how to fix problems
canvas-lms-mcp-remote test-alertSend a test phone alert
canvas-lms-mcp-remote sessions [sign-out <id> | sign-out-all | tidy]List or sign out connected apps
canvas-lms-mcp-remote rotate-passwordMake a new password and sign every app out
canvas-lms-mcp-remote totp-setup / totp-offTurn two-factor codes on or off
canvas-lms-mcp-remote clusterList the computers in your group
canvas-lms-mcp-remote takeoverMake this computer the one that serves
canvas-lms-mcp-remote uninstallStop it, remove the startup service and say how to remove the package
canvas-lms-mcp-remote --stdioServe over stdin/stdout, for directories that inspect servers

From source, use node cli.js <command> instead.

2. Create a Canvas token

In Canvas, go to Account → Settings → Approved Integrations → + New Access Token. Canvas only shows the token once, so copy it right away.

3. Set up a tunnel

ngrok (default):

powershell
winget install --id Ngrok.Ngrok -engrok update                                   # the winget version is often too old (ERR_NGROK_121)ngrok config add-authtoken <your-ngrok-authtoken>

Then claim your free static domain in the ngrok dashboard, e.g. your-name.ngrok-free.dev.

Or Cloudflare Tunnel (no "Visit Site" page, your own domain)
  1. Install cloudflared (downloads; on Windows winget install --id Cloudflare.cloudflared).
  2. In the Cloudflare dashboard, open Zero Trust → Networks → Tunnels, create a tunnel and copy its token.
  3. Add a public hostname to the tunnel, e.g. canvas.yourdomain.com, pointing at http://localhost:3939.
  4. In .env, set CANVAS_MCP_TUNNEL=cloudflared, CANVAS_MCP_CLOUDFLARED_TOKEN=<token> and CANVAS_MCP_PUBLIC_URL=https://canvas.yourdomain.com.

Using your own reverse proxy or Tailscale Funnel instead? Set CANVAS_MCP_TUNNEL=none and point it at port 3939.

4. Configure .env

Fill in the .env that init created. From source, copy .env.example to .env first. Generate the password and secret with:

bash
node -e "console.log(require('crypto').randomBytes(32).toString('base64url'))"

5. Test it

bash
canvas-lms-mcp-remote doctorcanvas-lms-mcp-remote

doctor checks your settings, token and tunnel first. Then wait until you see active and serving at https://…, and press Ctrl+C.

6. Run it automatically when you sign in

bash
canvas-lms-mcp-remote install-service

On Windows this creates the CanvasSupervisor scheduled task, on Linux a systemd user service, and on macOS a launch agent. All of them restart it if it crashes and write supervisor.log in your settings folder, rotating it at 5 MB.

Setting up the Windows task by hand

In PowerShell, from your settings folder (the repo folder, if you installed from source):

powershell
$dir      = (Get-Location).Path$action   = New-ScheduledTaskAction -Execute "$dir\run-supervisor.cmd" -WorkingDirectory $dir$trigger  = New-ScheduledTaskTrigger -AtLogOn -User "$env:USERDOMAIN\$env:USERNAME"$settings = New-ScheduledTaskSettingsSet -RestartCount 999 -RestartInterval (New-TimeSpan -Minutes 1) -ExecutionTimeLimit ([TimeSpan]::Zero) -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -MultipleInstances IgnoreNewRegister-ScheduledTask -TaskName CanvasSupervisor -Action $action -Trigger $trigger -Settings $settings -ForceStart-ScheduledTask -TaskName CanvasSupervisor

run-supervisor.cmd assumes Node is at C:\Program Files\nodejs\node.exe. If yours is somewhere else, edit that file.

7. Connect your AI app, on every device

In your AI app's settings, add a custom connector (also called a remote MCP server) with the URL https://<your-domain>/mcp, then log in with your password. Apps that sync connectors to your account will show it on your phone and desktop too. Command-line and editor clients can add it as an HTTP MCP server with the same URL.

ChatGPT desktop app
  1. Open Settings → Plugins, go to the MCPs tab, then click Add → Add MCP server.

  2. Choose Streamable HTTP and fill in the form:

    FieldValue
    Namecanvas-remote
    URLhttps://<your-domain>/mcp
    Headersngrok-skip-browser-warning = 1
  3. Click Save, then Authenticate and log in with your password. Start a new chat to use it.

The header skips the page ngrok's free plan shows before your server.

Then ask your assistant: "Run test_connection."

Status page

Open https://<your-domain>/status in any browser and enter your password. It shows whether the server is online and which computer is serving, your Canvas connection and when the token expires, the apps that are signed in (each with a Sign out button), recent sign-ins, the computers in your group, your phone-alert settings and recent problems. Nothing secret is ever shown, and the page locks itself after 12 hours.

From a terminal, canvas-lms-mcp-remote status and canvas-lms-mcp-remote sessions show the same things.

Multiple computers

You can run the same server on two or more computers, for example a desktop and a laptop, so it stays online when one is off or asleep. One computer serves; the others wait in standby and take over automatically.

Follow the step-by-step Multi-Device Setup Guide. It covers copying settings safely, the shared tunnel, the startup service, checking it works, testing failover, updating code and changing secrets. canvas-lms-mcp-remote cluster lists the computers, and canvas-lms-mcp-remote takeover moves serving to the computer you're on.

Docker

For a home server or NAS: copy .env.example to .env, fill it in, add NGROK_AUTHTOKEN=<your ngrok authtoken>, then:

bash
docker compose up -d

docker-compose.yml runs the server and an ngrok tunnel, keeping your logins in a Docker volume. It also has a commented-out Cloudflare Tunnel service to use instead. One container serves, so there's no failover between computers in this setup; Docker restarts it if it stops.

Configuration

All settings are environment variables in .env. See .env.example.

VariableRequiredDefaultDescription
CANVAS_API_TOKENYes—Your Canvas personal access token
CANVAS_BASE_URLYes—e.g. https://yourschool.instructure.com
CANVAS_MCP_PUBLIC_URLYes—Your public address (ngrok static domain or Cloudflare hostname)
CANVAS_MCP_PASSWORDYes—Password for the login and status pages
CANVAS_MCP_CLUSTER_SECRETYes—Secret that protects the /internal/* endpoints the computers use to coordinate
CANVAS_MCP_TOTP_SECRET—Turns on two-factor codes; set it up with canvas-lms-mcp-remote totp-setup
CANVAS_MCP_TUNNELngrokngrok, cloudflared, or none if you route the address yourself
CANVAS_MCP_CLOUDFLARED_TOKEN—Tunnel token from the Cloudflare dashboard
CANVAS_MCP_FAILOVER_SECONDS50How long the serving computer can be silent before another takes over
CANVAS_ALLOW_WRITEStruefalse = read-only mode
CANVAS_PROFILEfullcore = curated subset of tools
CANVAS_TOOLS / CANVAS_DISABLE_TOOLSall / —Only these tool groups or tools, or leave these out
CANVAS_CACHE_TTL60Response cache time in seconds
CANVAS_TIMEZONEsystemIANA time zone for dates, digests and quiet hours
CANVAS_DOWNLOAD_DIR./canvas-downloadsWhere download tools save files
CANVAS_IP_FAMILYboth4 or 6 uses only that kind of address. Worth trying if new connections time out
CANVAS_MCP_HOST / _PORT127.0.0.1 / 3939Bind address
CANVAS_MCP_OAUTH_STORE_PATH./oauth-store.jsonToken store
CANVAS_MCP_NGROK_PATHwinget pathPath to ngrok.exe
CANVAS_MCP_TRUST_PROXYloopbackWhich proxy's visitor address to trust; Docker uses uniquelocal
CANVAS_MCP_TRANSPORThttpstdio (or the --stdio flag) serves over stdin/stdout instead of HTTP. Used by directories that inspect servers. For everyday local use, see the Local Edition

Phone-alert settings are listed in Phone alerts.

Tools

GroupCountHighlights
Identity27check_token_expiry, notification preferences, custom-data storage
Courses17course_contacts (teachers, TAs, office hours), permissions, nicknames
Assignments13assignment_brief, list_missing_submissions, get_late_policy
Submissions17text, URL, file and annotation submission, comments, rubric assessments
Grades15final_grade_scenarios, what_if_grade, compute_needed_score, grade_impact_ranking, calculate_gpa
Quizzes12read-only: dates, attempts, reviews
Discussions21get_full_topic_view, replies, school-wide announcements, mark announcements read
Inbox14messaging, find_recipients, threads
Calendar11events, office-hours booking
Content36files, pages, modules, captions, ePortfolios, read_course_file for PDF, Word and PowerPoint, course export
Groups11group workspaces
Rubrics11peer reviews
Search3smart_search with keyword fallback
Planner12daily_briefing, planner notes, mark_planner_item_done, study_plan, export_deadlines_ics, calendar feed
Planning13get_week_ahead, semester_snapshot, study_priority_ranking, semester_wrap_up, export_all_courses
Meta4raw_canvas_request for any endpoint not listed above

Prompts and attachments

The server also adds these to your AI app's menus. They don't count as tools.

  • Prompts: Daily briefing, Plan my week, Plan my study blocks, What did I miss?, Start this assignment, Prep me for an exam, How are my grades?, Am I on track to pass?, Catch me up on a course, Draft an email to my professor and Semester wrap-up. Each one tells the assistant which tools to use, and course names autocomplete.
  • Attachments: attach a course syllabus, or an assignment due in the next 14 days, to a chat the same way you'd attach a file.

Apps that support MCP prompts and resources, such as Claude Desktop, show them in the + menu.

Phone alerts

Because the Remote Edition is always on, it can tell you when something happens. On by default once you set a channel:

  • New grades (several at once arrive as one summary)
  • New announcements
  • Work due within 24 hours that you haven't submitted yet
  • A Canvas token that expires within 5 days

Add any of these to CANVAS_ALERTS to turn them on too: assignments (new assignments, quizzes and discussions), comments (a teacher commented on your work), inbox (new messages), grade_drop (a course grade fell below CANVAS_ALERTS_GRADE_BELOW, default 70%) and security (sign-ins and lockouts on your server).

Where they go. Add any of these to .env, then restart the server:

ChannelSettings
ntfy phone appCANVAS_ALERTS_NTFY_TOPIC: a long, hard-to-guess topic name (it works like a password). CANVAS_ALERTS_NTFY_SERVER for your own server
DiscordCANVAS_ALERTS_DISCORD_WEBHOOK: a webhook from a channel's Settings → Integrations → Webhooks
TelegramCANVAS_ALERTS_TELEGRAM_TOKEN (from @BotFather) and CANVAS_ALERTS_TELEGRAM_CHAT_ID
SlackCANVAS_ALERTS_SLACK_WEBHOOK: an incoming webhook URL
Microsoft TeamsCANVAS_ALERTS_TEAMS_WEBHOOK: a Workflows incoming webhook URL
PushoverCANVAS_ALERTS_PUSHOVER_TOKEN and CANVAS_ALERTS_PUSHOVER_USER

When they come.

SettingDefaultWhat it does
CANVAS_ALERTS_DIGEST—One summary a day at this time, e.g. 07:30: what's due today and tomorrow, new grades, missing work and unread messages
CANVAS_ALERTS_MODEboth with a digestdigest sends only urgent alerts (due soon, token, security) in between digests; instant turns the digest off
CANVAS_ALERTS_QUIET—e.g. 22:00-07:00: non-urgent alerts wait until the morning and arrive as one summary
CANVAS_ALERTS_COURSES / _SKIP_COURSESallOnly (or never) these courses, by ID or part of the name
CANVAS_ALERTS_DUE_HOURS24How far ahead "due soon" alerts look
CANVAS_ALERTS_INTERVAL_MINUTES15How often to check (at least 5)

Then run canvas-lms-mcp-remote test-alert from your settings folder to check it works.

Only the computer that is serving sends alerts, and it remembers what it already sent in your Canvas account's own storage, so you don't get repeats when another computer takes over. Alert text passes through the service you pick, so keep the topic, channel or chat private.

Security

  • Confirmation gate: tools that send, submit, post or delete return a preview first and only act when called with confirm: true.
  • Prompt-injection fencing: text other people wrote is wrapped in <<<CANVAS_CONTENT>>> markers and labelled as untrusted.
  • No quiz-taking: quiz attempt endpoints are deliberately not included.
  • Loopback only: the server listens on 127.0.0.1. The only way in from outside is the tunnel.
  • OAuth 2.1: login is limited to 10 attempts per 15 minutes per address, and five wrong passwords lock that address out for 15 minutes. Access tokens last 1 hour, and refresh tokens are replaced every time they're used. The password check takes the same time whatever you type.
  • Two-factor codes (optional): canvas-lms-mcp-remote totp-setup adds a code from your authenticator app to the login and status pages.
  • You can see and end sign-ins: the status page lists signed-in apps and recent sign-in attempts. Unused apps are signed out after 90 days, and rotate-password signs everyone out.
  • Separate coordination secret: the endpoints the computers use to coordinate need a separate shared secret, compared in constant time.
  • No secrets in logs: tokens, passwords and webhook keys are removed from every log line. The public /healthz check says nothing about your account.
  • Download links expire: files the server saves are shared through private links that work for one hour.

Never commit .env, oauth-store.json, login-history.json or supervisor.log. They're already listed in .gitignore. See SECURITY.md.

Responsible use

This is a study and organization tool. It helps you see deadlines, understand your grades and plan your week. It never takes quizzes, and nothing is sent or submitted until you've seen a preview and confirmed it.

  • Follow your school's academic integrity and acceptable-use policies. Some schools restrict personal API tokens or third-party tools.
  • Want zero risk of accidental changes? Set CANVAS_ALLOW_WRITES=false for read-only mode.

Troubleshooting

Start with canvas-lms-mcp-remote doctor in your settings folder: it checks the settings, token, network, tunnel, server and startup service, and says how to fix what it finds.

SymptomFix
ERR_NGROK_121Your ngrok version is too old. Run ngrok update
ERR_NGROK_334 … already onlineAnother computer or a leftover ngrok.exe holds the domain. This is normal for a standby computer
ERR_NGROK_3200 (endpoint offline)No computer is serving. Check canvas-lms-mcp-remote logs
ngrok shows a "You are about to visit…" page at loginThis is normal on the free plan. Click Visit Site, or use Cloudflare Tunnel, which has no such page
startup check failedCheck CANVAS_BASE_URL and your internet connection
"Your Canvas token was rejected"Your token expired. Create a new one and put it in .env
Reading works but uploads or new connections time outRun doctor on that computer: its Network section times DNS and tests every connection. The server works around a slow DNS lookup by itself, so if a connection still fails, look for a VPN, proxy or firewall
"File not found on the computer running this server"The server reads files from its own disk, so the path must exist on the computer named in the error, not the one you're chatting from
New tools don't show upReconnect the connector or restart your AI app
supervisor.log keeps growingRun canvas-lms-mcp-remote install-service again to switch to the rotating log

More issues with several computers are covered in the Multi-Device guide.

Restart cleanly with canvas-lms-mcp-remote restart. Running an older version that doesn't know it? In PowerShell:

powershell
Stop-ScheduledTask -TaskName CanvasSupervisor -ErrorAction SilentlyContinueGet-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -match 'supervisor\.js|index\.js' } | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }Get-Process ngrok -ErrorAction SilentlyContinue | Stop-Process -ForceStart-ScheduledTask -TaskName CanvasSupervisor

Known limits: a student token can't reach admin endpoints, gradebook history, course analytics or quiz statistics. smart_search is a Canvas beta feature and often returns 404. While the server is reached over the tunnel, apps get a preview before actions instead of a pop-up confirmation.

License

MIT. This project isn't affiliated with Instructure.

來源:README.md,提交 1753322

工具

200

whoami

Who Am I

Get your Canvas user ID, name and login. Read-only and very cheap. Use it to confirm the token works; use get_my_profile for bio and email, or test_connection for a full diagnostic.

無需輸入參數。

get_my_profile

Get My Profile

Get your full Canvas profile: name, bio, avatar, primary email and calendar feed URL. Read-only. For just your ID and name, whoami is cheaper.

無需輸入參數。

get_my_settings

Get My Settings

Get your account-level Canvas preferences, such as dashboard view, activity stream visibility and comment notification settings. Read-only. For how often you are notified about each event, use get_notification_preferences.

無需輸入參數。

check_token_expiry

Check Token Expiry

Check when your Canvas access token expires and warn if it is close. Read-only. Canvas often forces student tokens to expire after 30–120 days without warning, so run this at the start of a term.

無需輸入參數。

get_rate_limit_status

Get Rate Limit Status

Report Canvas rate-limit state from the most recent API call: remaining quota, last request cost and requests this session. Read-only and makes no Canvas call itself. Canvas throttles by cumulative request cost, so check this before expensive tools like semester_snapshot.

無需輸入參數。

list_my_enrollments

List My Enrollments

List your enrollments across all courses, with role (student, observer…), section and current grade summary. Read-only. Use list_courses for course details; use this when you need roles, sections or per-enrollment grades.

輸入參數pagetypelimitstate

get_activity_stream

Get Activity Stream

Get recent activity across all your courses: new announcements, discussion replies, graded submissions and messages, newest first. Read-only. Titles and messages are fenced as untrusted text. For counts only, use get_activity_stream_summary; for one course, use get_course_activity_stream.

輸入參數pagelimitonly_active_courses

get_activity_stream_summary

Get Activity Stream Summary

Get counts of unread activity by type (announcements, discussions, messages, submissions) across your courses. Read-only and very cheap. Call it before get_activity_stream to see whether the full stream is worth pulling.

無需輸入參數。

list_todo

List Todo

List Canvas's own to-do items for you: assignments waiting for your submission, and items to grade if you are an instructor. Read-only. For a date-bounded view use list_upcoming_assignments; for one course use list_todo_for_course.

輸入參數pagelimit

get_todo_count

Get Todo Count

Get the number of items on your Canvas to-do list without fetching them. Read-only and cheap. Use list_todo to see the items.

無需輸入參數。

list_upcoming_events

List Upcoming Events

List your upcoming calendar events and assignment due dates, using Canvas's own default window. Read-only. For a specific date range, use list_calendar_events.

無需輸入參數。

get_dashboard_cards

Get Dashboard Cards

Get the course cards on your Canvas dashboard, in dashboard order, with names, colors and links. Read-only. Use list_courses for every enrollment, including ones not on the dashboard.

無需輸入參數。

list_favorite_courses

List Favorite Courses

List the courses you have starred as favorites; these decide what appears on your dashboard. Read-only. Change them with add_favorite_course and remove_favorite_course.

輸入參數pagelimit

add_favorite_course

Add Favorite Course

Star a course as a favorite so it shows on your Canvas dashboard. Only affects your own view. Reverse with remove_favorite_course.

輸入參數course_id必填

remove_favorite_course

Remove Favorite Course

Unstar a favorite course so it no longer shows on your Canvas dashboard. Only affects your own view; your enrollment is unchanged. Reverse with add_favorite_course.

輸入參數course_id必填

get_communication_channels

Get Communication Channels

List the notification channels on your account (email addresses, SMS numbers, push) with their IDs and status. Read-only. Use a channel_id from here with get_notification_preferences.

輸入參數pagelimit

get_notification_preferences

Get Notification Preferences

Get how often Canvas notifies you about each event type (due dates, grades, announcements…) on one channel: immediately, daily, weekly or never. Read-only. Get channel_id from get_communication_channels first.

輸入參數channel_id必填

get_my_page_views

Get My Page Views

List your own Canvas page views (URL, time and course) in a time range. Read-only. Useful for showing you opened material on a given date. How far back history goes depends on your school.

輸入參數pagelimitend_timestart_time

list_content_shares

List Content Shares

List course content (assignments, pages, quizzes) that other Canvas users shared directly with you, with sender and share date. Read-only. Returns an empty list if nothing was shared.

輸入參數pagelimit

get_custom_data

Get Custom Data

Read key-value data you previously stored on your Canvas account with set_custom_data. Read-only. Returns an error if nothing is stored at that namespace and scope.

輸入參數scopenamespace

set_custom_data

Set Custom Data

Store your own key-value data on your Canvas account (a small private per-user store, invisible to others). Overwrites any existing value at the same namespace and scope. Read it back with get_custom_data.

輸入參數data必填scopenamespace

list_bookmarks

List Bookmarks

List your saved Canvas bookmarks with their names, URLs and IDs. Read-only. Use the IDs with delete_bookmark.

輸入參數pagelimit

create_bookmark

Create Bookmark

Save a Canvas bookmark to a course page or any Canvas URL. Only you see it. Returns the new bookmark with its ID. Use list_bookmarks to see existing ones.

輸入參數url必填name必填position

delete_bookmark

Delete Bookmark

Delete one of your saved Canvas bookmarks. Only affects you. Get bookmark_id from list_bookmarks.

輸入參數bookmark_id必填

list_my_observees

List My Observees

List the students you are linked to as an observer, for parent or mentor accounts. Read-only. Returns an empty list for regular student accounts.

輸入參數pagelimit

list_notification_categories

List Notification Categories

The notification categories on one delivery channel (email, phone) and how often Canvas currently notifies you about each, e.g. due dates, grading, announcements. Use with update_notification_preference.

輸入參數channel_id必填

update_notification_preference

Update Notification Preference

Change how often Canvas emails or texts you about one kind of event, e.g. "grading" only weekly, or "announcement" immediately. Only affects your own notifications. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmcategory必填frequency必填channel_id必填

list_courses

List Courses

List the courses you are enrolled in with IDs, names, codes, term and your current grade. Read-only. Only active courses unless include_concluded is set. Start here to get course_id values for other tools.

輸入參數pagelimitinclude_gradesinclude_concluded

get_course

Get Course

Get full details for one course: name, code, term, start and end dates, syllabus and public description. Read-only. Use list_courses to find course IDs; use get_syllabus for the syllabus as plain text.

輸入參數course_id必填

get_syllabus

Get Syllabus

Get a course syllabus as plain text, converted from Canvas HTML. Read-only. The text is fenced as untrusted. If the instructor uploaded the syllabus as a file instead, look in list_course_files; syllabus_digest pulls out dates and weights.

輸入參數course_id必填

get_course_settings

Get Course Settings

Get course-level settings such as whether final grades are hidden, the late policy is shown, or a grading standard is used. Read-only. Some settings may be hidden from students, in which case Canvas returns an error.

輸入參數course_id必填

list_course_tabs

List Course Tabs

List the navigation tabs visible to you in a course (Home, Assignments, Files, Quizzes…). Read-only. Check this first to see whether a feature such as Files or Pages is enabled before calling its tools.

輸入參數course_id必填

get_course_activity_stream

Get Course Activity Stream

Get recent activity in one course: announcements, discussion replies, grade changes and messages. Read-only. Titles and messages are fenced as untrusted. For all courses at once, use get_activity_stream.

輸入參數pagelimitcourse_id必填

list_sections

List Sections

List the sections in a course (e.g. lecture or lab sections), including the one you are enrolled in. Read-only. Useful for understanding section-specific due-date overrides.

輸入參數pagelimitcourse_id必填

list_course_users

List Course Users

List people in a course with names, roles and user IDs, optionally filtered by role or name. Read-only. Your school's privacy settings often limit or block this for students.

輸入參數pagelimitcourse_id必填search_termenrollment_type

get_user_in_course

Get User In Course

Get one person's profile within a course: name, role, section and avatar. Read-only. Get user_id from list_course_users. Your institution's privacy settings may limit what is returned.

輸入參數user_idcourse_id必填

get_course_permissions

Get Course Permissions

Show what your token is allowed to do in a course, such as posting to discussions or sending messages. Read-only. Call it before a write tool to avoid an action failing halfway.

輸入參數course_id必填

list_course_nicknames

List Course Nicknames

List the personal nicknames you have given courses. Read-only. Only you see nicknames. Change them with set_course_nickname or remove_course_nickname.

輸入參數pagelimit

set_course_nickname

Set Course Nickname

Give a course a personal nickname that replaces its name in your own Canvas view. Only you see it; the course is unchanged for everyone else. Undo with remove_course_nickname.

輸入參數nickname必填course_id必填

remove_course_nickname

Remove Course Nickname

Remove your personal nickname for a course so Canvas shows its official name again. Only affects your own view.

輸入參數course_id必填

get_course_progress

Get Course Progress

Get your module completion progress in a course: requirements met, total requirements and next item. Read-only. Returns an error for courses without module completion requirements.

輸入參數course_id必填

list_todo_for_course

List Todo For Course

List Canvas to-do items for a single course. Read-only. Use list_todo for all courses at once.

輸入參數pagelimitcourse_id必填

list_blackout_dates

List Blackout Dates

List no-work days (blackout dates) in a course used by course pacing. Read-only. Returns an empty list when pacing is not used.

輸入參數course_id必填

course_contacts

Course Contacts

Who to contact in a course and when: the teachers and TAs (with the user IDs send_message needs), office hours found in the syllabus, and office-hour or advising sign-up slots. Read-only.

輸入參數course_id必填

list_assignments

List Assignments

List assignments in a course with due dates, points and your submission status, optionally filtered by bucket (e.g. upcoming, overdue) or name. Read-only. Use get_assignment for one assignment's full instructions and rubric.

輸入參數pagelimitbucketcourse_id必填search_term

get_assignment

Get Assignment

Get full details for one assignment: instructions, due/lock dates, points, submission types and the rubric. Read-only. Prompt text written by the instructor is fenced as untrusted. Get assignment_id from list_assignments.

輸入參數course_id必填assignment_id必填

list_assignment_groups

List Assignment Groups

List a course's assignment groups (e.g. Homework, Exams) with their grade weights and drop rules, optionally with each group's assignments. Read-only. Explains how your final grade is weighted; get_course_grade_breakdown does the math for you.

輸入參數pagelimitcourse_id必填include_assignments

get_assignment_group

Get Assignment Group

Get one assignment group (e.g. "Homework") with its weight, drop rules and assignments. Read-only. Use list_assignment_groups to see all groups and their IDs.

輸入參數group_id必填course_id必填

list_assignment_overrides

List Assignment Overrides

List due-date overrides on an assignment: different dates or extensions for sections, groups or individual students. Read-only. Use get_my_override for the dates that apply to you.

輸入參數pagelimitcourse_id必填assignment_id必填

get_my_override

Get My Override

Get the due, lock and unlock dates that actually apply to you for an assignment, after section or individual overrides. Read-only. Use this instead of the default dates when deadlines differ by section.

輸入參數course_id必填assignment_id必填

get_assignment_dates

Get Assignment Dates

List due, lock and unlock dates for every assignment in a course, sorted by due date, in a compact form. Read-only. Use list_assignments when you also need submission status.

輸入參數pagelimitcourse_id必填

get_score_statistics

Get Score Statistics

Get class statistics for an assignment (mean, min, max, quartiles) next to your own score. Read-only. Canvas only shows these once enough students are graded and if the instructor allows it.

輸入參數course_id必填assignment_id必填

get_late_policy

Get Late Policy

Get a course's late policy: the percentage deducted per late interval, the lowest score a late penalty can reach, and the grade given for missing work. Read-only. Returns an error if the course has no late policy.

輸入參數course_id必填

list_missing_submissions

List Missing Submissions

List every assignment Canvas has flagged as missing across all your courses, with due date, points and how overdue it is. Read-only. One call instead of looping over courses. list_overdue_assignments checks submission status course by course instead.

輸入參數limit

list_upcoming_assignments

List Upcoming Assignments

List assignments and other planner items due in the next N days (default 7) across all active courses, soonest first. Read-only. Uses the same Planner feed as the Canvas dashboard; set include_completed to also show items already done.

輸入參數daysinclude_completed

list_overdue_assignments

List Overdue Assignments

List assignments past their due date that you have not submitted, checking each active course. Read-only. Slower than list_missing_submissions, which relies on Canvas's own missing flag, but catches items without that flag.

輸入參數limit

assignment_brief

Assignment Brief

Everything needed to start an assignment, in one call: the instructions as clean text, due and lock dates, how to submit, attempts, the rubric, the late policy, linked files, group and peer-review details, and your current status.

輸入參數course_id必填assignment_id必填

get_my_submission

Get My Submission

Get your submission for one assignment: score, grade, submitted time, lateness and deductions, attachments and instructor comments. Read-only. Use get_submission_history for earlier attempts.

輸入參數course_id必填assignment_id必填

list_my_submissions

List My Submissions

List all of your submissions in a course with scores, grades and status. Read-only. Use get_my_submission for full detail on one.

輸入參數pagelimitcourse_id必填

get_submission_summary

Get Submission Summary

Get counts of graded, ungraded and not-submitted submissions for an assignment. Read-only. Often instructor-only, so students may get a permission error.

輸入參數course_id必填assignment_id必填

get_submission_history

Get Submission History

Get every past attempt of your submission for one assignment, oldest to newest, with scores and timestamps. Read-only. Use get_my_submission for just the latest attempt.

輸入參數course_id必填assignment_id必填

list_submission_attachments

List Submission Attachments

List files attached to your submission for one assignment, with names, sizes and download URLs. Read-only. Pass a URL from here to download_submission_attachment to save a file.

輸入參數course_id必填assignment_id必填

get_originality_report

Get Originality Report

Get the plagiarism or originality score (e.g. Turnitin) for your submission and its attachments. Read-only. Returns no report if no originality tool is enabled on the assignment.

輸入參數course_id必填assignment_id必填

get_rubric_assessment

Get Rubric Assessment

Get the rubric scoring applied to your submission, criterion by criterion, with points and comments. Read-only. Use get_rubric to see the full rubric before you submit.

輸入參數course_id必填assignment_id必填

list_submission_comments

List Submission Comments

List comments on your submission from your instructor and others, with author and time. Read-only. Comment text is fenced as untrusted. Reply with post_submission_comment.

輸入參數course_id必填assignment_id必填

mark_submission_read

Mark Submission Read

Mark your submission, including any new grade or comments, as read so the unread badge clears. Only affects you.

輸入參數course_id必填assignment_id必填

submit_assignment_text

Submit Assignment Text

Submit text for an online text-entry assignment, exactly as given; the tool never writes content for you. Your instructor sees it and it counts as a submission attempt. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數body必填commentconfirmcourse_id必填assignment_id必填

submit_assignment_url

Submit Assignment URL

Submit a website URL for an assignment that accepts URL submissions. Your instructor sees it and it counts as a submission attempt. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數url必填commentconfirmcourse_id必填assignment_id必填

submit_assignment_file

Submit Assignment File

Upload a local file and submit it to an assignment in one step. Your instructor sees it and it counts as a submission attempt. To upload now and submit later, use upload_submission_file. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數commentconfirmcourse_id必填file_path必填assignment_id必填

upload_submission_file

Upload Submission File

Upload a local file into an assignment's submission slot without submitting it. Nothing is submitted and your instructor sees nothing yet. Returns a file_id that can be submitted later through raw_canvas_request; submit_assignment_file uploads and submits in one step.

輸入參數course_id必填file_path必填assignment_id必填

post_submission_comment

Post Submission Comment

Post a comment on your own submission for an assignment, optionally with files attached. Your instructor sees it. To attach a file, upload it first with upload_comment_attachment. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數comment必填confirmfile_idscourse_id必填assignment_id必填

upload_comment_attachment

Upload Comment Attachment

Upload a local file so it can be attached to a comment on your submission. Returns a file ID; nothing is visible to anyone until you call post_submission_comment with that ID in file_ids.

輸入參數course_id必填file_path必填assignment_id必填

download_submission_attachment

Download Submission Attachment

Download one file attached to your submission and save it to local disk. Returns the saved path. Get the URL from list_submission_attachments.

輸入參數url必填filename

submit_annotation_assignment

Submit Annotation Assignment

Hand in a student-annotation assignment (where you mark up a document inside Canvas). Do the annotating in Canvas first; this submits what is there. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數commentconfirmcourse_id必填assignment_id必填

get_all_grades

Get All Grades

Get your current and final grades for every active course in one call, including unposted grades where Canvas shows them. Read-only. Use get_course_grade_breakdown to see how one course's grade is calculated.

無需輸入參數。

calculate_gpa

Calculate Gpa

Calculate your GPA on a 4.0 scale from your current Canvas grades, weighted by credit hours. Read-only. Uses the letter grade Canvas shows, or converts the percent (93+ A, 90 A-, 87 B+ and so on). Supports what-if grades and extra points for honors or AP classes. Pass-fail courses are listed as excluded.

輸入參數creditswhat_ifextra_pointsdefault_creditsuse_final_score

get_course_grade_breakdown

Get Course Grade Breakdown

Break down your grade in one course: each assignment group's weight, your points earned vs possible, and its weighted contribution to the total. Read-only. Use compute_needed_score to plan toward a target grade.

輸入參數course_id必填

what_if_grade

What If Grade

Enter a hypothetical score on one assignment and get your recalculated course grade, with Canvas applying group weights and drop rules. Writes a what-if score only you can see; it is not a real grade. Undo with reset_what_if_grades. Canvas treats this as expensive; for pure math with no writes, use compute_needed_score.

輸入參數score必填submission_id必填

reset_what_if_grades

Reset What If Grades

Clear every what-if score you entered in a course so Canvas shows your real grades again. Only affects your own view.

輸入參數course_id必填

get_grading_standard

Get Grading Standard

Get the letter-grade scale for a course, i.e. the percentage needed for each letter such as A- or B+. Read-only.

輸入參數pagelimitcourse_id必填

list_grading_periods

List Grading Periods

List a course's grading periods (e.g. quarters) with start, end and close dates. Read-only. Returns an empty list if the course does not use grading periods.

輸入參數course_id必填

get_my_assignment_analytics

Get My Assignment Analytics

Get your score on each assignment next to the class median, min and max, plus whether you submitted on time. Read-only. Returns an error if course analytics are disabled at your school.

輸入參數course_id必填

get_my_activity_analytics

Get My Activity Analytics

Get your page views and participations in a course, counted per day. Read-only. Returns an error if course analytics are disabled at your school.

輸入參數course_id必填

get_my_communication_analytics

Get My Communication Analytics

Get daily counts of messages between you and the instructor in a course. Read-only. Returns an error if course analytics are disabled at your school.

輸入參數course_id必填

get_unposted_grades

Get Unposted Grades

Get scores your instructor entered but has not released yet, where your enrollment can see them. Read-only. Usually empty for students; use get_all_grades for released grades.

輸入參數pagelimitcourse_id

compute_needed_score

Compute Needed Score

Calculate the average you need on remaining ungraded work in a course to reach a target final percentage, accounting for group weights. Pure math with no writes. Use what_if_grade to test one specific score with Canvas itself.

輸入參數course_id必填target_percent必填

grade_impact_ranking

Grade Impact Ranking

Rank a course's ungraded and upcoming assignments by how much each point moves your final grade. Read-only. Shows where effort pays most; study_priority_ranking does this across all courses with urgency added.

輸入參數course_id必填

get_grade_trend

Get Grade Trend

List graded assignments in a course in date order with a running average, so you can see whether your grade is rising or falling. Read-only.

輸入參數course_id必填

final_grade_scenarios

Final Grade Scenarios

What-if planning for a whole course: your projected final grade if you average 100, 90, 80, 70 or 60% on everything not graded yet, and the average you need on the rest for each letter grade. Uses the course's assignment-group weights and its own letter cutoffs when Canvas shares them. Read-only.

輸入參數targetscourse_id必填

list_quizzes

List Quizzes

List Classic Quizzes in a course with due dates, time limits, allowed attempts and points. Read-only. For New Quizzes, use list_new_quizzes. This server never takes quizzes.

輸入參數pagelimitcourse_id必填search_term

get_quiz

Get Quiz

Get one Classic Quiz: instructions, time limit, allowed attempts, dates and when results are shown. Read-only. Instructions are fenced as untrusted. This server never takes quizzes.

輸入參數quiz_id必填course_id必填

get_my_quiz_submission

Get My Quiz Submission

Get your latest submission for a quiz: score, attempt number, state and timing. Read-only. Use list_my_quiz_submissions for every attempt.

輸入參數quiz_id必填course_id必填

list_my_quiz_submissions

List My Quiz Submissions

List all your attempts on a quiz with the score for each. Read-only. Use get_my_quiz_submission for just the latest.

輸入參數quiz_id必填course_id必填

get_quiz_submission_time

Get Quiz Submission Time

Get the time remaining and end time for an in-progress timed quiz attempt. Read-only. Needs the submission ID from get_my_quiz_submission.

輸入參數quiz_id必填course_id必填submission_id必填

list_quiz_questions

List Quiz Questions

List a quiz's questions so you can review a completed, graded attempt. Read-only and never used to take a quiz. Canvas hides questions unless the instructor allows review, so this often returns a permission error or nothing.

輸入參數pagelimitquiz_id必填course_id必填quiz_submission_id

get_quiz_extensions

Get Quiz Extensions

Get extra time or extra attempts granted to you on a quiz (accommodations). Read-only. Returns an empty list if none were granted.

輸入參數quiz_id必填course_id必填

get_quiz_ip_filters

Get Quiz IP Filters

Get IP address restrictions on a quiz (used for lab-only or proctored exams), so you know where you can take it. Read-only.

輸入參數quiz_id必填course_id必填

get_quiz_assignment_overrides

Get Quiz Assignment Overrides

Get section- or student-specific due dates for quizzes in a course. Read-only. Use get_my_override for the dates that apply to you on one assignment.

輸入參數course_id必填quiz_assignment_overrides

list_new_quizzes

List New Quizzes

List New Quizzes assessments in a course with due dates, points and question counts. Read-only. New Quizzes is a separate service from Classic Quizzes (list_quizzes) and may not be enabled at your school.

輸入參數pagelimitcourse_id必填

get_new_quiz

Get New Quiz

Get details for one New Quizzes assessment: title, instructions, points and timing. Read-only. Uses the Quiz LTI API, which some schools do not expose to students. For Classic Quizzes use get_quiz.

輸入參數quiz_id必填course_id必填

get_new_quiz_items

Get New Quiz Items

List the questions in a New Quizzes assessment. Read-only. Most schools only allow this for instructors, so students usually get a permission error.

輸入參數pagelimitquiz_id必填course_id必填

list_topics

List Topics

List discussion topics in a course with unread counts and whether you must post before seeing replies. Read-only. Set only_announcements for announcements; read a thread with get_full_topic_view.

輸入參數pagelimitcourse_id必填search_termonly_announcements

get_topic

Get Topic

Get one discussion topic: its prompt, author, posting rules and unread count, without the replies. Read-only. The prompt is fenced as untrusted text. Use get_full_topic_view to read the whole thread, or list_topics to find topic IDs.

輸入參數topic_id必填course_id必填

get_full_topic_view

Get Full Topic View

Get an entire discussion thread, all entries and nested replies, in one request. Read-only. Much lighter on rate limits than paging through list_entries. All participant text is fenced as untrusted.

輸入參數topic_id必填course_id必填max_entries

list_entries

List Entries

List top-level entries in a discussion topic, page by page. Read-only. Entry text is fenced as untrusted. Prefer get_full_topic_view to read a whole thread at once.

輸入參數pagelimittopic_id必填course_id必填

list_entry_replies

List Entry Replies

List the replies under one discussion entry, oldest first. Read-only. Bodies are fenced as untrusted text. To read a whole thread at once, use get_full_topic_view instead.

輸入參數pagelimitentry_id必填topic_id必填course_id必填

post_entry

Post Entry

Post a new top-level entry to a course discussion. Visible to the whole class. Use reply_to_entry to answer someone's entry. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmmessage必填topic_id必填course_id必填

reply_to_entry

Reply To Entry

Reply to one discussion entry. Visible to the whole class. Use post_entry for a new top-level post. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmmessage必填entry_id必填topic_id必填course_id必填

edit_my_entry

Edit My Entry

Replace the text of one of your own discussion entries, if the course allows editing. The new text is visible to the whole class. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmmessage必填entry_id必填topic_id必填course_id必填

delete_my_entry

Delete My Entry

Delete one of your own discussion entries, if the course allows it. Classmates see that an entry was removed. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmentry_id必填topic_id必填course_id必填

rate_entry

Rate Entry

Like (rating 1) or remove your like (rating 0) on a discussion entry, where the instructor enabled ratings. Others see the like count.

輸入參數rating必填entry_id必填topic_id必填course_id必填

mark_topic_read

Mark Topic Read

Mark a discussion topic as read for you. Only affects your unread counts. Use mark_all_entries_read to also clear every reply.

輸入參數topic_id必填course_id必填

mark_all_entries_read

Mark All Entries Read

Mark every entry in a discussion topic as read for you. Only affects your unread counts.

輸入參數topic_id必填course_id必填

mark_entry_read

Mark Entry Read

Mark one discussion entry as read for you. Only affects your unread counts.

輸入參數entry_id必填topic_id必填course_id必填

subscribe_topic

Subscribe Topic

Subscribe to a discussion topic so you are notified about new replies. Only affects you. Reverse with unsubscribe_topic.

輸入參數topic_id必填course_id必填

unsubscribe_topic

Unsubscribe Topic

Stop getting notifications for new replies in a discussion topic. Only affects you; the topic and your posts are unchanged. Reverse with subscribe_topic.

輸入參數topic_id必填course_id必填

list_announcements

List Announcements

List announcements from one or more courses in a date range, newest first, with title, author and body. Read-only. Bodies are fenced as untrusted text. Without dates it covers the last 30 days; without course_ids it covers all active courses.

輸入參數limitend_datecourse_idsstart_dateunread_only

get_unread_discussion_count

Get Unread Discussion Count

Get the unread entry count for each discussion topic in a course. Read-only and cheap. Use get_full_topic_view to read a topic.

輸入參數pagelimitcourse_id必填

list_global_announcements

List Global Announcements

School-wide announcements: the banners your school shows everyone on the Canvas dashboard (closures, outages, deadlines). Read-only. Messages are provenance-fenced.

無需輸入參數。

dismiss_global_announcement

Dismiss Global Announcement

Close a school-wide announcement so it stops showing on your Canvas dashboard. Only affects you.

輸入參數account_idnotification_id必填

mark_announcement_read

Mark Announcement Read

Mark one course announcement as read, clearing its unread badge.

輸入參數course_id必填announcement_id必填

mark_all_announcements_read

Mark All Announcements Read

Mark every unread announcement in the last N days as read, across all your courses or the ones you pick. Clears the unread badges in Canvas.

輸入參數dayscourse_ids

list_conversations

List Conversations

List your Canvas Inbox conversations, newest first, with subject, participants, last message preview and unread state. Read-only. Use get_conversation for the full thread.

輸入參數pagelimitscopefilter

get_conversation

Get Conversation

Get the full message thread for one Inbox conversation, with authors and times. Read-only unless mark_as_read is true. Message bodies are fenced as untrusted.

輸入參數mark_as_readconversation_id必填

send_message

Send Message

Send a new Canvas Inbox message, e.g. to a professor or classmate. Recipients get it immediately. Get recipient IDs from find_recipients; to answer an existing thread, use reply_to_conversation. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數body必填confirmsubject必填course_idrecipients必填separate_threads

reply_to_conversation

Reply To Conversation

Reply within an existing Canvas Inbox conversation. Every participant receives it. Use send_message to start a new thread. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數body必填confirmconversation_id必填included_message_ids

find_recipients

Find Recipients

Search by name for people you are allowed to message, optionally within one course. Read-only. Returns the user IDs that send_message and add_recipients need.

輸入參數limitsearch必填course_id

add_recipients

Add Recipients

Add more people to an existing Inbox conversation so they receive its messages. Get user IDs from find_recipients. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmrecipients必填conversation_id必填

mark_conversation_read

Mark Conversation Read

Mark one Inbox conversation as read. Only affects you; the sender is not notified. Reverse with mark_conversation_unread.

輸入參數conversation_id必填

mark_conversation_unread

Mark Conversation Unread

Mark one Inbox conversation as unread so it shows up again. Only affects you. Reverse with mark_conversation_read.

輸入參數conversation_id必填

star_conversation

Star Conversation

Star an Inbox conversation so it appears under the "starred" scope. Only affects you. Reverse with unstar_conversation.

輸入參數conversation_id必填

unstar_conversation

Unstar Conversation

Remove the star from an Inbox conversation. Only affects you; the conversation itself is unchanged. Reverse with star_conversation.

輸入參數conversation_id必填

archive_conversation

Archive Conversation

Archive an Inbox conversation so it leaves your inbox view; it stays under the archived scope. Only affects you.

輸入參數conversation_id必填

delete_conversation

Delete Conversation

Delete an Inbox conversation from your own inbox. Other participants keep their copy. Cannot be undone. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmconversation_id必填

get_unread_conversation_count

Get Unread Conversation Count

Get the number of unread Canvas Inbox conversations. Read-only and very cheap. Use list_conversations with scope unread to see them.

無需輸入參數。

batch_update_conversations

Batch Update Conversations

Apply one action (mark read or unread, star, unstar, archive or delete) to many Inbox conversations at once. Only affects your own inbox. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數event必填confirmconversation_ids必填

list_calendar_events

List Calendar Events

List calendar events, or assignment due dates with type=assignment, in a date range (default: the next 14 days). Read-only. Filter to specific courses with course_ids.

輸入參數pagetypelimitend_datecourse_idsstart_date

get_calendar_event

Get Calendar Event

Get one calendar event: title, start and end time, location, description and the course it belongs to. Read-only. Get event_id from list_calendar_events.

輸入參數event_id必填

create_personal_event

Create Personal Event

Create an event on your own Canvas calendar (only you see it). Returns the new event with its ID. Use update_calendar_event to change it later.

輸入參數title必填end_atstart_at必填descriptionlocation_name

update_calendar_event

Update Calendar Event

Change the title, times or description of a calendar event you created. Only events you own can be changed; course events return a permission error. Fields you omit stay the same.

輸入參數titleend_atevent_id必填start_atdescription

delete_calendar_event

Delete Calendar Event

Delete a calendar event you own, such as a personal event. Cannot be undone. Course events return a permission error. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmevent_id必填

list_appointment_groups

List Appointment Groups

List appointment groups you can sign up for, such as office hours or advising slots, with open time slots. Read-only. Book a slot with reserve_appointment_slot.

輸入參數pagelimitscopeinclude_past

get_appointment_group

Get Appointment Group

Get one appointment group (office hours or advising) with its time slots and remaining capacity. Read-only. Book a slot with reserve_appointment_slot using a slot ID from here.

輸入參數group_id必填

reserve_appointment_slot

Reserve Appointment Slot

Book an office hours or advising time slot. The instructor sees the booking. Get slot IDs from get_appointment_group; cancel with cancel_reservation. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmcommentsappointment_id必填

cancel_reservation

Cancel Reservation

Cancel an appointment slot you booked. The instructor can see the cancellation. Get event_id from list_my_reservations. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmevent_id必填cancel_reason

list_my_reservations

List My Reservations

List the appointment slots you have booked, from the past week through the next 60 days. Read-only. Cancel one with cancel_reservation.

輸入參數pagelimit

get_course_pace

Get Course Pace

Get the pacing plan for a self-paced course: suggested days for each module and the resulting dates. Read-only. Returns an error if course pacing is not used.

輸入參數course_id必填

list_course_files

List Course Files

List files in a course (slides, readings, handouts) with names, sizes, types and IDs, optionally filtered by name or type. Read-only. Save one with download_file, or all with download_all_course_files.

輸入參數pagelimitcourse_id必填search_termcontent_types

list_folders

List Folders

List every folder in a course's Files area with its path, file count and ID. Read-only. Use get_folder_tree for a readable outline of folders and files together.

輸入參數pagelimitcourse_id必填

get_folder

Get Folder

Get one folder's details: full path, parent folder, and how many files and subfolders it holds. Read-only. Get folder_id from list_folders.

輸入參數folder_id必填

get_folder_tree

Get Folder Tree

Show a course's folders and files as an indented outline. Read-only. A good first look at what material exists; use list_course_files for IDs and details.

輸入參數course_id必填max_depth

get_file_metadata

Get File Metadata

Get details for one file: name, size, content type, created and updated dates, and download URL. Read-only. Use download_file to save it locally.

輸入參數file_id必填

get_file_public_url

Get File Public URL

Get a temporary public download link for a file that works without logging in. Read-only, but anyone with the link can download the file until it expires.

輸入參數file_id必填

download_file

Download File

Download one Canvas file and save it to local disk. Returns the saved path and size. Get file_id from list_course_files or list_my_files.

輸入參數file_id必填dest_dir

read_course_file

Read Course File

Read the text of a Canvas file so you can summarize it, quiz from it or answer questions about it. Read-only. Works with PDF, Word (.docx), PowerPoint (.pptx, including speaker notes), web pages and plain-text files up to 25 MB. Long files come back in parts: call again with next_offset. Scanned PDFs have no text. Get file_id from list_course_files or list_module_items.

輸入參數offsetfile_id必填max_chars

list_my_files

List My Files

List files in your personal Canvas storage (not course files), with names, sizes and IDs. Read-only. For course files use list_course_files.

輸入參數pagelimitsearch_term

upload_to_my_files

Upload To My Files

Upload a local file into your personal Canvas storage. Only you can see it until you share or submit it. Returns the new file's ID.

輸入參數file_path必填parent_folder_path

get_storage_quota

Get Storage Quota

Get your personal Canvas storage quota and how much of it is used. Read-only.

無需輸入參數。

delete_my_file

Delete My File

Delete a file from your personal Canvas storage. Cannot be undone. Get file_id from list_my_files. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmfile_id必填

create_folder

Create Folder

Create a folder in your personal Canvas storage (not in a course). Only you can see it. Returns the new folder with its ID. Upload into it with upload_to_my_files.

輸入參數name必填parent_folder_id

list_pages

List Pages

List the wiki pages in a course with titles, URL slugs and last-updated dates. Read-only. Read one page with get_page_content using its url slug.

輸入參數pagelimitcourse_id必填search_term

get_page_content

Get Page Content

Read a course page as plain text (converted from HTML), with its title and last-updated time. Read-only. The body is fenced as untrusted. Find page slugs with list_pages.

輸入參數page_url必填course_id必填

list_page_revisions

List Page Revisions

List the edit history of one course page: revision numbers, editors and dates. Read-only. Students often cannot see page history, in which case Canvas returns a permission error. Read a revision with get_page_revision.

輸入參數pagelimitpage_url必填course_id必填

get_page_revision

Get Page Revision

Get the content of a course page as it was at one past revision, with the editor and date. Read-only. The body is fenced as untrusted text. Use list_page_revisions to find revision numbers, and get_page_content for the current version. Canvas returns a permission error if page history is hidden from students.

輸入參數page_url必填course_id必填revision_id必填

list_modules

List Modules

List the modules in a course in order, with your completion state, prerequisites and unlock dates. Read-only. Use list_module_items to see what is inside a module.

輸入參數pagelimitcourse_id必填

get_module

Get Module

Get one module: name, position, unlock date, prerequisites, your completion state and its items. Read-only. Get module_id from list_modules.

輸入參數course_id必填module_id必填

list_module_items

List Module Items

List the items in a module (assignments, pages, files, quizzes, links) with each one's completion requirement and whether you met it. Read-only. Use list_modules to find module IDs.

輸入參數pagelimitcourse_id必填module_id必填

get_module_item

Get Module Item

Get one item inside a module (assignment, page, file, quiz, link…) with its completion requirement and whether you met it. Read-only. Get item_id from list_module_items.

輸入參數item_id必填course_id必填module_id必填

mark_module_item_done

Mark Module Item Done

Mark a module item as done to satisfy a 'mark as done' completion requirement. Shows in your instructor's progress view.

輸入參數item_id必填course_id必填module_id必填

mark_module_item_read

Mark Module Item Read

Mark a module item as viewed to satisfy a 'must view' requirement, without opening it. Shows in your instructor's progress view.

輸入參數item_id必填course_id必填module_id必填

select_mastery_path

Select Mastery Path

Choose which branch to follow at a mastery path (conditional release) point in a module. Unlocks that branch's assignments and may not be reversible. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmitem_id必填course_id必填module_id必填assignment_set_id必填

get_module_item_sequence

Get Module Item Sequence

Show where a piece of content sits in its module: the previous and next items, so you can work through a module in order. Read-only.

輸入參數asset_id必填course_id必填asset_type必填

list_media_objects

List Media Objects

List recorded lectures and other video or audio in a course with titles and media IDs. Read-only. Get captions with get_media_captions or download_media_captions.

輸入參數pagelimitcourse_id必填

get_media_captions

Get Media Captions

List the caption (subtitle) tracks on a recorded lecture with their languages and IDs. Read-only. Captions are the closest thing to a transcript; save one with download_media_captions.

輸入參數media_id必填

download_media_captions

Download Media Captions

Download a lecture's caption track and save it as a text transcript on local disk. Returns the saved path. Get media_id from list_media_objects and track_id from get_media_captions.

輸入參數dest_dirmedia_id必填track_id

create_content_export

Create Content Export

Start a course export as a .imscc Common Cartridge or a zip of files. Canvas packages it in the background; poll get_content_export with the returned ID. export_course_archive does export and download in one step.

輸入參數course_id必填export_type

get_content_export

Get Content Export

Check a course export's status and get its download URL once Canvas has finished. Read-only. Start an export with create_content_export.

輸入參數course_id必填export_id必填

list_external_tools

List External Tools

List external (LTI) tools enabled in a course, such as publisher platforms or proctoring apps, with their IDs. Read-only. Open one with get_tool_launch_url.

輸入參數pagelimitcourse_id必填

get_tool_launch_url

Get Tool Launch URL

Get a one-time launch URL for an external (LTI) tool in a course, so you can open it directly in a browser. Read-only. Get tool_id from list_external_tools. The URL expires quickly.

輸入參數urltool_idcourse_id必填

list_conferences

List Conferences

List web conferences in a course (BigBlueButton or similar) with titles, status and join links. Read-only. Returns an empty list if conferences are not enabled.

輸入參數pagelimitcourse_id必填

list_collaborations

List Collaborations

List collaborative documents in a course (Google Docs or Microsoft 365 integrations) with titles and links. Read-only.

輸入參數pagelimitcourse_id必填

list_eportfolios

List Eportfolios

Your Canvas ePortfolios (showcase sites of your work). Read-only; Canvas does not let other apps add entries, so edit them in Canvas itself.

輸入參數pagelimitinclude_deleted

get_eportfolio_pages

Get Eportfolio Pages

The pages of one of your ePortfolios, with their text. Read-only.

輸入參數limiteportfolio_id必填

list_my_groups

List My Groups

List the student groups you belong to across all courses, with group IDs and course. Read-only. Use the IDs with the other group tools.

輸入參數pagelimit

get_group

Get Group

Get one student group: name, description, member count and the course it belongs to. Read-only. Get group_id from list_my_groups.

輸入參數group_id必填

list_group_members

List Group Members

List the members of a student group with names and user IDs. Read-only. Get group_id from list_my_groups.

輸入參數pagelimitgroup_id必填

list_group_discussions

List Group Discussions

List discussion topics inside a group workspace with titles and unread counts. Read-only. Post to one with post_group_discussion.

輸入參數pagelimitgroup_id必填

list_group_files

List Group Files

List files shared in a group workspace with names, sizes and IDs. Read-only. Save one with download_file.

輸入參數pagelimitgroup_id必填

list_group_pages

List Group Pages

List wiki pages in a group workspace with titles and URL slugs. Read-only.

輸入參數pagelimitgroup_id必填

post_group_discussion

Post Group Discussion

Post to a discussion inside a group workspace. Visible to your groupmates and instructors. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmmessage必填group_id必填topic_id必填

list_group_categories

List Group Categories

List the group sets in a course (e.g. "Project teams") and whether you can sign up yourself. Read-only. Join an open group with join_group.

輸入參數pagelimitcourse_id必填

join_group

Join Group

Join a self-signup student group. Groupmates and instructors see that you joined. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmgroup_id必填

leave_group

Leave Group

Leave a student group you belong to. You lose access to its workspace. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數confirmgroup_id必填

get_group_activity_stream

Get Group Activity Stream

Get recent activity in a group workspace: new discussion posts, files and announcements, newest first. Read-only. Text written by others is fenced as untrusted.

輸入參數pagelimitgroup_id必填

list_rubrics

List Rubrics

List the rubrics in a course with titles, point totals and IDs. Read-only. Read one in full with get_rubric.

輸入參數pagelimitcourse_id必填

get_rubric

Get Rubric

Get a full rubric: every criterion, rating level and point value. Read-only. Read it before starting work to know how it will be scored; get_rubric_assessment shows how your submission was scored.

輸入參數course_id必填rubric_id必填

get_my_rubric_assessment

Get My Rubric Assessment

Get how the rubric was applied to your submission: points and comment for each criterion, plus your score. Read-only. Returns no assessment if the instructor did not grade with a rubric. get_rubric_assessment returns the same data plus the compact rubric_assessment form.

輸入參數course_id必填assignment_id必填

list_my_peer_reviews

List My Peer Reviews

List peer reviews assigned to you that you still need to complete, in one course or all active courses. Read-only. Checks both the assignment endpoint and the Planner feed, since either alone can miss items. Submit with submit_peer_review.

輸入參數course_id

get_peer_review_assignment

Get Peer Review Assignment

Get the peer reviews set up on one assignment: who reviews whom and whether each is complete. Read-only. Use list_my_peer_reviews for just the reviews you still owe.

輸入參數course_id必填assignment_id必填

submit_peer_review

Submit Peer Review

Submit your peer review of a classmate's work: a comment and, optionally, rubric scores. The classmate and instructor can see it. Get student_id from list_my_peer_reviews. [IRREVERSIBLE: call without confirm=true first to preview, then re-call with confirm=true. Apps that can ask the user directly will show a confirmation instead.]

輸入參數comment必填confirmcourse_id必填student_id必填assignment_id必填rubric_assessment

版本歷史

5
  1. v1.3.1最新Nov 5, 2026
  2. v1.3.0Nov 3, 2026
  3. v1.2.3Oct 31, 2026
  4. v1.2.2Oct 30, 2026
  5. v1.2.0Oct 29, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分