Moodle-MCP - 让 AI 智能体直接读取 Moodle 课程数据的 MCP 服务器
Moodle-MCP 是一个零依赖的单文件 MCP 服务器,通过 Moodle 官方 Web Service API 提供十项只读工具,让 AI 智能体直接读取课程、作业截止日期、测验状态与课程文件,无需浏览器抓取。项目由 Faixiang 维护,采用 MIT 许可,截至 2026-11-09 获 204 星标,尚无正式 release。
Moodle-MCP 是一个面向 Moodle 学习管理系统的 MCP(Model Context Protocol)服务器。它要解决的问题很具体:Moodle 本身已经提供稳定且有文档的 REST Web Service API,但此前缺少一个通用的 MCP 封装,导致 AI 智能体想读取课程信息时只能依赖无头浏览器抓取——速度慢、容易失效,还常被站点的 WAF 拦截。项目自述的定位是「一个零依赖的 Python 文件,十个只读工具」,面向任何启用了 Web Services 的 Moodle 3.x / 4.x 站点。适合的人群包括:希望让 AI 助手直接回答「这周还有什么作业没交」的学生,以及需要把课程数据接入自有智能体工作流的使用者。
维护者与状态
仓库由 Faixiang 维护,地址为 Faixiang/Moodle-MCP。项目创建于 2026-10-26,最后一次提交在 2026-11-01,属于非常新的项目。截至 2026-11-09,仓库获得 204 个星标。需要说明的是,官方接口显示该项目尚无正式 release;素材中提到的版本号与更新日志属于项目自述内容,与事实表不一致,本文以事实表为准,不将其作为已发布版本陈述。
许可证为 MIT。
主要能力
以下能力均据项目 README 自述整理,未经独立验证。
数据检索
- 截止日期感知:作业被划分为「即将到期」「已逾期」「无压力」三类,并自动计算剩余天数。
- 每周摘要:一次调用返回近期新增内容、即将到期与已逾期作业,格式化为可直接阅读的简报。
- 课程文件:返回章节结构与文件列表,含直接下载链接和修改时间;据项目说明,只取元数据,不下载文件内容。
- 内置诊断:站点信息工具可报告 Moodle 版本、账号身份,以及当前 token 实际可调用的函数列表。
工程特性
- 零依赖:仅使用 Python 标准库(urllib、json、ssl),不污染运行环境。
- 单文件:把 server.py 复制到任意位置即可,无包结构、无构建步骤。
- stdio JSON-RPC 2.0:可接入 Claude Desktop、Cursor 等兼容 MCP 的客户端。
- 对 WAF 友好:调用串行化,并在请求之间留出 150 毫秒间隔。
- 设计上只读:代码中不存在提交、选课、编辑或删除类端点。
工具清单
据 README,服务器提供十项工具,包括:无需 token 即可运行的安装引导与本地配置自检;用于验证 token 并返回站点与账号信息的站点信息工具;列出全部已选课程;按天数查询近期更新;查询未提交作业并按紧迫程度分组;读取测验作答状态与分数;列出某门课程的章节与文件;把某一周的文件下载到本地以章节命名的文件夹;以及一次性汇总的每周摘要工具。下载工具只写入本地磁盘,不会向 Moodle 提交任何内容。
使用入口
仓库地址:Faixiang/Moodle-MCP。
据项目说明,使用流程分为四步。第一步获取 token:推荐在 Moodle 站点中依次进入头像 → 偏好设置 → 账户 → 安全 → 管理访问密钥,创建一个新密钥并复制;若站点支持本地密码,也可运行仓库中的 get_token.py 脚本走移动端服务流程,但仅使用 SSO 的账号会返回 invalidlogin,此时应改用网页方式。第二步配置:在 server.py 同级目录创建 config.json,填入站点 URL 与 token,或改用 MOODLE_URL / MOODLE_TOKEN 环境变量,环境变量优先级高于配置文件。第三步注册:在客户端的 mcp.json 中以 python 加 server.py 绝对路径的方式登记该服务器。第四步验证:调用站点信息工具,若能返回站点名称、Moodle 版本与用户记录即表示配置成功。
{
"mcpServers": {
"moodle": {
"command": "python",
"args": ["/absolute/path/to/Moodle-MCP/server.py"]
}
}
}
许可与限制
项目采用 MIT 许可证。使用前需注意以下边界条件,均来自项目自述:运行环境要求 Python 3.8 及以上,MCP 协议版本为 2024-11-05;Moodle 侧需为 3.x / 4.x 且已启用 Web Services 与 REST 协议;账号需具备 webservice/rest:use 能力。README 称其已在 Moodle 4.3.6、授予全部 435 个函数的环境下验证。
已知限制包括:若调用中出现 502 或连接重置,通常是站点 WAF 限流,应等待数分钟后重试,并避免并行触发多个工具;工具返回空列表时,应检查 Web Services 与 REST 是否在站点级启用、账号权限是否足够,以及传入的课程过滤条件是否正确;若函数列表明显偏短,说明管理员将授权限制在移动端子集。此外,只读工具返回的文件链接已携带 token,项目建议将其视为机密,避免出现在日志、截图与公开仓库中。素材中关于 Turnitin 截止日期缺失的说明在抓取时被截断,此处不作推断。