Integration Guide

Getting Started with MCP

Connect your AI assistant to your LMS and start learning without leaving your workflow. The entire setup takes less than 2 minutes.

2 min setup
No plugins required
Enterprise security

Quick Start

Your MCP endpoint
https://<your-org>.yourlms.com/api/mcp

Replace <your-org> with your organization's subdomain — the same one you use to log into the LMS web app.

Connect Your AI Client

Choose your AI tool and follow the step-by-step instructions

Claude Code CLI

OAuth 2.1

A browser window opens. Sign in with your LMS email and password. Once you approve, you're connected.

1
Add the MCP server
claude mcp add --transport http lms https://<your-org>.yourlms.com/api/mcp
2
Authenticate
/mcp auth
Pro Tip

Claude Code handles OAuth automatically — your token refreshes every hour with no action needed.

Claude Desktop

Bearer Token

Open Claude Desktop settings and add the configuration above to your MCP servers.

1
Generate an MCP access token from your LMS account settings
2
Add to your MCP server configuration
{ "mcpServers": { "lms": { "url": "https://<your-org>.yourlms.com/api/mcp", "headers": { "Authorization": "Bearer mcp_live_<your-token>" } } } }
3
Restart Claude Desktop
Pro Tip

Static Bearer tokens don't expire unless you revoke them — great for set-and-forget setups.

Cursor

Bearer Token

Cursor connects via the same Bearer token mechanism as Claude Desktop.

1
Generate an MCP access token from your LMS account settings
2
Open Cursor Settings → MCP Servers → Add new
3
Set the URL
https://<your-org>.yourlms.com/api/mcp
4
Add the authorization header
Authorization: Bearer mcp_live_<your-token>
Pro Tip

After adding the server, verify the connection by asking Cursor to browse your courses.

What You Can Do

10 tools covering the full learning lifecycle — just ask naturally

Browse Courses

See all available courses with enrollment status and progress

Try: "What courses are available?"

Manage Enrollments

Enroll in courses and check your active enrollments

Try: "Enroll me in the React course"

Read Lessons

Full lesson content rendered as clean, readable markdown

Try: "Show me lesson 3 of Advanced TypeScript"

Take Quizzes

Interactive Q&A with per-question feedback and scoring

Try: "Give me the quiz for this lesson"

Track Progress

Completion percentage, milestones, and next steps

Try: "How am I doing in the React course?"

Complete & Advance

Mark lessons done, unlock modules, celebrate milestones

Try: "Mark this lesson as complete"

Example Conversation

A typical learning session — from browsing courses to completing a quiz

claude — ~/projects
> What courses are available?
Available Courses (3)
React Fundamentals — Beginner · 12 lessons · Not enrolled
Advanced TypeScript — Intermediate · 8 lessons · In Progress (37%)
Next.js Deep Dive — Advanced · 15 lessons · Not enrolled
> Continue where I left off in Advanced TypeScript
Fetching progress... Starting next incomplete lesson.
Resuming Module 2, Lesson 3 — Conditional Types
TypeScript's conditional types let you express non-uniform type mappings...
> Got it. Any quiz for this lesson?
Question 1 of 3
What is the purpose of TypeScript's infer keyword?
A) Declare a variable type
B) Extract a type within a conditional type
C) Create a new interface
D) Import a type from another module
> B
Answer recorded. Moving to question 2...
> Submit my answers
Quiz Results — Score: 3/3 (100%)
✓ Q1: Correct
✓ Q2: Correct
✓ Q3: Correct
> Mark it complete
Lesson marked as complete.
████████████████████50% (4/8 lessons)
✓ Lesson completed
🎯 Module 2 completed!
>

Tools Reference

For power users — all 10 tools available through the MCP server

