mcpField
M
moodle-mcp

moodle-mcp

本地服务
github.com/av-leschinskiy科研与教育01 天前更新

关于 moodle-mcp

moodle-mcp 是面向教师的 MCP 服务,可让 AI 助手查看 Moodle 作业与提交内容。它支持下载文件,并且只有经教师确认后才会提交成绩或反馈。

主要功能

  1. 01查看课程和作业
  2. 02检查提交状态与内容
  3. 03下载提交文件
  4. 04经确认后保存成绩和反馈
  5. 05经确认后退回作业修改
  6. 06移除 HTML 且不返回参与者邮箱

适用场景

  1. 01找出待教师审核的提交
  2. 02查看课程中的学生作业
  3. 03下载文件以审核作业
  4. 04获批后评分并提交反馈

MCP 相关

通过 Moodle Web 服务 REST API,向 stdio MCP 客户端提供课程、作业、提交、文件和评分工具。涉及学生可见的评分和提交变更时,必须先获得确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"av-leschinskiy-moodle": {
"command": "npx",
"args": [
"-y",
"@av-leschinskiy/moodle-mcp"
],
"env": {
"MOODLE_URL": "<MOODLE_URL>",
"MOODLE_TOKEN_FILE": "<MOODLE_TOKEN_FILE>",
"MOODLE_TOKEN": "<MOODLE_TOKEN>",
"MOODLE_TIMEOUT": "<MOODLE_TIMEOUT>",
"MOODLE_CHROME": "<MOODLE_CHROME>",
"MOODLE_DEBUG": "<MOODLE_DEBUG>"
}
}
}
}
启动命令npx -y @av-leschinskiy/moodle-mcp
需要配置的环境变量
MOODLE_URLMoodle site address (wwwroot), e.g. https://moodle.example.org
MOODLE_TOKEN_FILE密钥Where moodle-mcp-login saves the token (path is resolved via homedir())
MOODLE_TOKEN密钥Web service token override (CI / smoke tests)
MOODLE_TIMEOUTTimeout of a single API request (ms)
MOODLE_CHROMEChrome/Chromium binary for moodle-mcp-login (looked up in PATH by default)
MOODLE_DEBUG1/true/yes/on enables debug output to stderr and debug level in the host log channel

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@av-leschinskiy/moodle-mcp0.2.0

工具

9

收录的工具列表 · 更新于 今天

此工具无需参数。

详细介绍

Moodle MCP 服务

一个基于 Moodle Web 服务 REST API 的 MCP 服务,供 AI 助手(Claude Code、Cursor、Codex 和其他 stdio 客户端)使用。它专为教师打造:助手可以查看课程、作业和学生提交内容,下载提交文件,并在教师确认后,以教师身份保存成绩和反馈。与面向学生的 Moodle MCP 服务不同,此服务专注于作业审阅和评分。

只要 Moodle 站点启用了移动端 Web 服务(moodle_mobile_app),此服务就能使用:令牌的签发方式与 Moodle 移动应用相同,因此通过外部 OAuth 提供商登录时,即使需要验证码也能正常使用。

前提条件

  • Node.js ≥ 22。
  • Google Chrome 或 Chromium,用于运行 moodle-mcp-login 命令。
  • Moodle 站点已启用移动应用访问权限(Site administration → Mobile app)。 检查方法:打开 <site>/admin/tool/mobile/launch.php,应能正常打开,而不是返回错误。

快速开始

