ntulearn-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NTULEARN_COOKIE | No | 手动会话备用值。用于在 Chrome 自动读取 Cookie 失败时向 NTULearn 认证。 | |
| NTULEARN_BASE_URL | No | Blackboard 实例地址;浏览器 Cookie 自动读取仍固定针对 NTULearn 域名。 | https://ntulearn.ntu.edu.sg |
| NTULEARN_DOWNLOAD_DIR | No | 普通附件下载未指定 destination_dir 时的目录;增量同步仍需显式指定目标目录。 | ./downloads |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ntulearn_sync_materialsA | Preview or incrementally sync course files into semester/course/original folders. Defaults to dry_run=true. Uses a manifest and checksums, preserves local edits, never deletes files. Inspect errors and truncated before claiming a complete sync. |
| ntulearn_get_assignmentsB | Aggregate gradebook, calendar and assignment pages with source links, exact-match merging, explicit submission status and conflicting deadlines. Includes separate unverified deadline excerpts from announcements and assignment documents; never treat excerpts as confirmed deadlines. Check errors/truncated/documentScan for coverage. |
| ntulearn_list_coursesA | List courses the current user is enrolled in on NTULearn. By default returns only active/available courses. Set include_disabled=true to also include unavailable ones. Supports pagination via limit/offset. |
| ntulearn_get_course_contentsA | Walk a course's content tree. Omit parent_id to get the top-level items (folders, documents, links, assignments); pass parent_id of a folder/lesson where hasChildren=true to drill into its children. Supports pagination. |
| ntulearn_search_course_contentA | Recursively search a course's entire content tree for items matching a query. Matches on title or description (case-insensitive substring). Returns matched items with their full breadcrumb path. |
| ntulearn_download_fileA | Download every file attached to a Blackboard content item to local disk. Handles both resource/x-bb-file (attachment API) and resource/x-bb-document (HTML body with bbcswebdav links) handler types. Pass destination_dir to target a specific folder — useful for organising a semester (e.g. destination_dir='~/NTU/y3s1/sc2002/week 8/'). Returns saved files with their resolved local paths and sizes. Use ntulearn_read_file_content if you want to inspect the content inline rather than saving to disk. |
| ntulearn_read_file_contentA | Read the content of files attached to a Blackboard content item, returned inline (no local-filesystem hop). Use this to ask questions about lecture material — ntulearn_download_file is for users who actually want the bytes on disk. PDFs default to text mode (via pypdf — cheap and almost always what you want for written content). Pass mode='vision' for diagram-, equation-, or screenshot-heavy pages; pair with pages='5' or pages='1-3' to keep the payload under MCP's 1 MB cap (~3K vision tokens per page). For multi-page diagram-heavy decks, prefer ntulearn_download_file plus drag-and-drop into claude.ai. Also supports Microsoft Office formats (.docx, .pptx with speaker notes, .xlsx with all sheets) and text-like files (txt, md, csv, json, xml, html with tags stripped, code files). Other binaries (images, video, audio, archives, legacy .doc/.ppt/.xls) are listed under |
| ntulearn_get_upcomingA | Get upcoming calendar items and assignment due dates across your enrolled courses. Wraps Blackboard's calendar API — assignment due dates surface as items with type='GradebookColumn'. By default returns the next 2 weeks across every available course (server fans out per-course in parallel). Pass course_ids to scope to specific courses, since/until (ISO-8601) to override the window, or type to filter (e.g. type='GradebookColumn' for due dates only). |
| ntulearn_get_announcementsA | Get announcements across your enrolled courses, newest first. By default fans out across every available course; pass course_ids=['_123_1'] to scope. Use since (ISO-8601) to filter to recent announcements only (e.g. "this week"). Each item includes the courseId it was posted to so cross-course views stay attributable. Supports pagination. |
| ntulearn_get_gradebookA | Get gradebook columns across your enrolled courses, including your scores where available. By default fans out across every available course; pass course_ids=['_123_1'] to scope. Each column carries the courseId it belongs to so cross-course views stay attributable. Supports pagination. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Most tools target clearly distinct operations (list_courses, get_course_contents, search_course_content, download_file, read_file_content are unambiguous). However there is meaningful overlap between ntulearn_get_assignments (which aggregates gradebook+calendar+assignment pages), ntulearn_get_upcoming (calendar/due dates), and ntulearn_get_gradebook (gradebook columns) — an agent could reasonably pick the wrong one when asked about deadlines or grades, though the descriptions do clarify the sources each wraps.
Every tool uses the same ntulearn_<verb>_<noun> pattern (get_, list_, search_, sync_, download_, read_). Verb choices are consistent and predictable, with no mixing of styles or casing.
Ten tools is well-scoped for a student LMS integration: course listing, content walking/search, file access, announcements, gradebook, deadlines, and material sync each map to a real workflow without redundancy or filler.
The surface covers the read/lifecycle needs of an LMS client (courses, contents, search, download, read, announcements, grades, deadlines, sync) with no obvious dead ends. Minor gaps exist: no course-metadata/detail tool beyond listing, and no write operations beyond local file sync, but these are largely outside a read-oriented student client's scope.