ToolDescriptionParameters
browse_coursesList all courses with enrollment statusNone
get_course_detailsFull course curriculum with modules and lessonsslug
get_my_enrollmentsYour enrolled courses with progressNone
enroll_in_courseEnroll in a coursecourseId
get_course_progressDetailed progress for a specific coursecourseId
start_lessonMark a lesson as startedcourseId, lessonId
get_lesson_contentRead the full lesson contentcourseSlug, lessonId
complete_lessonMark a lesson as completecourseId, lessonId
get_quizGet quiz questions (one at a time)courseSlug, lessonId, questionIndex?
submit_quiz_answerSubmit all quiz answers and get scoredcourseSlug, lessonId, answers

Typical Tool Flow

browse_coursesget_course_detailsenroll_in_coursestart_lessonget_lesson_contentget_quizsubmit_quiz_answercomplete_lessonget_course_progress

Authentication & Security

Enterprise-grade security with modern standards

How Tokens Work

  • Claude Code CLI uses OAuth 2.1 with PKCE — the /mcp auth command handles everything. Token expires after 1 hour and auto-refreshes.
  • Claude Desktop & Cursor use static Bearer tokens generated from your account settings. These don't expire unless you revoke them.
  • To disconnect, revoke the token from your LMS account settings. Access is immediately revoked.

Token Security

  • Raw tokens are never stored on the server — only SHA-256 hashes
  • Each token is scoped to your user account and organization
  • Tokens can be revoked at any time from account settings
  • OAuth tokens auto-expire after 1 hour for maximum security

Troubleshooting

Common issues and how to fix them

Tenant not found

Wrong URL — your organization's subdomain is missing or incorrect.

Fix

Verify the URL is https://<your-org>.yourlms.com/api/mcp — use the same subdomain you log into the web app with.

Unauthorized (401)

Token is expired, revoked, or incorrectly configured.

Fix

Claude Code: Run /mcp auth again. Desktop/Cursor: Check your token in settings and generate a new one if needed.

Course not found / Lesson not found

Using an incorrect slug or ID.

Fix

Use browse_courses first to get the correct slugs and IDs, then pass those to other tools.

Tools not showing up

MCP server isn't connected properly.

Fix

Claude Code: Run /mcp to check status. Desktop: Check Settings → MCP Servers. Cursor: Verify MCP Servers in settings.

Privacy & Data Access

  • The MCP server only exposes courses and data from your organization — no cross-organization data access
  • All actions are performed as your user account — the AI assistant has exactly the same permissions you do
  • Your AI client never sees other users' progress or enrollment data
  • Conversations with your AI assistant are governed by that AI provider's privacy policy, not the LMS

Frequently Asked Questions

Do I need to install any plugins or extensions?

No. MCP is a protocol-level integration — you just add the server URL to your AI client's configuration. No plugins, no browser extensions, no package installs.

Which AI clients are supported?

Any client that supports the MCP Streamable HTTP transport. We've tested with Claude Code CLI, Claude Desktop, and Cursor. More clients are adding MCP support regularly.

Is my data secure?

Yes. Claude Code uses OAuth 2.1 with PKCE (the modern standard). Desktop clients use Bearer tokens. Raw tokens are never stored on the server — only SHA-256 hashes. All data is scoped to your user and tenant.

Can other users see my progress?

No. The MCP server only returns data for the authenticated user. Your progress, enrollments, and quiz results are private to your account.

What happens to my quiz answers?

Quiz answers are submitted and scored server-side, just like taking a quiz in the web app. Your scores are recorded and count toward your course progress and completion.

Can I use MCP on multiple devices?

Yes. Generate separate tokens for each device from your account settings. Each token works independently and can be revoked individually.

Need Help Getting Started?

Our team is here to help you connect your AI assistant. Whether you have questions about setup, authentication, or using the tools — we've got you covered.

Quick Response

Usually within 2 hours

Live Walkthroughs

Screen share setup sessions

Custom Setup Help

Enterprise onboarding available

Ready to Learn in Your IDE?

Start your free trial and connect your AI assistant in under 2 minutes. MCP integration is included in every plan.