以下示例使用 https://moodle.example.org;请将其替换为浏览器地址栏中显示的 Moodle 地址(协议、主机、路径;末尾的斜杠无关紧要)。

  1. 登录:每台机器登录一次;之后每当工具返回登录错误时都要重新登录 (Moodle 登录和服务端令牌,俄语):

    MOODLE_URL=https://moodle.example.org npx -y -p @av-leschinskiy/moodle-mcp moodle-mcp-login
    

    Chrome 窗口会打开:像平常一样登录站点并自行完成验证码。命令会显示 Logged in as <name> on <site>,然后关闭窗口。如果不加 -p,npx 会启动服务,而不是登录命令。Chrome 会从 PATH 中查找;在 macOS 和 Windows 上,请在 MOODLE_CHROME 中设置其路径。

  2. 将服务添加到客户端。Claude Code:

    claude mcp add moodle -e MOODLE_URL=https://moodle.example.org -- npx -y @av-leschinskiy/moodle-mcp
    

    添加 -s user 可为所有项目启用;不添加则仅对当前项目启用。

    Codex:使用命令,或在 ~/.codex/config.toml 中添加配置块:

    codex mcp add moodle --env MOODLE_URL=https://moodle.example.org -- npx -y @av-leschinskiy/moodle-mcp
    
    [mcp_servers.moodle]
    command = "npx"
    args = ["-y", "@av-leschinskiy/moodle-mcp"]
    env = { MOODLE_URL = "https://moodle.example.org" }
    

    Cursor 和其他客户端:配置一个 stdio 服务,命令为 npx -y @av-leschinskiy/moodle-mcp,并设置 MOODLE_URL 变量:

    {
      "mcpServers": {
        "moodle": {
          "command": "npx",
          "args": ["-y", "@av-leschinskiy/moodle-mcp"],
          "env": { "MOODLE_URL": "https://moodle.example.org" }
        }
      }
    }
    
  3. 检查:让助手“显示我的 Moodle 课程”。

从仓库克隆目录运行时,请使用 node <clone>/dist/index.js 和 node <clone>/dist/cli/login.js 代替 npx:dist/ 已提交,无需构建。

包含内容

共有10 个工具;其中 3 个需要用户确认。

类别工具确认涵盖内容
站点2—我的身份、Moodle 版本、可用功能、我的课程
作业和提交内容4—课程作业、参与者和提交状态、整个课程中需要教师处理的事项、完整提交内容
文件1—将提交文件下载到磁盘
评分33成绩和反馈、提交评论、退回提交以供修改
完整名称列表

站点

  • moodle_list_courses
  • moodle_site_info

作业和提交内容

  • moodle_get_submission
  • moodle_list_assignments
  • moodle_list_pending_submissions
  • moodle_list_submissions

文件

  • moodle_download_file

评分

  • moodle_add_submission_comment — 需确认
  • moodle_revert_submission_to_draft — 需确认
  • moodle_save_grade — 需确认

此服务代表你执行操作:它能查看和更改你在 Moodle 界面中能查看和更改的相同内容。宿主仅会要求确认学生可见的写入操作:保存成绩和反馈、添加提交评论、将提交退回草稿状态(destructiveHint: true)。下载文件也会执行写入操作,但只写入你的磁盘,因此无需确认。

为节省模型上下文,响应内容会经过精简:描述和提交内容中的 HTML 会转换为纯文本,时间会转换为 ISO 格式;未设置的成绩会转换为 null,并且绝不会返回参与者的电子邮件地址。

配置

变量必需默认值说明
MOODLE_URL是—Moodle 站点地址(wwwroot),例如 https://moodle.example.org
MOODLE_TOKEN_FILE—~/.config/mcp-moodle/token.jsonmoodle-mcp-login 保存令牌的位置(通过 homedir() 解析路径)
MOODLE_TOKEN——覆盖 Web 服务令牌(CI / 冒烟测试)
MOODLE_TIMEOUT—30000单次 API 请求的超时时间(毫秒)
MOODLE_CHROME——moodle-mcp-login 使用的 Chrome/Chromium 二进制文件(默认在 PATH 中查找)
MOODLE_DEBUG—false设置为 1/true/yes/on 时,会向 stderr 输出调试信息,并在主机日志通道中启用 debug 级别

令牌文件的权限为 0600,并会保存签发令牌的站点地址:如果该地址与 MOODLE_URL 不匹配,服务会提示你运行 moodle-mcp-login。服务会在每次请求时读取此文件,因此重新登录后无需 重启主机。错误消息、日志和工具响应(包括文件 URL)中的令牌都会被清除。

登录时使用的 Chrome 配置文件与主配置文件分开保存 (~/.config/mcp-moodle/chrome-profile):站点 Cookie 会保留,因此通常无需密码 即可重新登录。

开发

npm install        # also enables the git hooks (.githooks)
npm run dev        # tsx, no compilation
npm run build      # native TypeScript 7 → dist/
npm run verify     # typecheck + lint + tests + docs check
MOODLE_URL=… npm run smoke   # read-only tool chain against a live Moodle

仅使用 npm run build 构建:devDependencies 中包含两个编译器版本, 详情。dist/ 已提交;提交前钩子会构建并暂存该目录、 递增补丁版本,并重新生成上方的表格。 架构和规则见 AGENTS.md(俄语)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。