使用说明
Moodle MCP服务器
MCP(模型上下文协议)服务器,使LLM能够与Moodle平台交互,以管理课程、学生、作业和测验。
特性
课程管理
search_courses-按名称搜索课程- 参数:
courseName(必填):要搜索的课程名称或部分名称
- 返回:具有ID、全名、简称、类别ID、可见性状态和开始/结束日期的匹配课程列表
- 对全名和短名称执行不区分大小写的搜索
- 可用于查找其他操作所需的课程ID
- 参数:
学生管理
get_students-检索已注册课程的学生列表- 返回:学生ID、全名、电子邮件和上次访问时间戳
- 无需参数(使用配置的MOODLE_CURSE_ID)
分配管理
-
get_assignments-检索课程中所有可用的作业- 返回:作业ID、名称、描述、截止日期、截止日期和最高成绩
- 无需参数(使用配置的MOODLE_CURSE_ID)
-
get_submissions-检索作业提交- 参数:
assignmentId(可选):要筛选的特定分配IDstudentId(可选):要筛选的特定学生ID
- 返回:提交状态、提交时间和评分信息
- 如果没有提供参数,则返回课程的所有提交内容
- 参数:
-
get_submission_content-检索特定提交的详细内容- 参数:
studentId(必填):学生证assignmentId(必填):任务ID
- 返回:提交文本、文件附件和元数据
- 参数:
-
provide_feedback-为提交内容提供评分和反馈- 参数:
studentId(必填):学生证assignmentId(必填):任务IDfeedback(必填):反馈文本grade(可选):要分配的数字等级
- 将反馈和评分存储在Moodle中
- 参数:
VPL(虚拟编程实验室)支持
-
get_vpl_assignments-检索课程中的所有VPL作业- 返回:VPL ID、名称、描述、到期日期和配置
- 专门针对VPL活动(模块名称:“VPL”)
-
get_vpl_submission-使用代码文件检索学生的VPL提交- 参数:
studentId(必填):学生证vplId(必填):VPL分配ID
- 返回:提交详细信息、提交的包含内容的文件和评分信息
- 可用于代码审查和自动分析
- 参数:
测验管理
-
get_quizzes-检索课程中所有可用的测验- 返回:测验ID、名称、描述、打开/关闭时间、时限和最高成绩
- 无需参数(使用配置的MOODLE_CURSE_ID)
-
get_quiz_grade-检索特定测验的学生成绩- 参数:
studentId(必填):学生证quizId(必填):测验ID
- 返回:数字成绩、最高成绩、百分比和评分状态
- 参数:
需求
- Node.js(v14或更高版本)
- 具有适当权限的Moodle API令牌
- Moodle课程ID
安装
- 克隆此存储库:
git clone https://github.com/your-username/moodle-mcp-server.git
cd moodle-mcp-server
- 安装依赖项:
npm install
- 创建一个
.env具有以下配置的文件:
MOODLE_API_URL=https://your-moodle.com/webservice/rest/server.php
MOODLE_API_TOKEN=your_api_token
MOODLE_COURSE_ID=1 # Replace with your course ID
- 构建服务器:
npm run build
用法示例
搜索课程
// Search for courses by name
const courses = await search_courses({ courseName: "Programming" });
// Returns all courses that contain "Programming" in their full name or short name
// Example response:
{
"searchTerm": "Programming",
"totalFound": 2,
"courses": [
{
"id": 130,
"fullname": "Programming 1 - Java",
"shortname": "PROG1",
"categoryid": 5,
"visible": 1,
"startdate": 1693526400,
"enddate": 1704067200
}
]
}
获取学生信息
// Get all students in the course
const students = await get_students();
处理作业
// Get all assignments
const assignments = await get_assignments();
// Get all submissions for a specific assignment
const submissions = await get_submissions({ assignmentId: 123 });
// Get detailed content of a specific submission
const content = await get_submission_content({
studentId: 456,
assignmentId: 123
});
// Provide feedback and grade
await provide_feedback({
studentId: 456,
assignmentId: 123,
feedback: "Great work! Well structured code.",
grade: 8.5
});
处理VPL任务
// Get all VPL assignments
const vplAssignments = await get_vpl_assignments();
// Get a student's VPL submission with code files
const vplSubmission = await get_vpl_submission({
studentId: 456,
vplId: 789
});
// Returns: submission details, array of files with names and content
使用Quizzes
// Get all quizzes
const quizzes = await get_quizzes();
// Get a student's grade for a specific quiz
const grade = await get_quiz_grade({
studentId: 456,
quizId: 321
});
与Claude一起使用
要与Claude Desktop一起使用,请添加服务器配置:
在MacOS上: ~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"moodle-mcp-server": {
"command": "/path/to/node",
"args": [
"/path/to/moodle-mcp-server/build/index.js"
],
"env": {
"MOODLE_API_URL": "https://your-moodle.com/webservice/rest/server.php",
"MOODLE_API_TOKEN": "your_moodle_api_token",
"MOODLE_COURSE_ID": "your_course_id"
},
"disabled": false,
"autoApprove": []
}
}
}
对于Windows用户,路径将使用反斜杠:
{
"mcpServers": {
"moodle-mcp-server": {
"command": "C:\\path\\to\\node.exe",
"args": [
"C:\\path\\to\\moodle-mcp-server\\build\\index.js"
],
"env": {
"MOODLE_API_URL": "https://your-moodle.com/webservice/rest/server.php",
"MOODLE_API_TOKEN": "your_moodle_api_token",
"MOODLE_COURSE_ID": "your_course_id"
},
"disabled": false,
"autoApprove": []
}
}
}
配置后,Claude将能够与您的Moodle课程进行交互,以:
- 查看注册学生及其信息
- 管理作业并检索提交内容
- 访问VPL(虚拟编程实验室)作业和提交的代码
- 为学生作业提供成绩和反馈
- 检索测验信息和学生成绩
- 下载并分析提交内容,包括文件
与AI分析系统集成
此MCP服务器旨在与位于父目录中的基于Python的AI分析系统协同工作。Python系统提供:
- 基于AI的提交分析 使用Ollama/LLM
- 自动生成反馈 基于提交内容
- 风险评估 学生(高/中/低风险水平)
- URL提取和验证 从提交
- 进度跟踪 趋势分析
- Markdown报告生成 学生和课程
工作流程
- MCP服务器:提供API对Moodle数据(学生、作业、VPL、测验)的访问
- Python系统 (
src/main.py):- 直接使用Moodle Web Services检索数据
- 下载提交文件
- 使用Olama执行AI分析
- 生成全面的报告
- 整合:两个系统都可以独立或协同工作,以实现完整的课程管理
有关AI分析功能,请参阅 AI_ANALYSIS_README.md 在父目录中。
发展
对于自动重建的开发:
npm run watch
调试
MCP服务器通过stdio进行通信,这可能会使调试变得具有挑战性。我们建议使用 MCP检查员:
npm run inspector
检查器将提供一个URL,用于访问浏览器中的调试工具。
获取Moodle API代币
- 以管理员身份登录您的Moodle网站
- 转到“网站管理”>“插件”>“Web服务”>“管理令牌”
- 创建具有管理课程所需权限的新令牌
- 复制生成的令牌并将其添加到您的
.env文件
安全
- 永远不要分享你的
.env文件或Moodle API令牌 - 确保MCP服务器只能访问它需要管理的课程
- 使用具有最低必要权限的令牌
