
Canvas LMS Access
FreeEffortlessly fetch Canvas LMS courses and assignments.
Free · Opens the source repo
What Canvas LMS Access does
The Canvas LMS Access skill provides a straightforward way to interact with the Canvas Learning Management System via its API. Designed for educators, administrators, and developers, this skill allows users to retrieve a list of courses and assignments from their Canvas instance without any modification capabilities. It is particularly useful for those who need to automate the retrieval of course information or integrate Canvas data into other applications or workflows.
By utilizing a simple Python script, users can execute commands to list active courses or assignments for specific courses. The skill requires an API token for authentication, ensuring that access is secure and limited to read-only operations. The setup involves generating a token in the Canvas settings and configuring it in the environment, making it accessible for API calls. The provided script handles pagination automatically, which is essential for institutions with a large number of courses or assignments.
The output from the API calls is structured in JSON format, making it easy to parse and use in various applications. Users can specify parameters such as enrollment state and order assignments by due date, allowing for tailored queries that suit their specific needs. This skill is ideal for those looking to streamline their workflow when working with Canvas LMS data, whether for reporting, integration, or simply for personal use.
Overall, the Canvas LMS Access skill is a valuable tool for anyone needing to interact with Canvas in a programmatic way, providing essential functionality without the complexity of direct API management.
When to use it
Use this skill when you need to access course and assignment data from Canvas LMS programmatically, especially for reporting or integration purposes.
When not to use it
This skill is not suitable for modifying course or assignment data, as it is strictly read-only.
What you can build with it
Automate Course Reporting
Use the skill to automatically retrieve and report on active courses for administrative purposes.
Integrate with Other Tools
Fetch assignment data to integrate with project management or grading tools, streamlining workflows.
Monitor Assignment Deadlines
List assignments ordered by due date to help students and educators keep track of upcoming deadlines.
How to install Canvas LMS Access
View source1. Install with the skills CLI
npx skills add nousresearch/hermes-agent/canvas --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by nousresearchCanvas LMS — Course & Assignment Access
Read-only access to Canvas LMS for listing courses and assignments.
Scripts
scripts/canvas_api.py— Python CLI for Canvas API calls
Setup
- Log in to your Canvas instance in a browser
- Go to Account → Settings (click your profile icon, then Settings)
- Scroll to Approved Integrations and click + New Access Token
- Name the token (e.g., "Hermes Agent"), set an optional expiry, and click Generate Token
- Copy the token and add to
${HERMES_HOME:-~/.hermes}/.env:
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com
The base URL is whatever appears in your browser when you're logged into Canvas (no trailing slash).
Usage
CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"
# List all active courses
$CANVAS list_courses --enrollment-state active
# List all courses (any state)
$CANVAS list_courses
# List assignments for a specific course
$CANVAS list_assignments 12345
# List assignments ordered by due date
$CANVAS list_assignments 12345 --order-by due_at
Output Format
list_courses returns:
[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]
list_assignments returns:
[{"id": 67890, "name": "Homework 1", "due_at": "2025-02-15T23:59:00Z", "points_possible": 100, "submission_types": ["online_upload"], "html_url": "...", "description": "...", "course_id": 12345}]
Note: Assignment descriptions are truncated to 500 characters. The html_url field links to the full assignment page in Canvas.
API Reference (curl)
# List courses
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"
# List assignments for a course
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses/COURSE_ID/assignments?per_page=10&order_by=due_at"
Canvas uses Link headers for pagination. The Python script handles pagination automatically.
Rules
- This skill is read-only — it only fetches data, never modifies courses or assignments
- On first use, verify auth by running
$CANVAS list_courses— if it fails with 401, guide the user through setup - Canvas rate-limits to ~700 requests per 10 minutes; check
X-Rate-Limit-Remainingheader if hitting limits
Troubleshooting
| Problem | Fix |
|---|---|
| 401 Unauthorized | Token invalid or expired — regenerate in Canvas Settings |
| 403 Forbidden | Token lacks permission for this course |
| Empty course list | Try --enrollment-state active or omit the flag to see all states |
| Wrong institution | Verify CANVAS_BASE_URL matches the URL in your browser |
| Timeout errors | Check network connectivity to your Canvas instance |
Frequently asked questions about Canvas LMS Access
Similar skills
Agent-Browser Core
Efficient browser automation for AI agents.
Setup My IQ
Effortlessly create and update your personal context portfolio.
CRM Maintenance
Automate HubSpot updates from your calendar and emails.
Zoom MCP
Streamline access to Zoom meeting assets and recordings.
Slack Automation
Automate tasks and extract data from Slack easily.
SMB Onboard
Guides small business owners through initial tool setup.
