npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

canvaslmsmcpkit

v2.1.1

Published

The MCP for Canvas LMS — connect any AI agent to Canvas. Deadlines, grades, submissions, files, and announcements over your own personal access token.

Readme

canvaslmsmcp

The MCP for Canvas LMS. Connect any AI agent (Claude, Cursor, VS Code, Windsurf, Codex) to Canvas over your own personal access token. Monitor deadlines and grades, submit your work, download materials, and read your inbox — no browser, no scraping.

Live at canvaslmsmcp.com.

Why this one

Most Canvas integrations are thin REST wrappers with one tool per endpoint. This ships composite, agent-first tools that answer the questions you actually ask:

  • term_snapshot — your entire active term (every course, assignment, due date, submission state, and live grade) in one GraphQL round-trip, not dozens of REST calls.
  • pass_status — for each course, whether you have a passing grade banked yet (requires ≥1 graded submission). The moment it flips, an end-of-term fail can't sink you.
  • whats_due — smart deadline triage across all courses, merged from the planner feed + missing submissions, tagged overdue / today / soon / this-week.
  • submit_assignment — submit text, a URL, or a file (full 3-step upload) with automatic pre-flight checks on the lock window and submission type.
  • download_course_materials — bulk-pull every file in a course to a local folder for exam cram.

Plus grades, assignments, files, modules, announcements, inbox, discussions, and a raw graphql passthrough. Rate-limit-aware, pagination handled, role-scoped.

Quickstart

1. Get a Canvas API token

Canvas → Account → Settings → Approved Integrations → + New Access Token. Copy it.

2. Add to your MCP client

{
  "mcpServers": {
    "canvas": {
      "command": "npx",
      "args": ["-y", "canvaslmsmcp"],
      "env": {
        "CANVAS_API_TOKEN": "your-token",
        "CANVAS_BASE_URL": "https://school.instructure.com",
        "CANVAS_ROLE": "student"
      }
    }
  }
}

CANVAS_BASE_URL is your institution origin only — no /api/v1. CANVAS_ROLE (student / teacher / all) filters the exposed tools; omit for all.

3. Ask your agent

“What’s due this week?” · “Have I banked a pass in every class?” · “Download all CS 101 slides to ~/cram” · “Submit paper.pdf to Assignment 3.”

Tools

| Tool | What it does | |---|---| | term_snapshot | ★ Whole term in one GraphQL call | | pass_status | ★ Banked-pass detection per course | | whats_due | ★ Smart cross-course deadline triage | | submit_assignment | ★ Submit text/URL/file with pre-flight checks | | download_course_materials | ★ Bulk-download a course's files | | list_courses / get_course | Enrollments; syllabus + external-tool detection | | get_grades | current + final score per course | | list_assignments / get_assignment / get_submission | Assignment + submission detail | | list_missing_submissions | Past-due, unsubmitted | | list_modules / list_files / download_file | Course materials | | list_announcements / inbox / send_message / post_discussion_reply | Communication | | list_calendar_events / create_calendar_event | Calendar | | mark_planner_complete / add_submission_comment | State | | graphql / rate_limit_status / whoami | Power / diagnostics |

Run npx canvaslmsmcp --help for the full list.

CLI

npx canvaslmsmcp --help      # list tools + config snippet
npx canvaslmsmcp --version
CANVAS_API_TOKEN=... CANVAS_BASE_URL=https://school.instructure.com npx canvaslmsmcp

Security

Runs entirely on your own personal access token, scoped to your own permissions — it cannot reach other users, admin data, or exam answer keys (Canvas enforces this server-side). Treat the token like a password; revoke it anytime at Canvas → Settings.

Telemetry

This package sends anonymized, opt-out usage pings so the maintainer can see which tools matter and catch breakage. Each ping is a cumulative snapshot: a random install id, package version, MCP client name, CANVAS_ROLE, a SHA-256 hash of your Canvas host, your node + OS, and per-tool call counts. It never sends your token, your actual host, grades, assignments, messages, or any course content.

Opt out completely:

CANVAS_MCP_TELEMETRY=0   # or DO_NOT_TRACK=1

License

MIT © Gabriele Muratori. Not affiliated with Instructure.