Read-only access to University of Basel ADAM courses through a local Chrome session.
ADAM MCP connects MCP-compatible AI clients to your University of Basel ADAM courses.
It runs on your machine and uses a dedicated Chrome session to access the ADAM courses available to your account. An MCP client can list courses, find materials, read approved text, and surface deadlines. See client compatibility for configuration support and verification status.
This is a community project, not a University of Basel service.

The narrated overview illustrates a study workflow with realistic synthetic course data and scripted responses. It does not record a supported client connected to live ADAM or establish client compatibility.
Answers include canonical ADAM URLs (https://adam.unibas.ch/go/...).
You need Node.js 22+ and Google Chrome. Use a supported Node.js LTS release.
Install the published package. Guided setup checks your installation, configures one client with a backup, opens Chrome for sign-in, and verifies your course listing.
npm install -g adam-mcp@0.2.0
adam-mcp setup --client codex --write --login
Replace codex with cursor, claude-desktop, windsurf, or vscode. For VS Code, supply --output with the intended workspace's .vscode/mcp.json path. Restart your client, enable adam, then ask: What courses am I in? Include their ADAM links.
Preview without changing settings: adam-mcp setup --client codex. Diagnose a connection: adam-mcp doctor --client codex. Credentials stay in the Chrome sign-in window. Setup never asks for them in the terminal or chat.
See client compatibility for what has been verified and the setup guide for manual configuration, backups, and recovery.
The published package ships a self-contained CLI:
npx -y adam-mcp@0.2.0
The exact npm version was installed and checked outside the repository. See the publication record for source, integrity, client evidence and limits.
git clone https://github.com/Arudchayan/adam-mcp.git
cd adam-mcp
npm ci
npm run setup -- --client codex --write --login
The repository commands below also work from a source checkout. Installed users can use adam-mcp login, adam-mcp status, and adam-mcp logout directly.
Without a client argument, interactive setup asks which client to use; noninteractive setup prints all supported snippets. Setup previews by default. Add --write to install the selected configuration with a backup, and --login to sign in and verify courses.
npm run login and complete ADAM sign-in in Chrome. The window closes after verification; a background Chrome process keeps the session available. After login, check adam_session_status, then call adam_list_courses.Restart the client, then ask:
What courses am I in? Include the ADAM URL for each.
Login reuses a valid session without opening Chrome. Close the sign-in window or
press Ctrl+C to cancel; failed attempts close their window. Use
npm run login -- --force for a fresh window, or npm run login -- --timeout-ms 120000 for a
two-minute sign-in wait. npm run logout stops the local session and disables
automatic reconnection until explicit login. npm run logout -- --purge also
removes the dedicated profile; local logout does not sign you out of SWITCH in
other browsers.
Host-specific files (Cursor, Claude Desktop, VS Code, Windsurf, Claude Code, ChatGPT desktop, Codex): docs/setup.md.
The client starts ADAM MCP as a local process and communicates over stdio. ADAM MCP reads through your dedicated Chrome session at https://adam.unibas.ch. Authentication stays in Chrome; no hosted MCP endpoint is provided.
Architecture · What is in scope · Capabilities · Roadmap
| Tool | Returns |
|---|---|
adam_list_courses | Enrolled courses and ADAM URLs |
adam_get_course / adam_list_children | Course snapshot and folder contents |
adam_read_page | Page text (confirm: true OR elicitation) |
adam_list_files / adam_get_file | File metadata and URLs, not bytes |
adam_extract_file_text | Local PDF/text extract (confirm: true OR elicitation) |
adam_search | Title matches in enrolled objects |
adam_list_calendar / adam_list_news | Dates and news from pages you can see |
adam_get_exercise | Exercise text and deadline (confirm: true OR elicitation); no submit |
adam_get_forum | Forum meta and thread summaries; post bodies need confirm: true OR elicitation; no post/reply |
adam_login / adam_session_status | Chrome session in the live runtime |
Document and thread text requires approval for the selected object. Your connected model receives the returned text. See tool contracts for confirmation, pagination, recovery and completeness rules.
For page, file-text, exercise, and forum-post reads, request the specific object first, then approve the read. Clients with elicitation support can ask for approval interactively; other clients pass confirm: true. Declining or cancelling returns no body text. Forum summaries do not require body-read approval. See tool contracts for the precise contract.
tst) objects.courseRefId to narrow discovery. Use refresh: true without a cursor for fresh results. snapshotAt identifies the listing snapshot; each item's provenance records when it was fetched. Partial results include coverage reasons.Tool results go to the model your client is already using. Course content is copyrighted.
npm test
npm run typecheck
npm run check # tests, typecheck, build, built-package verification, dependency audit
npm run release:check # also verifies a clean tarball installation
npm run benchmark:reads # synthetic cached-read timing; no live ADAM access
CONTRIBUTING.md · Release guide · AGENTS.md
License: GPL-3.0-or-later.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y adam-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-arudchayan-adam-mcp": {
"command": "npx",
"args": [
"-y",
"adam-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceadam-mcpnpmADAM MCP works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.