Canvas Lms Mcp Local

io.github.FireiscoolsoloPublished by GitHub account Fireiscoolsolov1.3.0Updated Nov 8, 2026

Student-focused Canvas LMS: 237 tools for grades, deadlines, planning, submissions and study plans.

Overview

AI-generated overview

Local Canvas LMS server giving an AI assistant 237 tools for grades, deadlines, study plans, course content, submissions and messaging.

What you can do
  • Plan the day, week and semester: daily briefing, week ahead, study plans, planner notes, deadline calendar export
  • Analyze grades: final grade scenarios, what-if scores, grade impact ranking, GPA calculation
  • Read assignments and course content: assignment briefs with rubrics, missing work, PDFs, Word docs, slides, pages, modules
  • Submit and discuss: text, URL and file submissions, comments, discussion replies, inbox messages
  • Look up courses, groups, rubrics, quizzes (read-only), calendar events and contacts
  • Run raw requests to other Canvas endpoints and search across courses
When to use it
Useful for students who want an assistant to track Canvas deadlines, explain assignments and rubrics, plan study time and reason about grades on their own computer, without exposing anything to the internet.
Requirements
Runs locally over stdio via npx, so Node.js 18 or newer is needed (22 or newer to read PDFs); a Claude Desktop extension bundle avoids Node.js. Requires a Canvas account, a personal access token in CANVAS_API_TOKEN (or a token file or system keychain) and the school's Canvas address in CANVAS_BASE_URL. Network access to the school's Canvas instance.
Before you install
The Canvas token is a credential: it is stored in app config unless kept in the system keychain, and student tokens typically expire in 30 to 120 days. Writes are enabled by default (CANVAS_ALLOW_WRITES); submitting, posting, uploading and deleting need confirmation, but the one-time token fallback cannot prove you agreed, so keep the app's ask-before-running setting on. Downloads are limited to the download folder. Some schools restrict personal API tokens or third-party tools.

Installation

In SourceWeft

  1. Open Canvas Lms Mcp Local in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[!TIP] Want it on your phone, on the web, or across several computers? Go to the Remote Edition → (website). It has the same 237 tools, served over a password-protected tunnel with a status page, phone alerts and automatic failover between computers.

[Canvas LMS MCP: Local Edition logo]

Canvas LMS MCP: Local Edition

Use Canvas from your AI assistant on your own computer. No tunnel, no passwords, no background service.

237 tools · One-command setup · Nothing exposed to the internet

[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 · Configuration · Tools · Troubleshooting · Changelog

[!TIP] On Windows? Skip the terminal. The free Canvas MCP Installer Assistant sets this up in Claude Desktop, the ChatGPT desktop app and other AI apps 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)]


Local or Remote?

Local (this repo)Remote
Works withClaude Desktop, the ChatGPT desktop app, Claude Code, Cursor, VS Code and other MCP clients on this computerAny MCP client that supports remote servers, on any device
When it runsOnly while your AI app is open, because the app starts itAlways on, in the background
You needNode.js and a Canvas tokenNode.js, a Canvas token, an ngrok or Cloudflare account and a password
Internet exposureNone: no port is openedPublic HTTPS address, password-protected
Multiple computersInstall it separately on each oneBuilt-in automatic failover between computers
Setup timeAbout 2 minutes with setup, or 5 by handAbout 15 minutes, plus about 5 per extra computer

Highlights

  • Your day and week: daily_briefing, get_week_ahead, semester_snapshot, cross-course missing work in one call
  • Planner: add your own to-do notes, check items off your Canvas To Do list, export deadlines to Google, Apple or Outlook calendars
  • Study plans: study_plan spreads study time before each deadline around your calendar; schedule_study_plan puts it on your Canvas calendar
  • Grade intelligence: final_grade_scenarios (what you need for each letter, with group weights), what_if_grade, grade_impact_ranking, calculate_gpa
  • Assignments: assignment_brief gives the instructions, rubric, late policy and linked files in one call
  • Submissions, discussions and inbox: submit, post and message, always after you confirm (apps that support it ask you directly)
  • Content: read lecture PDFs, Word docs and slides with read_course_file, plus pages, modules, captions and full course export
  • Prompts and attachments: one-click prompts like Daily briefing, Start this assignment and Am I on track to pass?, and attach a syllabus or assignment to a chat

How it works

 Your AI app (MCP client)      ──stdio──►  node index.js  ──HTTPS──►  your school's Canvas API        (starts the server)              (237 tools, runs only                                          while your app is open)

