waterloo-learn-mcp
This MCP server provides read-only access to your University of Waterloo LEARN account and an optional Google Drive folder. Key capabilities:
List courses: Retrieve enrolled courses with IDs.
View announcements: Read instructor announcements with dates and attachments.
Browse course content: Navigate modules, topics, files, and links as a nested table of contents.
Inspect lecture files: Render PDF or PowerPoint slides as images, specifying pages/slides (e.g.,
"4","2-6").Check grades: View grade items, scores, weights, and feedback.
Manage assignments: See due dates, instructions, attachments, submission status, and feedback.
Track upcoming deadlines: Get calendar events and due dates for assignments, quizzes, exams (configurable look-ahead).
Access course outline: Fetch the full syllabus with grading scheme and schedule.
Search Google Drive: If configured, search for past assessments (quizzes, tests, exams) by keyword.
Inspect Drive files: Render Drive-based PDFs, PowerPoints, Google Docs/Slides as images.
Provides tools for searching and retrieving files from a configured Google Drive folder, including past exams and quizzes, using the Google Drive API.
Allows rendering Google Slides presentation files as page images, so AI models can read their content visually.
Click on "Install 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., "@waterloo-learn-mcpWhat's due this week in my CS 246 course?"
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.
waterloo-learn-mcp
Read-only local MCP server for University of Waterloo LEARN courses, slides, deadlines, grades, assignments, announcements, and course outlines.
It uses STDIO: ChatGPT desktop or Codex starts the Node process locally and talks to it through pipes. There is no public URL, tunnel, open port, MCP OAuth or token, Developer mode, or manually created plugin.
Connect to ChatGPT desktop (Windows)
1. Install the requirements
ChatGPT desktop, signed in
Node.js 20 or newer
Git
Confirm Node and Codex are available in PowerShell:
node --version
codex --version2. Download and set up the server
git clone https://github.com/LargoLardo/waterloo_learn_mcp.git
cd waterloo_learn_mcp
npm run setupA browser opens. Sign in to LEARN with WatIAM, approve Duo, and wait for the
terminal to print Setup complete. Setup installs dependencies, builds the
server, saves the LEARN session to ignored auth.json, and registers the local
MCP in the configuration shared by ChatGPT desktop and Codex.
At the start of every study session: run
npm run loginand complete WatIAM and Duo. Running MCP processes detect the refreshedauth.jsonon the next tool call, so you do not need to restart ChatGPT desktop.
3. Enable and test it in ChatGPT desktop
Fully quit ChatGPT desktop, including its Windows system-tray process, then reopen it.
Start a new chat and type
/mcp. You can also check Settings > MCP servers; some app versions show the list under Plugins.Confirm
waterloo-learn-mcpis present and enabled.Auth unsupportedis normal for a local STDIO server.Ask: “List my Waterloo LEARN courses.”
Do not enable Developer mode or use Plugins > + to create a connection. That flow is for remote HTTPS MCP servers; this server is registered locally.
PDF slides work immediately. PowerPoint files require LibreOffice:
winget install TheDocumentFoundation.LibreOfficeManual registration
If automatic setup reaches the login step but the MCP does not appear, run:
npm install
npx playwright install chromium
npm run build
npm run login
codex mcp add waterloo-learn-mcp -- node C:\absolute\path\to\waterloo_learn_mcp\dist\index.js
codex mcp listThen fully restart ChatGPT desktop once to load the MCP registration. Later
npm run login refreshes the running MCP automatically without another restart.
Related MCP server: Canvas MCP Server
Authentication
There are two separate connections:
ChatGPT → MCP: local STDIO pipes. No OAuth or bearer token is needed, so the UI may report
Auth unsupported.MCP → LEARN: authenticated HTTPS using the WatIAM/Duo browser session in
auth.json.
auth.json is never returned as MCP output. Requested course data is returned
to ChatGPT so it can answer you.
Tools
Tool | Purpose |
| List enrolled courses and IDs |
| Read announcements and attachments |
| Browse modules, topics, files, and links |
| Render selected PDF/PPT/PPTX slides as images |
| Read grades, weights, and feedback |
| Read assignments, submissions, and feedback |
| Read upcoming events and due dates |
| Read the official course outline/syllabus |
| Search an optional configured Drive folder |
| Render an allowed Drive file as page images |
All tools are read-only. Slide tools accept pages such as "4", "2-6", or
"2,4,7-9" and return up to 30 page images per call.
Optional configuration
Copy .env.local.example to .env.local only if you want login autofill,
custom cache paths, or Google Drive search. .env.local is ignored by Git.
For Drive search, enable the Google Drive API and set either
GOOGLE_DRIVE_API_KEY for a public/shared folder or a short-lived
GOOGLE_DRIVE_ACCESS_TOKEN with the drive.readonly scope. Limit searchable
folders with GOOGLE_DRIVE_FOLDER_IDS.
GitHub safety
Never commit auth.json, .env.local, or cache/. They are ignored, but check
before pushing:
git diff --cached
git ls-files auth.json .env.local "cache/**"The second command must print nothing.
Development
npm test
npm run buildDisclaimer
This unofficial project is not affiliated with the University of Waterloo or D2L. Use it only with your account, respect university policies and course copyright, and verify important grades, deadlines, and policies in LEARN.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityBmaintenanceAn MCP server that gives desktop AI apps access to your Waterloo LEARN courses, enabling listing courses, getting announcements, content, grades, and upcoming events through natural language.52
- AlicenseNot gradedqualityDmaintenanceMCP server that provides tools to read UBC Canvas LMS data, including courses, assignments, announcements, submissions, and calendar, for use with Claude Desktop, Claude Code, or n8n AI agents.59MIT
- AlicenseNot gradedqualityDmaintenanceA powerful Model Context Protocol (MCP) server that seamlessly integrates AI assistants with Moodle Learning Management System. Enable your AI assistant to access courses, retrieve educational content, download resources, and search through your learning materials.14MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that connects AI assistants to university D2L Brightspace and Piazza, enabling query of courses, grades, assignments, deadlines, files, and Piazza posts.7MIT
Related MCP Connectors
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LargoLardo/waterloo_learn_MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server