Skip to main content
Glama

DTU Learn MCP (unofficial)

Let your AI assistant see your DTU Learn courses: lecture slides, course material, assignments, deadlines and announcements. Ask things like:

"What do I need to prepare for Thursday's 02450 lecture?" "Summarize the week 6 slides in Linear Algebra." "What's due in the next two weeks, and what does Project 2 actually ask for?"

It works with Claude Code, Claude Desktop, Codex (CLI and IDE), Cursor and other apps that support local MCP servers.

Unofficial. This is a student project, not made or endorsed by DTU. It only reads what your own DTU Learn account can already see.

How it works

  • Runs on your own computer. Your AI app starts it in the background when needed. There is no server in between.

  • You sign in yourself. login opens a normal browser window with DTU's own sign-in page. Your password and MFA never pass through this tool. Only the resulting DTU Learn session is saved, in ~/.dtu-learn-mcp/, readable only by you.

  • Read-only. It only ever reads from DTU Learn. It cannot submit assignments, post, or change anything. Every tool is marked read-only.

  • Files stay local. Files you ask about are downloaded to ~/.dtu-learn-mcp/files/ so the assistant can read them.

See PRIVACY.md for details.

Related MCP server: ufora-mcp

Setup (about 2 minutes)

You need Node.js 20 or newer, Git, and Google Chrome or Microsoft Edge. The tool is not on npm: npx runs it straight from this GitHub repo.

1. Sign in once:

npx -y github:frederikngh/dtu-learn-mcp login

A browser window opens. Sign in to DTU Learn as usual (including MFA). When the DTU Learn front page appears, the window closes and you're done.

2. Add it to your AI app:

claude mcp add dtu-learn --scope user -- npx -y github:frederikngh/dtu-learn-mcp

Or install the plugin, which also adds the /dtu-learn:prepare-for-lecture and /dtu-learn:week-plan skills:

claude plugin marketplace add frederikngh/dtu-learn-mcp
claude plugin install dtu-learn@dtu-learn

Settings → Developer → Edit Config, and add to claude_desktop_config.json:

{
  "mcpServers": {
    "dtu-learn": { "command": "npx", "args": ["-y", "github:frederikngh/dtu-learn-mcp"] }
  }
}

Restart Claude Desktop.

codex mcp add dtu-learn -- npx -y github:frederikngh/dtu-learn-mcp

Add a local (stdio) MCP server with command npx and arguments -y github:frederikngh/dtu-learn-mcp.

The ChatGPT desktop app may be able to use local MCP servers depending on your version and plan; check OpenAI's current docs. chatgpt.com in the browser cannot reach a server on your computer.

Windows: if npx isn't found by your app, use "command": "cmd", "args": ["/c", "npx", "-y", "github:frederikngh/dtu-learn-mcp"].

Browser and phone apps (claude.ai, chatgpt.com, mobile) are not supported: they run in the cloud and can't reach a server on your computer.

Tools

Tool

What it does

list_courses

Your current (or past) courses

get_course_outline

A course's modules and files, searchable ("lecture 5", "week 6")

read_file

Downloads a file and returns its text: PDF, PowerPoint (with speaker notes), Word, notebooks, code

get_topic

Details and URL for links, videos (Panopto) and external tools

get_upcoming

Deadlines and dated items in the next N days

list_assignments / get_assignment

Hand-ins with instructions, attachments, your submission status and feedback (feedback files can be read with read_file)

get_announcements

Recent course announcements

status / login

Check or renew your sign-in

Courses can be named by number (02450) or by part of their name.

Command line

Everything is also available from a terminal, which works with any agent that can run commands:

npx -y github:frederikngh/dtu-learn-mcp courses
npx -y github:frederikngh/dtu-learn-mcp upcoming --days 14
npx -y github:frederikngh/dtu-learn-mcp outline 02450 --search "lecture 5"
npx -y github:frederikngh/dtu-learn-mcp file 02450 123456
npx -y github:frederikngh/dtu-learn-mcp --help

Troubleshooting

  • "Not signed in" / "session has expired": run npx -y github:frederikngh/dtu-learn-mcp login again. The tool tries a silent renewal first, so this should be rare.

  • "Could not start a browser": install Chrome or Edge, or run npx playwright install chromium.

  • "spawn git ENOENT" or similar: install Git; npx needs it to fetch the tool from GitHub.

  • Check everything: npx -y github:frederikngh/dtu-learn-mcp status.

  • Remove all saved data: npx -y github:frederikngh/dtu-learn-mcp logout --all, then delete ~/.dtu-learn-mcp.

Settings (environment variables): DTU_LEARN_DOWNLOAD_DIR (where files go), DTU_LEARN_BROWSER (chrome, msedge, …), DTU_LEARN_URL (another Brightspace site; untested).

Known limitations

  • Lecture and group-work times come from DTU's timetable, which DTU copies into the DTU Learn calendar; get_upcoming shows them when they are there.

  • Videos, Panopto, FeedbackFruits and other external tools can't be read, only linked.

  • Scanned PDFs have no text to extract; the file is still saved so a vision-capable assistant can open it.

Development

npm install
npm test        # builds, then runs the tests against a fake Brightspace server
npm run dev     # recompile on change

Test your local build in Claude Code with claude mcp add dtu-learn-dev -- node /path/to/dtu-learn-mcp/dist/cli.js.

Code layout: src/auth.ts (browser sign-in), src/client.ts (read-only API client), src/api.ts (courses, content, assignments…), src/tools.ts (tool definitions, shared by MCP and CLI), src/mcp.ts (MCP over stdio), src/extract.ts (file text). The plugin (skills + MCP config) lives in plugin/.

Contributions welcome. Please keep it read-only.

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI clients to read a student's own UGent Ufora (D2L Brightspace) data, including courses, announcements, deadlines, grades, course materials, and PDF text, over stdio or local Streamable HTTP. All operations are read-only and run locally against the student's authenticated session.
    19
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides local, read-only access to Memorial University's Brightspace D2L courses, enabling students to view content, grades, assignments, quizzes, announcements, and deadlines through natural language.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to browse your own university courses by downloading files, slides, announcements, deadlines, grades and lecture transcripts to your machine, then answering questions and searching across them through MCP tools. It logs in with your own account and refreshes only what changed.
    MIT