Learning MCP Suite
Provides tools for reading Moodle course materials, deadlines, grades, feedback and forum discussions, and for searching Moodle text for attendance-code evidence.
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., "@Learning MCP Suitewhat assignments are due this week across Moodle and OnTrack?"
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.
Learning MCP Suite
A cloud-hosted Model Context Protocol server for Ed Discussion, Moodle and OnTrack. Connect your accounts once, link the platforms each course uses, and access learning materials through an OAuth-capable MCP client.
Runs on Cloudflare Workers with a private Okta / SSO broker. Users do not need to install a local connector.
Features
Ed Discussion — browse lessons, threads and replies.
Moodle — read course materials, deadlines, grades, feedback and forum discussions.
OnTrack — read projects, tasks and progress.
Course connections — discover enrolled courses and confirm associations across any combination of platforms.
Attendance-code search — find candidates in Ed and Moodle text, with source links and dates. Does not submit attendance.
Cloud SSO — reuse platform sessions and optionally retain encrypted credentials for automatic sign-in.
Per-user access — separate accounts, configurable platform origins, scoped OAuth grants and revocation controls.
Learning-platform operations are read-only. Connection and course-association tools manage the user's own suite account.
Related MCP server: canvas-lms
Project status
Both Workers build and have unit and workerd integration tests. Authentication tests use controlled fixtures; live SSO compatibility depends on the configured platforms and identity provider. Treat a real two-user deployment check as part of setup.
Self-hosting
Requirements
Node.js 24 or later and pnpm 10.14.0.
A Cloudflare account with Workers, KV and Durable Objects; Browser Run for cloud SSO.
A supported Okta SSO provider for provider sign-in, or an Ed API token for Ed sign-in.
Access to the platforms you want to enable.
Setup
Install dependencies:
pnpm install --frozen-lockfileConfigure the public Worker in
wrangler.jsoncand the private broker inbroker/wrangler.jsonc. Set the public HTTPS origin, OAuth KV namespace and broker Service Binding. Users supply Moodle and OnTrack base links on their first Connect; Ed uses its standard address automatically. Optional Ed scope can usePLATFORM_CONFIG. See the configuration reference.Create the required resources and set the encryption keys and broker service token. Follow the deployment guide for the exact bindings and secret commands. Keep secrets out of source control.
Validate and deploy the broker first, then the public Worker:
pnpm check pnpm test pnpm test:runtime pnpm deploy:broker pnpm run deploy
Deployment checks bundled client integrity and current upstream commits before publishing. If upstream sources have changed, run pnpm upstreams sync, review the changes and repeat validation.
Set SSO_PROVIDERS on both Workers to the supported provider entries described in the configuration reference. Provider sign-in verifies an Okta session before creating the suite account; learning platforms are connected afterwards. Existing platform-based accounts remain accessible through their original sign-in entry.
The checked-in hostnames and resource IDs are placeholders. Live platform SSO compatibility must be verified for your deployment.
For Cloudflare's official deployment button and the current two-Worker setup requirements, see Deploy to Cloudflare.
Usage
Use any client that supports remote MCP over Streamable HTTP and this service's OAuth authorization flow, including PKCE S256 and resource indicators. Client brand is not restricted; availability depends on the client's own MCP support. Authorization pages display the registered client name.
Use your deployed server's MCP endpoint:
https://YOUR_SUITE_HOST/mcpSee client setup for ChatGPT plugin setup and OAuth discovery details.
Connect an OAuth-capable MCP client. Sign in with your supported SSO provider base link, username, password and optional TOTP, or with an Ed API token. Use the same provider account or Ed account for future sign-ins. Existing platform-based accounts can use their original sign-in entry.
Read and accept the data handling notice before entering credentials, then approve the client's requested access.
Open
https://YOUR_SUITE_HOST/landing, or ask the client to connect a platform usingstart_connection.Connect only the platforms you need; Moodle alone is supported. Ed uses an API token; Moodle and OnTrack use their own saved base links with SSO or an existing platform session. Enter the base link on first Connect; later sign-in and renewal reuse it. Additional platforms can be connected to the same account later. Moodle and OnTrack can reuse your saved SSO when available, with your approval. Enter credentials on the connection page.
Discover your enrolled courses and confirm which platform courses belong together. This works through MCP tools or the connection page.
Ask about course materials, discussions, deadlines, grades, tasks or attendance-code evidence.
For example:
“Show my connected courses and upcoming Moodle deadlines.”
“Find the Ed discussion about this week's assignment.”
“Show my OnTrack tasks and their current status.”
“Look for an attendance code in today's course announcements and include the sources.”
Users can remove course associations, disconnect platforms, forget saved sign-in credentials and revoke client access from the connection page.
Available tools
Category | Tools |
Account |
|
Courses |
|
Ed |
|
Moodle |
|
OnTrack |
|
Attendance |
|
Diagnostics |
|
OAuth scopes are learning:read, learning:bindings and offline_access. Platform reads check enrollment and object ownership; course associations require user confirmation.
Authentication and data handling
Suite sign-in establishes your identity. Moodle and OnTrack also need their own platform sessions; signing in to the suite does not automatically grant access to them.
The broker renews platform sessions over HTTP before using the cloud browser: Moodle session touch and cookie rotation, and OnTrack refresh-cookie exchange with access-token expiry checks. With explicit opt-in, it can store an encrypted password and optional TOTP secret and generate fresh verification codes during sign-in. Push approvals, passkeys, device verification or changed provider policies may require user interaction. One-time MFA codes are not retained.
Credentials and platform sessions are encrypted in per-user Durable Object storage; OAuth records use KV. An operator holding the encryption keys can access stored credentials. Forget saved sign-in removes the saved password, TOTP secret and shared SSO cookies while retaining platform sessions, including OnTrack refresh cookies. Disconnect a platform to remove its session and renewal material. Disconnecting both broker platforms also removes the shared sign-in.
The service and the infrastructure providers used by its operator process credentials and course data, and requested content is sent to the authorized MCP client. Users see a versioned notice before connecting platforms or granting client access. Users and operators must have the necessary permissions for automated access, credential delegation and content transfer. Accepting the notice does not establish platform approval or waive operator obligations.
This is an independent project. Platform origins are configurable and there are no institution-specific defaults. Attendance search covers Ed and Moodle text; it may miss images, attachments or codes shown only in class.
Development
Command | Purpose |
| Start the local public Worker development server |
| Check TypeScript types |
| Run unit tests |
| Build both Workers and run runtime integration tests |
| Build the public Worker without deploying |
| Build the private broker without deploying |
| Check bundled source integrity and upstream freshness |
| Refresh bundled client sources |
Local development requires the relevant bindings and configuration. Use ignored .dev.vars files for local secrets. See the deployment guide for configuration and end-to-end validation.
For optional grant administration, configure LEARNING_MCP_URL and LEARNING_ADMIN_TOKEN, then use pnpm admin grants ACCOUNT_ID or pnpm admin revoke ACCOUNT_ID GRANT_ID. The administrator API lists and revokes grants; it does not expose credentials.
See architecture and session renewal, troubleshooting, contributing and security reporting.
Acknowledgements
Platform clients are bundled from bunizao's edstem-cli, moodle-cli and ontrack-cli. The public Worker uses them for learning-platform reads; the private broker also uses clients to verify platform sessions. The broker is the only separate service.
Pinned versions, commit hashes and file hashes are recorded in vendor/upstreams.json. Each bundled client retains its upstream MIT license notice under vendor/.
License
The project's original code and documentation are available under the PolyForm Noncommercial License 1.0.0. This is a source-available license that permits noncommercial use, modification and redistribution under its terms. It also expressly permits use by specified organizations, including educational institutions and charities, regardless of funding. Commercial use outside the license's permitted purposes is not authorized.
Third-party clients and dependencies retain their own licenses. The bundled bunizao clients remain MIT-licensed; see NOTICE and the license files in vendor/.
This server cannot be deployed
Maintenance
Related MCP Connectors
Authenticated, user-scoped MCP connectors for 30+ business systems.
Your OpenWork org's skills, plugins, workflows, and connections through one OAuth MCP URL.
MCP Hub: AI service discovery, per-user OAuth, and multi-service workflow orchestration
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server that enables AI agents to authenticate with and interact with Open eClass platform instances, supporting UoA's SSO authentication system for retrieving course information and performing basic platform operations.48-
- AlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS with automatic OAuth authentication. Enables interaction with courses, assignments, grades, modules, discussions, quizzes, files, calendar, messaging, and more without manual API token management.243 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables querying and interacting with Ed Discussion platform courses, lessons, threads, activity, quizzes, and lesson progress through MCP tools.43 npmApache 2.0
- FlicenseAqualityCmaintenanceEnables MCP-compatible clients to read courses, assignments, announcements, files, and grades from a Canvas LMS instance.10-