Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NTULEARN_COOKIENo手动会话备用值。用于在 Chrome 自动读取 Cookie 失败时向 NTULearn 认证。
NTULEARN_BASE_URLNoBlackboard 实例地址;浏览器 Cookie 自动读取仍固定针对 NTULearn 域名。https://ntulearn.ntu.edu.sg
NTULEARN_DOWNLOAD_DIRNo普通附件下载未指定 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

CapabilityDetails
tools
{
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 skipped — fall back to ntulearn_download_file for those. Per-file cap 25 MB, batch cap 40 MB, vision cap 50 rendered pages; oversized files are skipped.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues