Send us a message and we'll get back to you shortly.
Last month I wrote about why we built an MCP server into Cubite: the argument, the honest competitive map, the security model. This post is the other half: the actual walkthrough. Every screenshot below is from our production environment at cubite.io, taken today, and every command is copy-pasteable.
By the end you will have Claude or ChatGPT connected to your learning site and able to do real work: create a course, publish a post, enroll a cohort, and answer questions like "which of my courses has the worst completion rate?" from live data.
There is exactly one server URL, for every site:
https://cubite.io/api/mcp/mcp
You never tell the assistant which site is yours in a prompt. You pick the site once, on the sign-in screen, and the connection is bound to it from then on. There is no parameter an assistant can pass to reach a different site.
https://cubite.io/api/mcp/mcp and continue.This is the consent screen you will see. Each permission is its own checkbox, ticked to start. Untick anything you do not want to grant; the connection gets only what stays ticked. The screen also names the exact destination the authorization is sent to, because app names are self-reported and unverified; glance at it before you approve:
Try it immediately (this works even under the default read-only grant):
Give me a health check of my courses: enrollments, completion rates, and where learners stall.
If you live in the terminal, one command:
claude mcp add --transport http cubite https://cubite.io/api/mcp/mcp
Then run /mcp inside Claude Code and pick cubite to complete the same browser sign-in. From then on, your terminal sessions can operate the site:
> create a draft blog post announcing our new food safety course,
link the course, and keep it hidden so I can review it
Prefer a key over OAuth (for CI, servers, or a shared machine)? Create a scoped API key in Admin, then your site, then Integrations, and add it as a header instead:
claude mcp add --transport http cubite https://cubite.io/api/mcp/mcp \
--header "Authorization: Bearer ck_..."
https://cubite.io/api/mcp/mcp as the server address.Two ChatGPT-specific notes worth knowing:
search and fetch. Cubite ships both. That means Deep Research and company knowledge can search your site's courses, pages, blog posts, and learning paths and cite them by URL, even though those modes never touch the write tools.The server exposes 59 tools, and the assistant only sees the ones your connection is allowed to use. Some real prompts we use, verbatim:
Build a course from a document.
Here is our onboarding SOP. Turn it into a course called "New Staff Onboarding": H2s become sections, H3s become units, and add a short graded quiz at the end of each section. Keep it out of the catalog until I review it.
The assistant chains course_create, course_set_content, and the question tools, then hides the course from the public catalog. H2/H3 mapping is a server convention, so structure survives.
Enroll a cohort.
Enroll these 12 people in Food Safety Level 2 and give me their sign-in links: [paste list]
One bulk-enroll call. New learners are created on your site and come back with a magic sign-in link you can drop into an email. Existing learners are just enrolled, with one deliberate exception on the links: if an account signs in with a password, or also exists on another Cubite site, no sign-in link is minted for it (a link like that would be an account-takeover vector), and that learner keeps signing in the way they already do.
Publish content.
Write a 900-word post about our new HACCP course for food-truck operators, use our usual tone, link the course, and publish it.
Upload a SCORM or xAPI package.
Here is the URL of our Storyline export: https://... Upload it and add it as the final unit of the Compliance course.
This shipped today and it changes how the connection feels: the assistant can now read your numbers, not just your content. Three report tools back it:
So you can ask:
Give me a health check of my site: how are enrollments trending, which courses complete well, and which have a quiz pass rate under 70%?
or
Who enrolled in the last month but has not started anything? Draft a nudge email for them.
A deliberate privacy split: the aggregate reports sit behind a reports:read permission that never returns a learner's name or email, and it is part of the default read-only grant. The per-learner report requires the members permission (members:read), the same one that already means "may read who my learners are". An assistant you connected read-only can tell you your completion rate; it cannot tell you your learners' emails unless you granted that explicitly.
Here is the overview tool answering for one of my own sites, verbatim from production while writing this post (a site where I park course experiments, so the completion numbers are honestly unflattering):
{
"members": { "total": 13, "byRole": { "STUDENT": 13 } },
"courses": { "total": 363 },
"enrollments": { "total": 16, "last30Days": 0, "activeLearners": 6 },
"completions": { "total": 0, "last30Days": 0, "completionRatePct": 0 },
"certificates": { "total": 0, "last30Days": 0 },
"quizzes": { "submittedAttempts": 0, "averageScorePct": null, "passRatePct": null }
}
And the per-course report on the same site, top row:
{
"name": "AI-Driven LLM Evaluation: Picking the right AI model",
"enrollments": 6,
"completions": 0,
"completionRatePct": 0,
"averageProgressPct": 50.6,
"lastEnrollmentAt": "2026-05-21T17:49:20.057Z"
}
An assistant reading that will tell me the same thing I can see myself: learners get halfway through the flagship course and stall, and nobody has enrolled in 30 days. That is exactly the kind of thing you want surfaced in the same chat where you can then say "draft a re-engagement email".
Everything runs on scoped permissions:
And when you want it gone: Admin, then your site, then Integrations shows every connected assistant with its permissions, who authorized it, and when it was last used. Disconnect kills the credential immediately, no matter what the assistant's own settings say.
Authorization: Bearer ck_... header.httpUrl (not url) in its settings.The server, the OAuth flow, and everything in this post is live today. Next on the list: publishing to the official MCP registry and the assistant directories so connecting is one click from inside Claude and ChatGPT, with no URL to paste at all.
If you hit anything odd, email hello@cubite.io. And if you do not have a site yet, start here: create the site, connect the assistant, and build your first course by describing it.
Looking to learn more about Product and AI, LMS, MCP? These related articles explore complementary topics, techniques, and strategies.
Most AI course generators hand you a draft you still have to host and track somewhere else. Cubite LMS generates the course inside the platform that delivers it, tracks completion with native SCORM and xAPI, and pairs it with an AI tutor trained on the same material.
Compare Moodle hosting options — MoodleCloud, managed, self-hosted, and cloud — with real pricing, installation methods, and a decision framework.