Model Context Protocol

Run your LMS from Claude, ChatGPT, or Gemini

Cubite ships an MCP server, so an AI assistant can operate your learning site directly. Build a course from a syllabus, enroll a cohort, upload a SCORM package, restyle the homepage, publish a blog post, all from chat. Every connection is scoped to the sites you pick and the permissions you approve, and you can revoke it at any time.

Your server URL

https://cubite.io/api/mcp/mcp

One URL for every site. You choose which of your sites to connect when you sign in.

What the assistant can do

The server exposes 130+ tools, and one connection can cover several of your sites. The assistant only sees the tools your connection has permission for, so a read-only connection genuinely cannot write.

Courses and content

Create courses, write lessons and units, add quizzes, assignments, and graded activities, and upload SCORM or xAPI packages.

Learners

Invite and create users, enroll individuals or a whole cohort, manage groups, and revoke access.

Analytics and insights

Ask for a site overview, per-course engagement, where learners drop off, which exam questions are broken, at-risk learners, grading turnaround, sales revenue, and more.

SEO and Search Console

For sites with Google Search Console connected: performance totals and trend, top queries and pages, and ranked SEO opportunities, all in chat.

Learning paths

Build multi-course journeys, order the steps, set prerequisites, and enroll learners into the path.

Site and marketing

Update settings and theme, rebuild the homepage, and publish pages and blog posts.

Search and research

Search across courses, pages, blog posts, and learning paths, and read any of them in full - this also powers ChatGPT's research modes.

Ready-made workflows

The server also ships six workflows. In Claude they appear as slash commands, so you do not have to know which tools to chain. Each one stops and shows you the plan before it writes anything, and you only see the ones your permissions can finish.

WorkflowWhat it doesNeeds
Write and Publish an SEO PostChecks the existing blog for a near duplicate, drafts the post, links a real course, and stages it hidden for your review.Pages
Build a Course From an OutlineTurns a syllabus, SOP, or transcript into sections, units, and graded checks, then fills in catalog metadata.Courses
Onboard a Learner CohortDedupes a learner list against existing enrollments, picks a group or a bulk enroll, and hands back sign-in links.Enrollments
Assemble a Learning PathOrders existing courses into a guided path with unlock rules and prerequisites.Learning paths
Audit Catalog and EnrollmentsRead-only report: published courses with no lessons, missing outlines, missing SEO, stalled enrollments.Courses (read)
Refresh Homepage and Site SEORebuilds the homepage from courses that actually exist, keeping your real testimonials and stats.Site

Connect your assistant

Claude and ChatGPT sign in through your browser, so there is no key to copy. Command line and server-to-server clients use a scoped API key instead.

Claude

  1. Use the Add to Claude link, or open Settings, then Connectors, then Add custom connector and paste the URL above.
  2. Claude opens a Cubite sign-in. Search and tick the site (or sites) you want this connection to cover.
  3. Approve the permissions. The tools appear in your next chat.

Claude Code

claude mcp add --transport http cubite https://cubite.io/api/mcp/mcp
bash

Run /mcp in Claude Code to complete the browser sign-in on first use.

ChatGPT

  1. Turn on developer mode in your ChatGPT settings.
  2. Add a connector and paste the URL above as the server address.
  3. Sign in when prompted, tick the site (or sites) to connect, and approve the permissions.

Developer mode unlocks the full toolset. ChatGPT's research modes (Deep Research and company knowledge) use the server's built-in search and fetch tools, so your courses, pages, and posts are researchable there too. OpenAI has moved these menus more than once; if the wording does not match, look for connectors or plugins in settings.

Gemini CLI and other HTTP clients

Create a scoped API key in Admin, then your site, then Integrations, and send it as a bearer header. The key is shown once.

{
  "mcpServers": {
    "cubite": {
      "httpUrl": "https://cubite.io/api/mcp/mcp",
      "headers": {
        "Authorization": "Bearer ck_your_key_here"
      }
    }
  }
}
json

Any client that can send Authorization: Bearer ck_... works against the same URL. Cursor, Windsurf, and custom agents all use this shape.

Permissions

Permissions are granted per connection. The OAuth screen lists exactly what is being requested before you approve, and an API key carries only the scopes you gave it. A write permission also grants the matching read (except forms:write, which manages form templates only and never reads learner form responses).

