Ask how to create a course with Claude Code and you’ll hear the same argument twice, with the same two options.
Option one: build your own learning platform. Claude Code really will scaffold it – auth, a database schema with row-level security, Stripe integration, video hosting, a working app – over a weekend, and it feels extraordinary.
Option two: don’t, because the demo is the easy 20%. Webhook signature verification, idempotent payment logic, failed-card handling, GDPR data export, EU VAT, certificate delivery, bandwidth costs, mobile. Teachable makes exactly this case, and its conclusion is to migrate to Teachable.
Both are right about the problem. Both skip the third option, which is that you can keep the agent and stop building the platform.
Try Mini Course Generator free – claude mcp add and publish from the terminal.
Key Takeaways
– The build-vs-buy framing is a false binary. The missing option is connect: point Claude Code at a platform’s MCP server and publish into it, with no application to maintain.
– The maintenance argument against building is correct and worth conceding. Payments, compliance and video are not weekend problems, and they never stop being your problem.
–claude mcp addtakes one command. After that, course creation is a prompt in the same terminal you’re already working in.
– For developers, the compelling case is courses as part of a pipeline – docs change, CI regenerates the training, nobody files a ticket.
– Where you need a graded activity inside an LMS you don’t control, skip the connection entirely:npx skills addproduces a SCORM package with no account required.
What Claude Code Genuinely Does Well Here
Not a strawman. The scaffolding is real and it’s why people go down this road.
Give Claude Code a spec and you get a working Next.js app with authentication, a Postgres schema with row-level security policies, Stripe checkout wired up, video embedding, and typed API endpoints. It’ll write the migrations. It’ll write the tests if you ask. A competent developer gets to a demo in a day or two that would previously have taken a fortnight.
That’s not the trap. The trap is what the demo doesn’t include, and the list is well-documented: webhook signature verification, idempotency on payment events, failed and retried charges, GDPR-compliant export and deletion, EU VAT collection and remittance, certificate generation, video bandwidth at scale, and the mobile experience.
None of those are hard because they’re technically deep. They’re hard because each one is a small, boring, high-consequence surface that has to keep working while you do your actual job. The build-your-own case falls over on month six, not week one.
The Option Both Sides Skip
Here’s what’s missing from both sides of that argument.
Building a platform and abandoning the agent are not the only choices, because the reason you wanted Claude Code in this workflow was never the CRUD app. It was that you can describe a course in a terminal and have it exist. That capability doesn’t require you to own the platform. It requires the platform to expose its operations to an agent.
Which is what MCP is for. The Model Context Protocol lets an assistant act inside an outside system, so Claude Code can create courses, add quizzes, publish and read results in a platform that somebody else keeps compliant.
You keep the part you wanted – describing training and having it appear – and you delete the part you’d have regretted, which is being the person responsible for EU VAT.
Adding the server
One command:
claude mcp add --transport http mcg https://mcp.minicoursegenerator.com/mcp
Then authorize in the browser when prompted. The OAuth flow binds the connection to your account, so Claude Code acts with your permissions and nothing wider.
Confirm it registered:
claude mcp list
After that it’s a prompt, in the same terminal you were already in:
“Read docs/onboarding/ in this repo. Build a course in Mini Course Generator with one lesson per markdown file, in the order they’re numbered. Add a quiz after each lesson testing whether someone could perform the step. Publish it and print the URL.”
The Case That Actually Lands for Developers
Publishing a course from a terminal is a party trick. This is the part that changes a workflow.
Documentation and training drift apart because they’re maintained by different people on different cadences. The docs change when the code changes. The training changes when somebody remembers, which is to say in the quarter after a customer complains.
If the course is generated from the docs by an agent, that gap closes structurally rather than through discipline. A CI step on merge to main:
“Diff docs/ against the last release tag. If any file under docs/onboarding/ changed, update the matching lessons in the Onboarding course and report what changed. Don’t publish – open it for review.”
The don't publish - open it for review clause is the important half. Full automation of published training is a bad idea for the same reason full automation of deploys to production is: the failure mode is silent and the audience is human. Detection and drafting can be automatic. The publish is a person.
This is the same discipline that applies to any post-publish agent work, which we set out in what an agent does after publish.
Build, Buy, or Connect
| Build with Claude Code | Buy a hosted platform | Connect an agent to one | |
|---|---|---|---|
| Time to first course | A weekend | An afternoon | About a minute |
| Payments, VAT, GDPR | Yours forever | Theirs | Theirs |
| Video bandwidth and cost | Yours | Theirs | Theirs |
| Customisation ceiling | None | The vendor’s | The vendor’s, plus API where offered |
| Works from the terminal | Yes | No | Yes |
| Fits in CI | Yes | No | Yes |
| Ongoing maintenance | Substantial and permanent | None | None |
| You own the data | Yes | Export-dependent | Export-dependent |
The row that decides it for most people is the last-but-one. Building is the only column where the cost curve goes up over time, and it’s the column where that cost lands on the person who has other work to do.
Building is genuinely right in one case: your training is so structurally unusual that no platform models it, and the platform is the product rather than a supporting cost. That’s rarer than it feels at 2am on day two, when the scaffold is working and everything seems possible.
Which MCP Servers Are Worth Adding
If you’re already running Claude Code with a handful of servers, the honest guidance is that the education-adjacent ones fall into three groups.
Knowledge sources. Servers that let the agent read a system – documentation platforms, LMS data connectors. Useful as inputs, and they don’t produce anything.
Component generators. Servers that generate a piece of content, typically quiz text or a lesson plan. They stop at text, so you’re back to assembly.
Authoring and publishing. Servers where the agent creates the actual course object and publishes it. This is the smallest group by a wide margin, and it’s the only one that closes the loop.
Most of the education-adjacent servers you’ll come across fall into the first two groups. We keep a running review with the capabilities dated in MCP servers for education and L&D, because in this category a capability list from six months ago is fiction.
When You Don’t Want a Connection at All
Worth flagging, because the connected route isn’t always the right shape.
If your output needs to run inside an LMS you don’t control – a client’s Cornerstone, a partner’s Moodle – a platform connection is the wrong tool. You’d be introducing a vendor to solve a packaging problem.
The lighter path is an Agent Skill:
npx skills add minicoursegenerator/edu-role-play
Claude Code writes the activity and exports a SCORM 1.2 package that reports its score back through cmi.core.score.raw, like every SCORM course since 2004. It runs standalone in a browser or uploads into whatever LMS is on the other side, with no account and no integration. The full comparison is in Skills vs MCP for course creation.
The Short Version
Claude Code will scaffold a learning platform convincingly, and the case against doing it is correct: payments, compliance, video and mobile are permanent obligations, not weekend problems.
But “build it” versus “give up and use a hosted product” is a false choice, because what you wanted from Claude Code was never the CRUD app. It was describing a course in a terminal and having it exist. claude mcp add gets you that in one command, against a platform somebody else keeps compliant.
The version worth building a workflow around is courses in CI – regenerate training when the docs change, open it for review, never publish silently. That closes the docs-training gap structurally instead of through discipline.
And where the output has to run in an LMS you don’t control, skip the connection and ship a SCORM package from a Skill instead. If you want the connected route, the MCP server is one command and the first course takes about as long as reading this paragraph twice.
Frequently Asked Questions
Can Claude Code build an LMS?
Yes, and it’ll scaffold a convincing one quickly – auth, schema, payments, video. The difficulty isn’t the scaffold, it’s the permanent maintenance surface underneath: webhook verification, failed payments, GDPR export, EU VAT, certificates and bandwidth. That work never ends and it lands on you.
How do I add an MCP server to Claude Code?
Use claude mcp add --transport http <name> <url>, then complete the OAuth authorization in the browser when prompted. Confirm with claude mcp list. The connection runs on your own account permissions and can be removed the same way.
Can Claude Code publish a course rather than just write content?
Only if it’s connected to a platform that exposes publishing to an agent. Unconnected, it produces files. Connected over MCP, the same prompt creates the lessons, attaches quizzes, publishes and returns a URL.
Should training generation run in CI?
Generating and drafting, yes – regenerate lessons when the source docs change and open the result for review. Publishing automatically, no. The failure mode of silently updated training is invisible and the audience is human, so keep a person on the publish step.
What are the best MCP servers for Claude Code in education?
Split them into knowledge sources, component generators and authoring-and-publishing servers. The first two are inputs and text; only the third closes the loop into a real course. Check capability dates, because this category changes month to month.
What if the course has to run in a client’s LMS?
Don’t connect a platform for that. Use an Agent Skill – npx skills add minicoursegenerator/edu-role-play – which produces a self-contained SCORM 1.2 package that runs in any LMS that imports SCORM, with no account and no integration on either side.



