LearningSuite MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LearningSuite MCP Server enroll member john@example.com in course 'Python Basics'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LearningSuite MCP Server
A Model Context Protocol (MCP) server that provides tools for interacting with the LearningSuite API. This server enables AI assistants like Claude to manage members, courses, groups, bundles, hubs, community features, and more.
Features
Member Management: Create, update, delete, and query members
Course Management: List courses, manage enrollments, track progress
Group Management: Create groups, manage memberships and course access
Bundle Management: Manage product bundles and member access
Hub Management: Create and manage hubs from templates
Community Features: Manage forums, posts, comments, and badges
Webhooks: Create and manage webhook subscriptions
Push Notifications: Send notifications to users (requires custom app)
Related MCP server: MCP API Server
Prerequisites
Node.js 18 or higher
A LearningSuite account with API access
LearningSuite API key
Installation
Clone this repository:
git clone https://github.com/fabienbutz/mcp-server-learningsuite.git
cd mcp-server-learningsuiteInstall dependencies:
npm installBuild the server:
npm run buildConfiguration
Environment Variables
Create a .env file or set the environment variable:
LEARNINGSUITE_API_KEY=your_api_key_hereYou can get your API key from the LearningSuite Admin Dashboard.
Claude Desktop Configuration
Add the server to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"learningsuite": {
"command": "node",
"args": ["/path/to/mcp-server-learningsuite/dist/index.js"],
"env": {
"LEARNINGSUITE_API_KEY": "your_api_key_here"
}
}
}
}Available Tools
Authentication
learningsuite_check_auth- Verify API key validity
Members
learningsuite_list_members- List all members with filtering optionslearningsuite_create_member- Create a new memberlearningsuite_get_member- Get member by IDlearningsuite_get_member_by_email- Get member by emaillearningsuite_update_member- Update member informationlearningsuite_delete_member- Delete a member
Member Courses
learningsuite_get_member_courses- Get courses for a memberlearningsuite_add_member_to_courses- Enroll member in courseslearningsuite_remove_member_from_courses- Remove member from courseslearningsuite_get_member_course_info- Get member's course progress
Member Bundles
learningsuite_get_member_bundles- Get member's bundleslearningsuite_add_member_to_bundles- Add member to bundleslearningsuite_remove_member_from_bundles- Remove member from bundles
Team Members
learningsuite_list_team_members- List admin userslearningsuite_get_team_member- Get team member by IDlearningsuite_get_team_member_by_email- Get team member by email
Groups
learningsuite_list_groups- List all groupslearningsuite_create_group- Create a new grouplearningsuite_find_groups_by_name- Search groups by namelearningsuite_delete_group- Delete a grouplearningsuite_get_group_courses- Get group's courseslearningsuite_add_courses_to_group- Add courses to grouplearningsuite_remove_courses_from_group- Remove courses from grouplearningsuite_add_bundles_to_group- Add bundles to grouplearningsuite_add_members_to_groups- Batch add members to groupslearningsuite_remove_members_from_groups- Batch remove members from groups
Courses
learningsuite_list_published_courses- List all published courseslearningsuite_get_course_modules- Get course moduleslearningsuite_get_course_modules_for_member- Get modules with member visibilitylearningsuite_get_course_members- Get course enrollmentslearningsuite_get_course_access_requests- Get pending access requestslearningsuite_get_course_submissions- Get course submissionslearningsuite_create_lesson- Create a new lesson
Modules & Lessons
learningsuite_get_module_sections- Get module sectionslearningsuite_get_module_lessons- Get module lessonslearningsuite_create_module_unlock_override- Override module unlock timing
Bundles
learningsuite_list_bundles- List all bundleslearningsuite_get_bundle_members- Get bundle members
Hubs
learningsuite_list_hubs- List all published hubslearningsuite_create_hub- Create hub from templatelearningsuite_list_hub_templates- List available templateslearningsuite_get_hub_template_variables- Get template variableslearningsuite_add_hub_accesses- Grant hub accesslearningsuite_remove_hub_accesses- Revoke hub access
Community
learningsuite_list_community_areas- List community areaslearningsuite_list_community_forums- List forumslearningsuite_list_community_posts- List postslearningsuite_comment_on_post- Comment on a postlearningsuite_list_community_badges- List badgeslearningsuite_assign_badges_to_user- Assign badgeslearningsuite_remove_badges_from_user- Remove badges
Popups
learningsuite_list_popups- List all popupslearningsuite_get_popup- Get popup by IDlearningsuite_trigger_popup- Trigger popup for memberlearningsuite_remove_popup_trigger- Remove popup trigger
Push Notifications
learningsuite_send_push_notifications- Send push notifications
Roles
learningsuite_list_roles- List all roles
Webhooks
learningsuite_list_webhook_subscriptions- List subscriptionslearningsuite_create_webhook_subscription- Create subscriptionlearningsuite_get_webhook_subscription- Get subscription by IDlearningsuite_update_webhook_subscription- Update subscriptionlearningsuite_delete_webhook_subscription- Delete subscriptionlearningsuite_get_webhook_sample_data- Get sample webhook payload
Development
Watch mode for development:
npm run devBuild:
npm run buildAPI Documentation
This server wraps the LearningSuite API v1.16.0. For detailed API documentation, visit the LearningSuite Developer Portal.
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Available Tools
64 toolslearningsuite_add_bundles_to_groupB
Add bundles to a group
Inputs: groupId (required), bundleIds (required).
learningsuite_add_courses_to_groupB
Add courses to a group
Inputs: groupId (required), courseIds (required).
learningsuite_add_hub_accessesA
Add access to a hub for members, groups, or bundles
Inputs: hubId (required), groupIds, bundleIds, memberIds.
learningsuite_add_members_to_groupsA
Add multiple members to multiple groups (batch operation)
Inputs: groupIds (required), memberIds (required).
learningsuite_add_member_to_bundlesB
Add a member to one or more bundles
Inputs: bundles (required), memberId (required), unlimitedAccess, accessUntilOverride, +2 more.
learningsuite_add_member_to_coursesC
Add a member to one or more courses
Inputs: memberId (required), courseIds (required), accessGivenAt, sendLoginLinkInCourseEmail, +1 more.
learningsuite_assign_badges_to_userC
Assign badges to a user
Inputs: userId (required), badgeIds (required).
learningsuite_check_authA
Check if the API key is valid and get authorization info
Inputs: no named parameters.
learningsuite_comment_on_postB
Comment on a community post
Inputs: postId (required), content (required), parentCommentId.
learningsuite_create_groupC
Create a new group
Inputs: name (required), description.
learningsuite_create_hubB
Create a new hub from a template
Inputs: name (required), hubTemplateId (required), variables.
learningsuite_create_lessonB
Create a lesson in a course section
Inputs: name (required), courseId (required), sectionId (required), videoUrl, +5 more.
learningsuite_create_memberB
Create a new member in LearningSuite
Inputs: email (required), lastName (required), firstName (required), city, +8 more.
learningsuite_create_module_unlock_overrideB
Create a module unlock override for a member
Inputs: memberId (required), moduleId (required), unlockAt.
learningsuite_create_webhook_subscriptionB
Create a webhook subscription
Inputs: url (required), events (required), secret.
learningsuite_delete_groupC
Delete a group
Inputs: groupId (required).
learningsuite_delete_memberC
Delete a member
Inputs: memberId (required).
learningsuite_delete_webhook_subscriptionB
Delete a webhook subscription
Inputs: subscriptionId (required).
learningsuite_find_groups_by_nameB
Find groups by name
Inputs: name (required).
learningsuite_get_bundle_membersA
Get members of a bundle with access info
Inputs: bundleId (required), limit, offset.
learningsuite_get_course_access_requestsC
Get access requests for a course
Inputs: courseId (required), limit, offset.
learningsuite_get_course_membersA
Get members for a course with access and optional progress info
Inputs: courseId (required), limit, offset, includeProgress.
learningsuite_get_course_modulesB
Get all modules of a course
Inputs: courseId (required).
learningsuite_get_course_modules_for_memberA
Get all modules of a course with visibility info for a member
Inputs: courseId (required), memberId (required).
learningsuite_get_course_submissionsB
Get all submissions in a course (newest first)
Inputs: courseId (required), limit, offset.
learningsuite_get_group_coursesB
Get all courses of a group
Inputs: groupId (required).
learningsuite_get_hub_template_variablesC
Get variables for a hub template
Inputs: hubTemplateId (required).
learningsuite_get_memberA
Get a member by ID
Inputs: memberId (required), includeGroups.
learningsuite_get_member_bundlesB
Get all bundles of a member with access information
Inputs: memberId (required).
learningsuite_get_member_by_emailB
Get a member by email address
Inputs: email (required), includeGroups.
learningsuite_get_member_course_infoA
Get access and progress info for a member in a specific course
Inputs: courseId (required), memberId (required), dateForAccessCheck.
learningsuite_get_member_coursesA
Get all courses for a member with access and progress info
Inputs: memberId (required), limit, offset, dateForAccessCheck.
learningsuite_get_module_lessonsA
Get all lessons of a module
Inputs: moduleId (required).
learningsuite_get_module_sectionsC
Get all sections of a module
Inputs: moduleId (required).
learningsuite_get_popupA
Get a popup by ID
Inputs: popupId (required).
learningsuite_get_team_memberA
Get a team member by ID
Inputs: userId (required).
learningsuite_get_team_member_by_emailC
Get a team member by email
Inputs: email (required).
learningsuite_get_webhook_sample_dataB
Get sample data for a webhook event type
Inputs: eventType (required).
learningsuite_get_webhook_subscriptionB
Get a webhook subscription by ID
Inputs: subscriptionId (required).
learningsuite_list_bundlesB
Get all bundles
Inputs: no named parameters.
learningsuite_list_community_areasA
Get all community areas
Inputs: no named parameters.
learningsuite_list_community_badgesA
Get all community badges
Inputs: no named parameters.
learningsuite_list_community_forumsC
Get community forums
Inputs: limit, areaId, offset.
learningsuite_list_community_postsC
Get community posts
Inputs: limit, offset, forumId.
learningsuite_list_groupsB
Get all groups
Inputs: limit, offset.
learningsuite_list_hubsA
Get all published hubs
Inputs: no named parameters.
learningsuite_list_hub_templatesA
Get all hub templates
Inputs: no named parameters.
learningsuite_list_membersB
Get all members with optional filtering and pagination
Inputs: limit, offset, includeGroups, days_not_logged_in_gte, +1 more.
learningsuite_list_popupsB
Get all popups
Inputs: limit, offset.
learningsuite_list_published_coursesB
Get all published courses
Inputs: no named parameters.
learningsuite_list_rolesB
Get all roles
Inputs: no named parameters.
learningsuite_list_team_membersA
Get team members (users with admin zone access)
Inputs: limit, offset.
learningsuite_list_webhook_subscriptionsA
Get all webhook subscriptions
Inputs: no named parameters.
learningsuite_remove_badges_from_userB
Remove badges from a user
Inputs: userId (required), badgeIds (required).
learningsuite_remove_courses_from_groupB
Remove courses from a group
Inputs: groupId (required), courseIds (required).
learningsuite_remove_hub_accessesB
Remove access from a hub for members, groups, or bundles
Inputs: hubId (required), groupIds, bundleIds, memberIds.
learningsuite_remove_member_from_bundlesA
Remove a member from one or more bundles
Inputs: memberId (required), bundleIds (required).
learningsuite_remove_member_from_coursesA
Remove a member from one or more courses
Inputs: memberId (required), courseIds (required).
learningsuite_remove_members_from_groupsB
Remove multiple members from multiple groups (batch operation)
Inputs: groupIds (required), memberIds (required).
learningsuite_remove_popup_triggerB
Remove a popup trigger for a member
Inputs: popupId (required), memberId (required).
learningsuite_send_push_notificationsB
Send push notifications to users (requires custom app)
Inputs: linkUrl (required), body, title, userIds, +2 more.
learningsuite_trigger_popupB
Trigger a popup for a member
Inputs: popupId (required), memberId (required).
learningsuite_update_memberC
Update a member's information
Inputs: memberId (required), city, about, email, +6 more.
learningsuite_update_webhook_subscriptionD
Update a webhook subscription
Inputs: subscriptionId (required), url, events, secret, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 64 tools
Most tools target a distinct resource and action, but a few pairs like get_member_courses vs get_member_course_info could be confused until reading descriptions. Overall, the boundaries are clear enough for an agent to select correctly.
Tools consistently use the learningsuite_ verb_noun pattern in snake_case, but there are minor deviations such as 'find_groups_by_name', 'check_auth', 'assign_badges', and 'send_push_notifications' that break the otherwise regular verb vocabulary.
With 64 tools, the server is extremely large for an MCP tool set, far exceeding typical scopes. Even for a comprehensive LMS, this many tools creates overwhelming selection complexity for agents.
Several core lifecycle operations are missing: courses cannot be created, updated, or deleted; lessons have only create and list; groups lack update; bundles lack create/update; popups lack create/update/delete. These gaps will cause agent failures when performing standard administrative tasks.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceA comprehensive educational server demonstrating Model Context Protocol capabilities for tools, resources, and prompts, allowing AI assistants to connect to external data and functionality.7 npm-
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI assistants to make HTTP requests (GET, POST, PUT, DELETE) to external APIs through standardized MCP tools.42MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that provides seamless access to Moodle developer documentation from moodledev.io. It enables AI assistants and other MCP clients to search, browse, and retrieve Moodle development documentation with version-specific support.4MIT
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that standardizes tool discovery, execution, and context management for AI applications.MIT