关于 ADAM MCP
ADAM MCP 是面向 University of Basel 学生的只读 MCP 服务,通过本地 Chrome 会话读取账号可访问的课程内容。它可查找课程、材料和截止日期,并要求批准后才返回指定正文。
主要功能
- 01列出已选课程及链接
- 02搜索课程内容
- 03读取课程页面和文件文本
- 04查看新闻与截止日期
- 05批准后读取练习和论坛正文
适用场景
- 01查询本周课程新闻
- 02查找特定主题的练习材料
- 03汇总课程页面并返回链接
- 04查看课程截止日期
MCP 相关
客户端通过 stdio 启动本地 MCP 服务;服务使用专用 Chrome 会话读取 ADAM 内容,并将工具结果提供给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
14收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 每页数量,默认值为 20,最大值为 100 |
| cursor | string | 否 | 不透明的十进制令牌——将 nextCursor 原样复制到 cursor,不要自行创建偏移量。浏览器游标过期时,需不带 cursor 重新开始列表查询。 |
详细介绍
ADAM MCP
ADAM MCP 可将兼容 MCP 的 AI 客户端连接到你在巴塞尔大学的 ADAM 课程。
它在你的计算机上运行,并使用专用的 Chrome 会话访问你的账号可用的 ADAM 课程。MCP 客户端可以列出课程、查找资料、阅读已获准的文本,并显示截止日期。有关配置支持和验证状态,请参阅客户端兼容性。
这是一个社区项目,并非巴塞尔大学提供的服务。
当前源代码面向 0.3.0(尚未发布)。以下已发布的安装版本仍为 0.2.0;候选下载和效率功能需要从源代码构建。请参阅 候选版本检查清单。

