Manage Canvas courses in plain English
A 4-month journey from "I hate clicking through Canvas" to "Holy sh*t, Claude just wrote 3,000 lines of educational AI. Task: A 4-month journey from "I hate clicking through Canvas" to "Holy sh*t, Claude just wrote 3,000 lines of educational AI Picture this: It's 11:47 PM on a Tuesday. I'm staring at my Canvas dashboard, clicking through the same menus I've clicked through a thousand times before. Assignment submissions here, grade distributions there, trying to figure out which of my students might be struggling and need extra support. Sound familiar? Thanks for reading ChatWithGPT for learning! Subscribe for free to receive new posts and support my work. Here's what hit me that night: Canvas is brilliant, but it wasn't built for the way educators actually think. I don't want to click through seventeen screens to answer "Which students haven't engaged with discussions this week?" I want to ask that question directly and get an answer. Like, you know, having a conversation with someone who actually understands my courses. The wild part? I'm not a developer. I'm an educator who got curious about whether Claude Code could build something that actually made sense. Four months later, Claude Code is literally listed as a contributor on my GitHub project. Not as an assistant. As a *contributor*. Let me tell you how we got here. The "Wait, What?" Moment: When AI Development Actually Makes Sense Here's the thing about traditional software development—it's designed for developers, not educators. You want a simple tool to analyze discussion participation? Cool, that'll be 6 months of learning React, Node.js, database design, API development, authentication, deployment, and maintenance. No thanks! Claude Code flipped this entire model on its head by helping me build a Canvas integration tool based on a protocol called the Model Context Protocol (MCP). Instead of building apps, you build "tools" that Claude (and many other chat clients) can use directly. Think of it like this: Instead of teaching yourself Spanish to order food in Mexico, you bring along a translator who already speaks both languages fluently. Here's what blew my mind: - Natural Language Interface: I say "Show me grade distributions for my course" → Claude figures out the API calls, builds the tool and executes the query - No Frontend/Backend Nonsense: Write focused tools, Claude handles the interface - Local and Secure: Everything runs on your machine, no sketchy cloud services. More info on security/privacy features later. - Start Small, Dream Big: Begin with "list my courses" and evolve to advanced analytics The moment I realized this was possible, I knew we were in uncharted territory. Not "AI helps developers code faster" territory. More like "AI becomes your co-developer" territory. The Journey: From "Can This Work?" to "Holy Crap, It Actually Works" Phase 1: The Proof of Concept (February 2025) February 27th, 2025. First commit. I literally just wanted to know: "Can I make Claude talk to Canvas?" The answer? A resounding "yes" wrapped in 200 lines of Python that could list my courses. But here's what I learned immediately: When you're building with AI, you think differently about architecture from day one. Not because you're smarter, but because Claude thinks about edge cases and security patterns that you might skip when you're just trying to make something work. Key decisions that shaped everything: - Security obsession: API tokens in environment variables, never in code (Claude insisted) - Type safety everywhere: Even for simple functions (again, Claude's influence) - FastMCP foundation: Chose the most robust framework, not the quickest (guess who suggested that) Phase 2: The "Oh Shit, This Is Real" Phase (March-April 2025) March hit different. What started as "list my courses" became assignment management, submission tracking, peer review workflows, discussion forum integration. The codebase exploded to 800+ lines. Plot twist: mgckind submitted pull requests adding group management features. First external contributor! Someone else (wink, wink He’s a colleague, but I swear I did not tell him to contribute) saw what we were building and wanted to contribute. That's when you know you're onto something. But here's the real kicker—Canvas's API is *complex*. Want to know which students haven't submitted assignments? That's not one API call. That's like 7 API calls, with pagination, error handling, and data normalization. Claude Code handled all of that complexity while I focused on "what do educators actually need?" Phase 3: The Architecture Revolution (June 2025); tools: Claude Code. Human role: The original post does not say how a person stayed involved.; limitations: Requires Canvas API access and local execution of Python/MCP tools. Security relies on environment variables for tokens, but the source admits privacy features were added late. Integration complexity is high due to Canvas's multi-call API structure. Human review is critical for FERPA compliance and data anonymization, which are not automatically guaranteed by the AI..
Tools
Published on Agent Work Atlas:
Overview
A 4-month journey from "I hate clicking through Canvas" to "Holy sh*t, Claude just wrote 3,000 lines of educational AI
Workflow
A 4-month journey from "I hate clicking through Canvas" to "Holy sh*t, Claude just wrote 3,000 lines of educational AI Picture this: It's 11:47 PM on a Tuesday. I'm staring at my Canvas dashboard, clicking through the same menus I've clicked through a thousand times before. Assignment submissions here, grade distributions there, trying to figure out which of my students might be struggling and need extra support. Sound familiar? Thanks for reading ChatWithGPT for learning! Subscribe for free to receive new posts and support my work. Here's what hit me that night: Canvas is brilliant, but it wasn't built for the way educators actually think. I don't want to click through seventeen screens to answer "Which students haven't engaged with discussions this week?" I want to ask that question directly and get an answer. Like, you know, having a conversation with someone who actually understands my courses. The wild part? I'm not a developer. I'm an educator who got curious about whether Claude Code could build something that actually made sense. Four months later, Claude Code is literally listed as a contributor on my GitHub project. Not as an assistant. As a *contributor*. Let me tell you how we got here. The "Wait, What?" Moment: When AI Development Actually Makes Sense Here's the thing about traditional software development—it's designed for developers, not educators. You want a simple tool to analyze discussion participation? Cool, that'll be 6 months of learning React, Node.js, database design, API development, authentication, deployment, and maintenance. No thanks! Claude Code flipped this entire model on its head by helping me build a Canvas integration tool based on a protocol called the Model Context Protocol (MCP). Instead of building apps, you build "tools" that Claude (and many other chat clients) can use directly. Think of it like this: Instead of teaching yourself Spanish to order food in Mexico, you bring along a translator who already speaks both languages fluently. Here's what blew my mind: - Natural Language Interface: I say "Show me grade distributions for my course" → Claude figures out the API calls, builds the tool and executes the query - No Frontend/Backend Nonsense: Write focused tools, Claude handles the interface - Local and Secure: Everything runs on your machine, no sketchy cloud services. More info on security/privacy features later. - Start Small, Dream Big: Begin with "list my courses" and evolve to advanced analytics The moment I realized this was possible, I knew we were in uncharted territory. Not "AI helps developers code faster" territory. More like "AI becomes your co-developer" territory. The Journey: From "Can This Work?" to "Holy Crap, It Actually Works" Phase 1: The Proof of Concept (February 2025) February 27th, 2025. First commit. I literally just wanted to know: "Can I make Claude talk to Canvas?" The answer? A resounding "yes" wrapped in 200 lines of Python that could list my courses. But here's what I learned immediately: When you're building with AI, you think differently about architecture from day one. Not because you're smarter, but because Claude thinks about edge cases and security patterns that you might skip when you're just trying to make something work. Key decisions that shaped everything: - Security obsession: API tokens in environment variables, never in code (Claude insisted) - Type safety everywhere: Even for simple functions (again, Claude's influence) - FastMCP foundation: Chose the most robust framework, not the quickest (guess who suggested that) Phase 2: The "Oh Shit, This Is Real" Phase (March-April 2025) March hit different. What started as "list my courses" became assignment management, submission tracking, peer review workflows, discussion forum integration. The codebase exploded to 800+ lines. Plot twist: mgckind submitted pull requests adding group management features. First external contributor! Someone else (wink, wink He’s a colleague, but I swear I did not tell him to contribute) saw what we were building and wanted to contribute. That's when you know you're onto something. But here's the real kicker—Canvas's API is *complex*. Want to know which students haven't submitted assignments? That's not one API call. That's like 7 API calls, with pagination, error handling, and data normalization. Claude Code handled all of that complexity while I focused on "what do educators actually need?" Phase 3: The Architecture Revolution (June 2025)
Reported result
The project reached 3,000 lines of code with Claude listed as a GitHub contributor. The author reports reducing weekly administrative checks from 45 minutes to 2 minutes. No independent metrics or failure rates are provided; success is based on the author's subjective experience of improved efficiency and feature adoption.
Human role
The original post does not say how a person stayed involved.
Limitations
Requires Canvas API access and local execution of Python/MCP tools. Security relies on environment variables for tokens, but the source admits privacy features were added late. Integration complexity is high due to Canvas's multi-call API structure. Human review is critical for FERPA compliance and data anonymization, which are not automatically guaranteed by the AI.
Try it
Act as an educator building a Canvas LMS assistant using Claude Code and MCP. 1. Define three high-value queries: [replaceable: e.g., 'list unsubmitted assignments', 'show discussion participation', 'export gradebook']. 2. Instruct Claude Code to scaffold a Python MCP server using FastMCP, ensuring API tokens are stored in environment variables. 3. Implement one tool first: 'list my courses'. 4. Run a dry test locally with a sandbox course. 5. Verify output format and security (no PII in logs). 6. Only after human confirmation of the first tool's accuracy, ask Claude to expand to [replaceable: next query]. 7. Document each step for non-technical users. Do not deploy to production or share student data until privacy filters are manually verified.
Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.