Install
$ agentstack add skill-vishalsachdev-canvas-mcp-canvas-accessibility-auditor ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Canvas Accessibility Auditor
Full accessibility audit cycle for Learning Designers: scan course content, generate prioritized report, guide remediation of fixable issues, re-scan to verify fixes, produce compliance summary.
Prerequisites
- Canvas MCP server must be running and connected.
- Authenticated user must have instructor, TA, or designer role in the target course.
- For UFIXIT integration: the course must have a UFIXIT report page (generated by your institution's accessibility tool).
Steps
1. Identify Target Course
Ask the user which course to audit. Accept a course code, Canvas ID, or course name.
If not specified, prompt:
> Which course would you like to audit for accessibility?
2. Scan Course Content
Run two scans in parallel if possible:
Scan A -- Direct content scan:
scan_course_content_accessibility(course_identifier, "pages,assignments")
This checks all page and assignment HTML for:
- Images missing alt text (WCAG 1.1.1, Level A)
- Empty headings (WCAG 2.4.6, Level AA)
- Tables missing headers (WCAG 1.3.1, Level A)
- Non-descriptive link text like "click here" (WCAG 2.4.4, Level A)
Scan B -- UFIXIT report (if available):
fetch_ufixit_report(course_identifier)
If the UFIXIT page exists, parse it:
parse_ufixit_violations(report_json)
3. Generate Prioritized Report
Combine results from both scans. Call format_accessibility_summary if using UFIXIT data.
Present issues sorted by priority:
## Accessibility Audit: [Course Name]
### Summary
- Content scanned: 20 pages, 15 assignments
- Total issues: 12
- Auto-fixable: 8 | Manual review needed: 4
### Level A Violations (must fix)
1. **Missing alt text** -- 5 images across 3 pages
- Page "Week 1 Overview": 2 images
- Page "Lab Instructions": 2 images
- Assignment "Final Project": 1 image
2. **Tables missing headers** -- 2 tables
- Page "Grade Scale": 1 table
- Page "Schedule": 1 table
3. **Non-descriptive links** -- 3 instances of "click here"
- Page "Resources": 2 links
- Page "Week 3 Overview": 1 link
### Level AA Violations (should fix)
4. **Empty headings** -- 2 empty heading elements
- Page "Week 5 Notes": 1 empty h3
- Page "Midterm Review": 1 empty h2
### Manual Review Required
- Color contrast: Cannot be checked automatically (requires visual inspection)
- Video captions: Cannot be verified via API (check in Canvas media player)
- PDF accessibility: Cannot be parsed via API (use Adobe Acrobat checker)
4. Guided Remediation
For each auto-fixable issue, walk the user through the fix:
For missing alt text:
- Call
get_page_content(course_identifier, page_url)to retrieve the HTML - Identify the `` tags without alt attributes
- Ask the user for alt text descriptions (or suggest based on surrounding context)
- Call
edit_page_content(course_identifier, page_url, new_content)with corrected HTML
For non-descriptive links:
- Retrieve the page content
- Show the current link:
click here - Suggest descriptive replacement:
Download the syllabus (PDF) - Apply fix after user approval
For empty headings:
- Retrieve the page content
- Show the empty heading
- Ask: "Remove this heading, or add text to it?"
- Apply the chosen fix
For tables missing headers:
- Retrieve the page content
- Show the table structure
- Ask: "Which row/column should be headers?"
- Convert `
to` elements and apply
Always ask for user confirmation before modifying any page.
5. Re-scan Modified Pages
After remediation, re-run the scan on modified pages only:
scan_course_content_accessibility(course_identifier, "pages")
Report: "Fixed 8/12 issues. 4 remaining require manual review."
6. Generate Compliance Summary
Produce a final summary suitable for stakeholder reporting:
## Accessibility Compliance Summary
**Course:** [Course Name]
**Audit Date:** [date]
**Auditor:** AI-assisted audit via Canvas MCP
### Results
- Total content items scanned: 35
- Automated issues found: 12
- Issues remediated: 8
- Issues requiring manual review: 4
- WCAG Level A compliance: Partial (manual review items remain)
### Remediation Actions Taken
- Added alt text to 5 images
- Fixed 3 non-descriptive links
- Removed 2 empty headings
### Outstanding Items
- Color contrast review needed (pages with colored text)
- Video caption verification (embedded videos)
- PDF accessibility check (uploaded PDFs)
### Recommendation
Course content meets automated WCAG 2.1 Level A criteria after remediation.
Manual review of color contrast and multimedia is recommended before publishing.
MCP Tools Used
| Tool | Purpose | |------|---------| | scan_course_content_accessibility | Scan pages and assignments for WCAG issues | | fetch_ufixit_report | Retrieve institutional UFIXIT report | | parse_ufixit_violations | Extract structured violations from report | | format_accessibility_summary | Format violations into readable report | | get_page_content | Retrieve page HTML for remediation | | edit_page_content | Apply accessibility fixes to pages | | list_courses | Find available courses |
Example
User: "Run accessibility audit for CS 101"
Agent: Scans all content, generates the prioritized report.
User: "Fix the missing alt text issues"
Agent: Retrieves each affected page, asks for alt text descriptions, applies fixes, re-scans.
Limitations
- Cannot check: Color contrast, video captions, PDF accessibility, audio descriptions, keyboard navigation
- These are flagged as "manual review required" in every report
- Remediation is per-page: Each fix requires a full page content read and write cycle
- No undo: Page edits via the API do not create Canvas revision history -- back up pages before bulk fixes
Notes
- Pairs well with
canvas-course-qcfor comprehensive pre-semester review. - Run after major content updates or course imports.
- UFIXIT integration depends on your institution having UDOIT/UFIXIT installed.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: vishalsachdev
- Source: vishalsachdev/canvas-mcp
- License: MIT
- Homepage: http://canvas-mcp.illinihunt.org/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.