Skip to main content
Glama

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

  1. Clone this repository:

git clone https://github.com/fabienbutz/mcp-server-learningsuite.git
cd mcp-server-learningsuite
  1. Install dependencies:

npm install
  1. Build the server:

npm run build

Configuration

Environment Variables

Create a .env file or set the environment variable:

LEARNINGSUITE_API_KEY=your_api_key_here

You 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 options

  • learningsuite_create_member - Create a new member

  • learningsuite_get_member - Get member by ID

  • learningsuite_get_member_by_email - Get member by email

  • learningsuite_update_member - Update member information

  • learningsuite_delete_member - Delete a member

Member Courses

  • learningsuite_get_member_courses - Get courses for a member

  • learningsuite_add_member_to_courses - Enroll member in courses

  • learningsuite_remove_member_from_courses - Remove member from courses

  • learningsuite_get_member_course_info - Get member's course progress

Member Bundles

  • learningsuite_get_member_bundles - Get member's bundles

  • learningsuite_add_member_to_bundles - Add member to bundles

  • learningsuite_remove_member_from_bundles - Remove member from bundles

Team Members

  • learningsuite_list_team_members - List admin users

  • learningsuite_get_team_member - Get team member by ID

  • learningsuite_get_team_member_by_email - Get team member by email

Groups

  • learningsuite_list_groups - List all groups

  • learningsuite_create_group - Create a new group

  • learningsuite_find_groups_by_name - Search groups by name

  • learningsuite_delete_group - Delete a group

  • learningsuite_get_group_courses - Get group's courses

  • learningsuite_add_courses_to_group - Add courses to group

  • learningsuite_remove_courses_from_group - Remove courses from group

  • learningsuite_add_bundles_to_group - Add bundles to group

  • learningsuite_add_members_to_groups - Batch add members to groups

  • learningsuite_remove_members_from_groups - Batch remove members from groups

Courses

  • learningsuite_list_published_courses - List all published courses

  • learningsuite_get_course_modules - Get course modules

  • learningsuite_get_course_modules_for_member - Get modules with member visibility

  • learningsuite_get_course_members - Get course enrollments

  • learningsuite_get_course_access_requests - Get pending access requests

  • learningsuite_get_course_submissions - Get course submissions

  • learningsuite_create_lesson - Create a new lesson

Modules & Lessons

  • learningsuite_get_module_sections - Get module sections

  • learningsuite_get_module_lessons - Get module lessons

  • learningsuite_create_module_unlock_override - Override module unlock timing

Bundles

  • learningsuite_list_bundles - List all bundles

  • learningsuite_get_bundle_members - Get bundle members

Hubs

  • learningsuite_list_hubs - List all published hubs

  • learningsuite_create_hub - Create hub from template

  • learningsuite_list_hub_templates - List available templates

  • learningsuite_get_hub_template_variables - Get template variables

  • learningsuite_add_hub_accesses - Grant hub access

  • learningsuite_remove_hub_accesses - Revoke hub access

Community

  • learningsuite_list_community_areas - List community areas

  • learningsuite_list_community_forums - List forums

  • learningsuite_list_community_posts - List posts

  • learningsuite_comment_on_post - Comment on a post

  • learningsuite_list_community_badges - List badges

  • learningsuite_assign_badges_to_user - Assign badges

  • learningsuite_remove_badges_from_user - Remove badges

Popups

  • learningsuite_list_popups - List all popups

  • learningsuite_get_popup - Get popup by ID

  • learningsuite_trigger_popup - Trigger popup for member

  • learningsuite_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 subscriptions

  • learningsuite_create_webhook_subscription - Create subscription

  • learningsuite_get_webhook_subscription - Get subscription by ID

  • learningsuite_update_webhook_subscription - Update subscription

  • learningsuite_delete_webhook_subscription - Delete subscription

  • learningsuite_get_webhook_sample_data - Get sample webhook payload

Development

Watch mode for development:

npm run dev

Build:

npm run build

API 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 tools
learningsuite_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

    C2.7/5.0

    Scored across 64 tools

    Disambiguation4/5

    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.

    Naming Consistency4/5

    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.

    Tool Count1/5

    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.

    Completeness2/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers