waterloo-learn-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port for the local HTTP server | |
| LEARN_BASE_URL | No | Override the base URL of the LEARN instance. Default is https://learn.uwaterloo.ca | |
| LEARN_AUTH_FILE | No | Path to the auth file (default auth.json) | |
| LEARN_MCP_TOKEN | No | Secret token used for OAuth connection | |
| WATIAM_PASSWORD | No | WatIAM password for login autofill | |
| WATIAM_USERNAME | No | WatIAM username for login autofill | |
| WATIAM_LOGIN_DOMAIN | No | Domain for WatIAM login | |
| GOOGLE_DRIVE_API_KEY | No | Google Drive API key | |
| GOOGLE_DRIVE_FOLDER_IDS | No | Comma-separated list of Google Drive folder IDs to search | |
| LEARN_OUTLINE_CACHE_DIR | No | Directory for cached course outlines (default cache/outlines) | |
| GOOGLE_DRIVE_ACCESS_TOKEN | No | Google Drive access token with drive.readonly scope |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_coursesA | List the courses you are enrolled in on Waterloo LEARN. Returns course names and their ou (org unit) IDs, which the other tools take as courseId. Use to answer: "What courses am I taking?" |
| get_announcementsA | Get announcements/news posted by instructors for a course. Returns title, body, posted date, and attachments. Use to answer: "Any new announcements?", "What did the professor post?" |
| get_contentA | List the content modules and materials (lectures, slides, files, links) for a course as a nested table of contents. Use this as the primary source for course activity questions like "what did we do today?", "what was in today's tutorial/lab/lecture?", "what is this week's work?", "what materials are in week 3?", or "where are the lecture slides?". After identifying relevant topics, call get_topic_file to inspect PDFs or PowerPoints. |
| get_topic_fileA | Download a lecture file (PDF or PowerPoint) from course content and return each page/slide as an image you can read — including diagrams and figures. topicId is the |
| get_gradesA | Get your grades for a course: each grade item with displayed grade, points, weight, and feedback. Use to answer: "What are my grades?", "How did I do on the midterm?" |
| get_assignmentsA | Get assignments (dropbox folders) for a course: due date, instructions, attached problem sheets, your submission status (submitted/unsubmitted), submitted files, and released feedback/score. Use to answer: "Have I submitted Assignment 5?", "What is still due?", "What feedback did I get?" |
| get_upcomingA | Get upcoming calendar events and due dates (assignments, quizzes, exams) for a course. Use to answer: "What is due this week?", "When is the next deadline?", or "what work is due today?". This does not list lecture/tutorial materials; pair it with get_content for "what did we do today/this week?" |
| get_course_outlineA | Fetch the official syllabus and return its full text. Use to answer: "What is the grading scheme?", "How much is the midterm worth?", "What is the late policy?", Use this tool WHENEVER user asks about content with chronological language,like "today", "this week", etc.Outlines have a week-by-week schedule, ALWAYS use it to orient chronologically — then call get_content & get_topic_file to pull matching lecture materials. If no outline link exists, check get_content |
| search_drive_filesA | Recursively search the configured Google Drive folder for relevant past quizzes, tests, midterms, exams, practice material, and solutions. Search by course code and useful terms, for example "CS 135 quiz" or "MATH 136 midterm". With no query, returns assessment-like files. Use get_drive_file to inspect a result. |
| get_drive_fileA | Download and inspect a file returned by search_drive_files. PDFs, PowerPoints, Google Docs, and Google Slides are rendered as readable page images. Access is restricted to files inside the configured Drive folder. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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