ntulearn-mcp

Your NTU courses, inside your agent.

A free, open-source MCP server and CLI for NTULearn — NTU Singapore's Blackboard Learn. Ask Claude, Cursor or ChatGPT about your announcements, deadlines, grades and course files.

Star on GitHub
Works with any agent
  • Claude / Claude Code
  • ChatGPT
  • Cursor
  • GitHub Copilot
  • VS Code
  • Zed
  • Any MCP host

Everything NTULearn, on demand

ntulearn-mcp is an MCP server and agent-first CLI for NTULearn, NTU Singapore's Blackboard Learn instance. One Rust binary, 21 tools, no Python and no virtualenv — your agent simply asks, NTULearn answers.

Announcements, newest first

Fans out across every enrolled course and aggregates announcements — optionally since a date — so “what happened this week?” is one question, not ten tabs.

Deadlines & calendar

Upcoming calendar items across all courses, including gradable assignments. Export everything to an .ics file for your own calendar.

Grades & attempts

Gradebook columns with your scores across courses, submission attempts per assignment, and a one-command .csv export of the whole gradebook.

Course files, organised

Walk a course's content tree, search across all courses, download single items or bulk-download a course into any folder hierarchy you describe.

One-call digests

whats-new returns everything since a cutoff — announcements, due dates, gradebook changes — and per-course briefings bundle staff, dates and top folders.

Token-efficient by design

The CLI's compact TSV and TOON output uses roughly 64× fewer tokens than MCP tool schemas over a 10-turn conversation. Same binary, same cache.

Up and running in two commands

  1. 1. Get the binary

    Grab the latest release for your platform from GitHub Releases — macOS, Linux and Windows builds with checksums — or build from source with cargo build --release.

  2. 2. Log in once

    Run ntulearn-mcp setup. A browser window opens NTULearn; after you log in, the server captures your session and renews it silently in the background.

  3. 3. Point your agent at it

    Register the binary as an MCP server in Claude, Cursor, ChatGPT, Copilot, VS Code or Zed — or just tell your agent to run ntulearn-mcp help and use the CLI.

Frequently asked questions

What is ntulearn-mcp?

ntulearn-mcp is a free, open-source MCP server and CLI that connects NTULearn — NTU Singapore's Blackboard Learn instance — to AI agents like Claude, Cursor, ChatGPT and GitHub Copilot. It ships as a single Rust binary with 21 tools for reading announcements, due dates, grades, course files and more.

Which AI agents does it work with?

Any MCP host: Claude Desktop, Claude Code, Cursor, ChatGPT, GitHub Copilot, VS Code, Zed, Cline and others. The same binary doubles as a plain command-line tool your agent can shell out to.

How do I log in to NTULearn?

Run ntulearn-mcp setup. A dedicated browser window opens NTULearn, you log in once, and the server captures and silently renews your session in the background — no copy-pasting cookies or devtools. No terminal? Ask your agent to call the ntulearn_login tool.

Is it free and open source?

Yes. ntulearn-mcp is MIT-licensed and available as prebuilt binaries for macOS, Linux and Windows from the GitHub releases page, or build it yourself with cargo build --release.

Can it tell me what's due and what changed?

Yes. whats-new gives a one-call digest of announcements, upcoming due dates and gradebook changes since a cutoff; upcoming lists calendar items (including gradable assignments) across all your courses; the calendar also exports to .ics.

Why does it also ship a CLI?

MCP hosts inject every tool's JSON schema into context every turn — about 6.6k tokens for 21 tools. The CLI's compact tabular output needs a few hundred tokens, modelling out to roughly 64x fewer tokens over a 10-turn conversation. Point your agent at the binary and let it run ntulearn-mcp help.