旁白介绍展示了一个使用逼真合成课程数据和脚本响应的学习工作流。它并未录制受支持的客户端连接到实时 ADAM,也不能证明客户端兼容性。
你可以这样提问
- 显示本周带时间戳的课程新闻。
- 我有哪些截止日期?
- 查找关于傅里叶变换的习题单。
- 总结这个课程页面,并提供 ADAM 链接。
- 列出这门课程的可用资料。
回答中会包含规范的 ADAM URL(https://adam.unibas.ch/go/...)。
快速开始
你需要 Node.js 22+ 和 Google Chrome。请使用受支持的 Node.js LTS 版本。
安装已发布的软件包。引导式设置会检查你的安装、配置一个带备份的客户端、打开 Chrome 供你登录,并验证课程列表。
npm install -g [email protected]
adam-mcp setup --client codex --write --login
将 codex 替换为 cursor、claude-desktop、windsurf 或 vscode。对于 VS Code,请使用 --output 指定目标工作区的 .vscode/mcp.json 路径。重启客户端,启用 adam,然后提问:我加入了哪些课程?请附上它们的 ADAM 链接。
预览设置但不做更改:adam-mcp setup --client codex。诊断连接:adam-mcp doctor --client codex。凭据会保留在 Chrome 登录窗口中。设置过程不会在终端或聊天中索要凭据。
请参阅客户端兼容性,了解已验证的内容;有关手动配置、备份和恢复,请参阅设置指南。
无需全局安装即可运行
已发布的软件包附带一个自包含的 CLI:
npx -y [email protected]
已在仓库外安装并检查确切的 npm 版本。有关源代码、完整性、客户端证据和限制,请参阅发布记录。
从源代码构建
git clone https://github.com/Arudchayan/adam-mcp.git
cd adam-mcp
npm ci
npm run setup -- --client codex --write --login
以下仓库命令也可在源代码检出目录中运行。已安装的用户可以直接使用 adam-mcp login、adam-mcp status 和 adam-mcp logout。
会话管理
如果未提供客户端参数,交互式设置会询问要使用哪个客户端;非交互式设置会输出所有受支持的配置片段。设置默认会预览配置。添加 --write 可安装所选配置并创建备份,添加 --login 可登录并验证课程。
- 若要单独登录,请运行
npm run login,并在 Chrome 中完成 ADAM 登录。验证后窗口会关闭;后台 Chrome 进程会让会话保持可用。登录后,检查adam_session_status,然后调用adam_list_courses。
重启客户端,然后询问:
我选了哪些课程?请提供每门课程的 ADAM URL。
登录会复用有效会话,不会打开 Chrome。关闭登录窗口或按 Ctrl+C 取消;登录失败时会关闭窗口。运行 npm run login -- --force 可打开新窗口,运行 npm run login -- --timeout-ms 120000 可将登录等待时间设为两分钟。npm run logout 会停止本地会话,并禁用自动重连,直到显式登录。npm run logout -- --purge 还会移除专用配置文件;本地登出不会让你退出其他浏览器中的 SWITCH。
特定宿主的文件(Cursor、Claude Desktop、VS Code、Windsurf、Claude Code、ChatGPT 桌面版、Codex):docs/setup.md。
在本地保存选定文件(0.3.0 源候选版本)
使用 adam_list_files 查找文件 ID,然后在检出目录中运行以下命令。
请使用 Git 检出目录之外的现有目录:
npm run build
node packages/mcp/dist/adam-mcp.mjs download 100011 --output-dir "D:/Study/ADAM" --confirm
100011 仅为示例;请替换为所选文件的 ID。这会明确将该文件保存到你的计算机,不会将文件字节共享给模型。
CLI 会返回文件路径、源 URL、大小和 SHA-256。重名文件会添加后缀;现有文件会保留。按 Ctrl+C 可取消传输。下载大小上限为 256 MiB,等待时间上限为 120 秒;空响应和类似 HTML 的响应会被拒绝。目标文件系统必须支持硬链接。此功能不会新增 MCP 下载工具,也不会批准文本提取。详情与清理。
工作原理
客户端会将 ADAM MCP 作为本地进程启动,并通过 stdio 通信。ADAM MCP 会通过你的专用 Chrome 会话读取 https://adam.unibas.ch 中的内容。身份验证保留在 Chrome 中;不提供托管的 MCP 端点。
工具
| 工具 | 返回内容 |
|---|---|
adam_list_courses | 已选课程及其 ADAM URL |
adam_get_course / adam_list_children | 课程快照和文件夹内容 |
adam_read_page | 页面文本(confirm: true 或交互式征求许可) |
adam_list_files / adam_get_file | 文件元数据和 URL,不含文件字节 |
adam_extract_file_text | 本地 PDF/文本提取结果(confirm: true 或交互式征求许可) |
adam_search | 已选对象中的标题匹配项 |
adam_list_calendar / adam_list_news | 你可查看页面中的日期和新闻 |
adam_get_exercise | 练习文本和截止日期(confirm: true 或交互式征求许可);不可提交 |
adam_get_forum | 论坛元数据和主题摘要;帖子正文需要 confirm: true 或交互式征求许可;不可发帖或回复 |
adam_login / adam_session_status | 当前运行环境中的 Chrome 会话 |
文档和主题文本需要针对选定对象获得许可。已连接的模型会收到返回的文本。确认、分页、恢复和完整性规则请参见工具约定。
读取页面、文件文本、练习和论坛帖子时,请先请求特定对象,然后批准读取。支持交互式征求许可的客户端可以直接询问;其他客户端则传入 confirm: true。拒绝或取消后不会返回正文文本。论坛摘要无需批准读取正文。准确约定请参见工具约定。
限制
- 不支持写入、邮件、成绩或考试(
tst)对象。 - 搜索范围涵盖你已选课程树中的标题和可用页面文本。不使用 ADAM 的全局搜索。日期取自可用课程内容,而非 ILIAS 日历界面。
- 扫描版 PDF 不会进行 OCR。
- 支持的 PDF 会逐页解析,传输上限为 8 MiB,文本上限为 40,000 个字符,最多 20 页(默认 8 页)。空文件或格式错误的文件会安全失败。无法保证公式解读和精确的视觉布局。
- 课程页面和完整的跨课程遍历会在一分钟后刷新。如需立即刷新,请重启 MCP 服务。现有分页会保留原始快照十分钟;游标过期后,必须重新启动列表。
- 跨课程读取的运行时间上限为两分钟,达到上限时会返回部分结果。浏览器队列最多接收 32 个等待操作,最长等待时间为 30 秒。如果没有其他请求需要某项工作,取消请求后会释放该工作;缓存读取会复用导航和解析结果。
- Candidate 0.3.0 还会在每个已选课程内共享完整的发现遍历结果。PDF 解析队列最多接收 8 个等待请求,等待输入总量上限为 32 MiB;排队请求会在 30 秒后过期。过载时会返回可重试错误。
- 搜索、日历和新闻支持使用已选课程的
courseRefId缩小发现范围。如需获取最新结果,请在不带游标的情况下使用refresh: true。snapshotAt标识列表快照;每个条目的来源信息会记录其抓取时间。部分结果会包含覆盖范围原因。 - 使用截止时间筛选的新闻仅包含时间戳已知的条目。未标注日期的新闻在没有截止时间时仍会显示。这不会比较文件清单;没有匹配的新闻并不能证明没有任何变化。
- 未带时区偏移量的截止时间使用 Europe/Zurich 时区。含糊或无效的日期/时间会被忽略。仅有日期的证据会以 UTC 午夜表示,但这并不代表截止时间为午夜。
隐私
工具结果会发送给你的客户端当前使用的模型。课程内容受版权保护。
开发
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
npm run benchmark:discovery # cold/scoped/large trees and queue pressure; synthetic
CONTRIBUTING.md · 发布指南 · AGENTS.md
许可证:GPL-3.0-or-later。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。