No web server, no ports, nothing to keep running. Your AI app starts the server when it opens and stops it when it closes.

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 Local and Remote 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) and a Canvas account.

1. Create a Canvas access token

In Canvas, go to Account → Settings → Approved Integrations → + New Access Token. Canvas only shows the token once, so copy it right away. Student tokens usually expire after 30–120 days.

2. Add it to your AI app

Easiest: one command (Windows, macOS and Linux)
bash
npx canvas-lms-mcp-local setup

It asks for your school's Canvas address and your token, checks they work, then adds Canvas to the apps you pick: Claude Desktop, the ChatGPT desktop app, Claude Code, Cursor, VS Code, Windsurf, Gemini CLI and LM Studio. Your old settings are backed up first. It can also keep the token in Windows Credential Manager, the macOS Keychain or the Linux keyring instead of in each app's settings file.

Afterwards, fully quit and reopen your app (the command tells you how for each one).

Claude Desktop: one-click extension
  1. Download canvas-lms.mcpb from the latest release.
  2. Open it (double-click, or drag it into Claude Desktop's Settings → Extensions).
  3. Click Install, then enter your school's Canvas address and your token when Claude asks.

The extension includes everything it needs, so you don't have to install Node.js for it.

Desktop apps, by hand
  1. Open your app's MCP config file. It's usually under Settings → Developer or Settings → MCP servers, and most apps use an mcpServers JSON block. npx canvas-lms-mcp-local print-config <app> prints the exact snippet for each app.

  2. Add this canvas entry with your token and school address (also in mcp_config.example.json):

    json
    {  "mcpServers": {    "canvas": {      "command": "npx",      "args": ["-y", "canvas-lms-mcp-local"],      "env": {        "CANVAS_API_TOKEN": "your_token_here",        "CANVAS_BASE_URL": "https://yourschool.instructure.com"      }    }  }}
  3. Fully quit the app: on Windows, right-click the tray icon and choose Quit; on macOS, press ⌘Q. Then reopen it. Closing the window isn't enough.

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

  2. Choose STDIO and fill in the form. On Windows, each argument goes in its own box:

    FieldValue
    Namecanvas
    Command to launchcmd
    Arguments/c, npx, -y, canvas-lms-mcp-local
    Environment variablesCANVAS_API_TOKEN = your token
    CANVAS_BASE_URL = https://yourschool.instructure.com
  3. Click Save, then start a new chat. Chats that were already open don't pick up new tools.

Command-line clients

Register this command as a stdio MCP server named canvas, with CANVAS_API_TOKEN and CANVAS_BASE_URL set in its environment:

bash
npx -y canvas-lms-mcp-local

For Claude Code, npx canvas-lms-mcp-local setup --apps claude-code does it for you. Then check your client's MCP status to confirm it's connected.

3. Try it

Ask your assistant: "Run test_connection." It checks your identity, courses, planner, inbox and missing submissions, and reports any features your school has disabled.

Then try: "Give me my daily briefing", "What do I need on the rest of Biology to get a B?", "Plan my study time for the next two weeks" or "Explain the Lab 4 assignment and its rubric."

If something isn't working, run npx canvas-lms-mcp-local doctor. It checks Node, each app's settings and your token, and says how to fix what it finds.

Prefer running from source?
bash
git clone https://github.com/Fireiscoolsolo/canvas-lms-mcp-local.gitcd canvas-lms-mcp-localnpm install

Copy .env.example to .env in the same folder as index.js, fill in your token and school address, then point your config at the file instead of npx:

json
{ "mcpServers": { "canvas": { "command": "node", "args": ["C:/Users/YOUR-NAME/Documents/canvas-lms-mcp-local/index.js"] } } }

Forward slashes work on Windows. On macOS, the path looks like /Users/you/canvas-lms-mcp-local/index.js. On Windows, make sure the file is named .env, not .env.txt. To check, turn on View → File name extensions in File Explorer.

The tools live in core/, which is shared with the Remote Edition: change them here, then run npm run sync-core to copy them across. npm test runs every tool against a fake Canvas, so no token is needed.

Configuration

Put settings in the env block of your config, as in step 2. If you run from source, you can use .env next to index.js instead.

VariableRequiredDefaultDescription
CANVAS_API_TOKENYes*—Your Canvas personal access token
CANVAS_API_TOKEN_FILE—Or the path of a file that holds only the token
CANVAS_TOKEN_STORE—Or keychain: read the token from Windows Credential Manager, the macOS Keychain or the Linux keyring (setup saves it there)
CANVAS_BASE_URLYes—e.g. https://yourschool.instructure.com
CANVAS_ALLOW_WRITEStruefalse (or 0, no, off) = nothing in Canvas can change. A value it can't read counts as false, and tools say so
CANVAS_PROFILEfullcore = curated subset of about 50 tools. A value it can't read counts as core
CANVAS_TOOLSallOnly these tool groups or tools, e.g. grades,planner,whoami (for apps that struggle with many tools)
CANVAS_DISABLE_TOOLS—Leave out these tool groups or tools, e.g. inbox,groups
CANVAS_CACHE_TTL60Response cache time in seconds
CANVAS_TIMEZONEsystemIANA time zone for dates
CANVAS_DOWNLOAD_DIRDownloads/Canvas in your home folderWhere download tools save files. They can't save anywhere outside it
CANVAS_MAX_RESPONSE_CHARS100000Longest answer before it is trimmed
CANVAS_IP_FAMILYboth4 or 6 uses only that kind of address. Worth trying if new connections time out

* One of CANVAS_API_TOKEN, CANVAS_API_TOKEN_FILE or CANVAS_TOKEN_STORE.

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

Long lists come one page at a time (limit and page), dates read like "Fri, Nov 7, 11:59 PM (in 2 days)", and Canvas errors are explained with the fix. In your token's last week, answers carry a heads-up so the assistant can remind you to renew it.

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.

Security

  • Nothing is exposed: the server doesn't listen on any port. Only the app that started it can talk to it, through a private pipe.
  • Confirmation gate: tools that send, submit, post, upload or delete need confirmation. Apps that can ask you directly always do, and nothing the AI sends can skip that. Other apps get a preview and a one-time token that only works for that exact request, for 5 minutes. The token can't prove you agreed, so keep your AI app's own "ask before running" setting on for these tools.
  • Prompt-injection fencing: text other people wrote (posts, messages, comments, rubric notes) is wrapped in <<<CANVAS_CONTENT>>> markers and labelled as untrusted.
  • Your token stays private: every request is checked, so it can only go to your school's Canvas. It's never written to logs, and can live in your system's password store instead of a config file.
  • Safe downloads: files only go in your download folder, never replace another file, and have their names cleaned.
  • Private files stay private: uploads refuse .env files, keys, sign-in files, and the folders where browsers and AI apps keep their data.
  • No quiz-taking: quiz attempt endpoints are deliberately not included, and writes to them are refused for every tool, however the address is written.

Never commit .env. It's 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 confirmed it.

  • Follow your school's academic integrity and acceptable-use policies. Some schools restrict personal API tokens or third-party tools.
  • Want to be sure nothing in Canvas changes? Set CANVAS_ALLOW_WRITES=false for read-only mode. Downloads still work, into your download folder.

Troubleshooting

Start with npx canvas-lms-mcp-local doctor: it checks everything below and says what to fix.

SymptomFix
Canvas tools don't appear in your appCheck that the config is valid JSON, then fully quit and reopen the app. setup writes it for you
spawn npx ENOENT / "npx" not foundInstall Node.js, then restart the app. If it still fails, use the full path as command, e.g. "C:/Program Files/nodejs/npx.cmd", or use the Claude Desktop extension, which needs no Node.js
The first start is slownpx downloads the package the first time. Later starts are fast
"CANVAS_API_TOKEN is not set"Add it to the env block of the canvas entry in your config, or run setup. If you run from source, check that .env sits next to index.js and isn't named .env.txt
"Your Canvas token was rejected"Your token expired. Create a new one (step 1) and run setup again
Your app struggles with so many toolsSet CANVAS_TOOLS to the groups you use, e.g. grades,planner,assignments, or CANVAS_PROFILE=core
Reading works but uploads or new connections time outdoctor's 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
Changes to the code don't take effectRestart your AI app, because tool lists are loaded when it connects
Where are the logs?In your AI app's MCP log folder. Every line from this server starts with [canvas-mcp]

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. Canvas doesn't let other apps add ePortfolio entries.

License

MIT. This project isn't affiliated with Instructure.

Source: README.md at commit 8be2dad

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

8
  1. v1.3.0LatestNov 8, 2026
  2. v1.2.1Nov 5, 2026
  3. v1.2.0Nov 3, 2026
  4. v1.1.3Oct 31, 2026
  5. v1.1.2Oct 30, 2026
  6. v1.1.0Oct 29, 2026
  7. v1.0.1Oct 21, 2026
  8. v1.0.0Oct 14, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts