{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_2xa3ys4wtbc8","handle":"ntulearn-mcp","url":"https://wellknown.network/agents/ntulearn-mcp","links":{"self":"https://wellknown.network/agents/ntulearn-mcp/record.json","html":"https://wellknown.network/agents/ntulearn-mcp","markdown":"https://wellknown.network/agents/ntulearn-mcp/record.md","api":"https://wellknown.network/api/v1/agents/ntulearn-mcp","status":"https://wellknown.network/api/v1/agents/ntulearn-mcp/status","claim":"https://wellknown.network/agents/ntulearn-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ntulearn-mcp/claim.json","badge":"https://wellknown.network/agents/ntulearn-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ntulearn-mcp/history","tools":"https://wellknown.network/api/v1/agents/ntulearn-mcp/tools"},"ard":{"identifier":"urn:air::server:ntulearn-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"ntulearn-mcp","summary":"MCP server wrapping the Blackboard Learn REST API for NTULearn (NTU Singapore's LMS).","description":"# ntulearn-mcp\n\nMCP server for **NTULearn** (NTU Singapore's Blackboard Learn instance). Lets Claude Desktop, Claude Code, Cursor, Cline, and other MCP hosts answer questions about your courses, announcements, calendar, and grades — and organise course files into a folder hierarchy on your disk.\n\nBuilt for tech-inclined NTU students. Requires Python 3.12+ and `uv`.\n\n---\n\n## What it's for\n\nFour prompts this server is built to make easy:\n\n1. **\"What announcements happened across my courses this week?\"** → fans out across all enrolled courses, sorted newest first.\n2. **\"What assignments do I have due next week?\"** → reads NTULearn's calendar, including gradable items (`type=GradebookColumn`).\n3. **\"Organise this semester's NTULearn content into `~/NTU/y3s1/sc2002/week 8/…` on my disk.\"** → walks the course tree and downloads files into a folder layout you describe in plain English.\n4. **\"Pull the assignment due dates and grading weightages out of this course briefing PDF.\"** → reads small text-heavy PDFs / Office docs inline (no filesystem hop).\n\nFor multi-page, diagram-heavy lecture decks, **use `download_file` and drag the PDF into claude.ai** — that path has a 32 MB budget and native vision rendering. MCP tool results are capped at 1 MB; this server doesn't try to compete with drag-and-drop for full lecture decks.\n\n---\n\n## Quick start\n\n### 1. Install `uv`\n\n```bash\n# macOS / Linux\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# Windows (PowerShell)\nirm https://astral.sh/uv/install.ps1 | iex\n```\n\n### 2. Log into NTULearn in your browser\n\nOpen https://ntulearn.ntu.edu.sg in **Chrome, Edge, Firefox, or Brave** and log in. The server reads your `BbRouter` cookie automatically from whichever browser has a fresh session — no copy-paste required on most setups.\n\n### 3. Add the server to your MCP host\n\n**Claude Desktop** — edit `claude_desktop_config.json`:\n\n- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- Windows: `%APPDATA%\\Claude\\claude_des…","publisher":null,"homepage":"https://github.com/kingdonkatsu/ntulearn-mcp","repository":"https://github.com/kingdonkatsu/ntulearn-mcp","version":"0.2.0","license":null,"protocols":["mcp"],"tags":["blackboard","claude","education","lms","mcp","ntu","ntulearn","singapore"],"pricing":null,"endpoints":[{"url":"pypi:ntulearn-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi"}},"derived":{"capabilities":[{"slug":"dev.filesystem","name":"Filesystem","confidence":1,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.791,"provenance":"derived"}],"categories":["dev","infra"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"ntulearn-mcp","registry":"pypi","observedAt":"2026-11-03T20:29:33.059Z","publishedAt":"2026-05-16T12:19:02.218085Z","latestVersion":"0.2.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"ntulearn-mcp","url":"https://pypi.org/project/ntulearn-mcp/","firstSeenAt":"2026-09-10T08:25:42.020Z","fetchedAt":"2026-11-03T20:27:55.919Z","normalizedAt":"2026-11-03T20:27:55.919Z"}]},"firstSeenAt":"2026-09-10T08:25:42.020Z","updatedAt":"2026-11-03T20:29:33.059Z"}