PermissionGrants
pages:read / pages:writeRead, create, and edit pages and blog posts
courses:read / courses:writeRead, create, and edit courses and their content
enrollments:read / enrollments:writeRead and manage course enrollments
users:read / users:writeRead, create, invite, and edit users
members:read / members:writeRead and manage site members and their roles
groups:read / groups:writeRead and manage groups and cohorts
learning-paths:read / learning-paths:writeRead and manage learning paths
question-banks:read / question-banks:writeRead and manage question banks
packages:read / packages:writeRead and upload xAPI and SCORM packages
site:read / site:writeRead and update site settings, theme, and homepage
media:read / media:writeList the site's video library / upload images and files
reports:readAggregate analytics: site overview, per-course engagement, drop-off funnel, exam item analysis and score distribution, cohort comparison, credits, page views (never learner names)
search-console:readGoogle Search Console: performance, top queries and pages, and SEO opportunities
certificates:read / certificates:writeRead issued certificates / issue, revoke, and re-render them (rows name learners)
discussions:read / discussions:writeRead course discussions and the moderation queue / post, moderate, and manage topics
grading:read / grading:writeRead submissions and quiz attempts / grade, assess, and override scores and completions
forms:read / forms:writeRead form responses and templates / create and delete reusable form templates
announcements:read / announcements:writeRead site announcements / create, edit, and publish them for members
payments:readSales revenue totals and the paid-but-not-enrolled reconciliation report
email-templates:writeRewrite transactional email copy (sign-in and password emails excluded)
webhooks:readRead webhook subscriptions and their delivery log

Grant deliberately. Reading users, members, or enrollments exposes learner names and email addresses to the assistant, which means to that assistant vendor. Writing users can create accounts on your site, and writing packages uploads content that runs in a browser on your domain. If you only want help writing content, grant pages and courses and nothing else.

You do not have to take everything an app asks for. The sign-in screen lists each permission as its own checkbox, ticked to start, and you can untick any of them before approving. The connection then gets only what you left ticked. If an app does not ask for anything specific, we preselect a read-only set (view site settings, pages, courses, and aggregate analytics) so it can look but not change.

Security and data handling

  • One site per connection. The site is fixed at sign-in and resolved from your credential on every request. An assistant cannot reach another tenant.
  • Short-lived tokens. An OAuth access token lasts one hour. Refresh tokens rotate on use, and replaying an old one revokes the whole connection.
  • Nothing stored in the clear. Tokens and API keys are stored only as hashes, so a database read cannot recover a working credential.
  • Writes are logged. Every write through the API is recorded against the credential that made it.
  • Your assistant sees what you grant. Data returned by a tool is processed by whichever assistant you connected, under that vendor's terms. Cubite does not send your data to any assistant on its own.
  • Revoke at any time. Open Admin, then your site, then Integrations, and revoke the connection or key. Access stops immediately.

See our Privacy Policy, Terms, and Security Policy.

Questions

What is MCP?

The Model Context Protocol is an open standard for connecting AI assistants to external systems. An MCP server exposes a set of tools an assistant can call. Cubite runs one, so an assistant can operate your learning site directly instead of you clicking through the admin.

Which assistants work with Cubite?

Anything that speaks MCP over HTTP. That includes Claude (web, desktop, and Claude Code), ChatGPT in developer mode, Gemini CLI, Cursor, and custom agents built on the Anthropic or OpenAI APIs.

Can the assistant see other tenants' data?

No. A connection is bound to exactly the sites you tick on the sign-in screen - one, or several of your own. The server validates every request against that approved set, so an assistant can only ever switch between sites you explicitly granted, never reach anyone else's.

Do I need to paste an API key into Claude or ChatGPT?

No. Those clients use OAuth: they open a Cubite sign-in in your browser, you pick which of your sites to connect (one, or several) and approve the permissions, and no secret is ever copied or stored by you. API keys exist for command-line and server-to-server clients that cannot open a browser.

How do I disconnect?

Open Admin, then any of the connected sites, then Integrations. The connection appears on every site it covers, and disconnecting it there immediately invalidates its access to all of them. Removing the connector inside Claude or ChatGPT stops that client from calling Cubite, but revoking in Cubite is what actually kills the credential.

Does this cost extra?

No. The MCP server is included with your Cubite site. You bring your own assistant subscription.

Support

Something not working, or a question about connecting? Email hello@cubite.io. We answer within two business days.

To report a security vulnerability, email security@cubite.io instead, and see our Security Policy for what is in scope and our safe-harbour commitment.

To cut off a connection right now, you do not need us: open Admin, then your site, then Integrations, and disconnect it there.

No Cubite site yet?

Create one, then connect it to your assistant and build your first course by describing it in chat.

Support

How can we help?

Send us a message and we'll get back to you shortly.

We typically respond within 24 hours

MCP Server for LMS: Connect Cubite to Claude, ChatGPT, or Gemini | Cubite