使用说明
Moodle MCP
一个让AI助手通过浏览器与Moodle LMS交互的桥梁。适用于任何Moodle实例,包括使用SSO/LDAP的实例,因为它使用您现有的浏览器会话。
建筑
┌─────────────────────────────────────────────────────────────────────────┐
│ YOUR MACHINE │
├─────────────────────────────────────────────────────────────────────────┤
│ ┌────────────────┐ ┌────────────────────────────────────┐ │
│ │ AI Assistant │ │ Browser (Chrome/Edge) │ │
│ │ (Claude, │ │ ┌──────────────────────────────┐ │ │
│ │ Cursor, etc) │ │ │ Your Moodle (logged in) │ │ │
│ └───────┬────────┘ │ └──────────────────────────────┘ │ │
│ │ MCP Protocol │ ┌──────────────────────────────┐ │ │
│ │ │ │ Browser Extension │ │ │
│ │ │ │ (executes commands securely) │ │ │
│ │ │ └─────────────┬────────────────┘ │ │
└──────────┼───────────────────────┼────────────────┼───────────────────┘
│ │ │ WebSocket
▼ │ ▼
┌──────────────────────────────────┴────────────────────────────────────┐
│ Moodle MCP Server (Hosted) │
│ Routes commands · Never sees your credentials │
└───────────────────────────────────────────────────────────────────────┘
关键原则: 您的Moodle凭据永远不会离开您的浏览器。服务器仅在您的AI助手和浏览器扩展之间路由命令。
组件
| 组件 | 描述 |
|---|---|
服务器 (server/) |
基于Hono的Node.js服务器,具有Google OAuth、JWT auth、WebSocket桥 |
浏览器扩展 (browser-extension/) |
在Moodle会话中执行MCP命令的Chrome扩展程序 |
MCP远程 (mcp-remote/) |
仅支持stdio的MCP客户端的通用stdio到HTTP网桥 |
快速开始
用户(托管服务)
- 注册 在托管服务上(从管理员处获取URL)
- 获取API密钥 从仪表板
- 安装扩展 从仪表板
- 配置AI客户端 (参见 安装指南)
开发者(本地)
# Clone and install
git clone https://github.com/arunlakhotia/moodle-mcp.git
cd moodle-mcp/server
npm install
# Configure environment
cp env.example .env
# Edit .env with your Google OAuth credentials
# Start server
npm run dev
然后:
- 负载
browser-extension/在Chrome浏览器中(chrome://extensions→ 开发者模式→ 装载未包装) - 访问
http://localhost:8080/dev创建测试凭据 - 配置您的AI客户端(见下文)
AI客户端配置
游标IDE(带stdio桥)
Cursor需要基于stdio的MCP服务器。使用 mcp-remote 桥梁:
cd mcp-remote && npm install
添加到 .cursor/mcp.json:
{
"mcpServers": {
"moodle": {
"command": "npx",
"args": ["tsx", "/path/to/moodle-mcp/mcp-remote/src/index.ts"],
"env": {
"MCP_SERVER_URL": "http://localhost:8080",
"MCP_API_KEY": "your-api-key"
}
}
}
}
克劳德桌面(SSE传输)
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或 %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"moodle": {
"transport": {
"type": "sse",
"url": "http://localhost:8080/mcp/sse"
},
"headers": {
"Authorization": "Bearer your-api-key"
}
}
}
}
可用工具
导航和内容
| 工具 | 说明 |
|---|---|
browse_moodle |
导航到任何Moodle URL |
extract_page_content |
从当前页面获取内容 |
click_element |
点击页面上的元素 |
type_text |
在输入字段中键入 |
set_editor_content |
在Moodle富文本编辑器中设置HTML |
课程
| 工具 | 说明 |
|---|---|
get_courses |
列出您注册的课程 |
open_course |
导航到特定课程 |
get_course_content |
获取课程活动和资源 |
get_course_sections |
获取节ID和名称 |
参与者和用户
| 工具 | 说明 |
|---|---|
list_participants |
列出具有角色的已注册用户 |
get_enrolled_users |
获取注册用户详细信息 |
send_message |
向用户发送直接消息 |
bulk_send_message |
向多个用户发送消息 |
作业
| 工具 | 说明 |
|---|---|
list_assignments |
列出带截止日期的作业 |
get_assignment |
获取任务详细信息 |
get_assignment_submissions |
获取提交状态 |
create_assignment |
创建新任务 |
edit_assignment |
修改分配设置 |
extend_assignment_deadline |
资助期限延长 |
bulk_shift_deadlines |
更改多个截止日期 |
论坛
| 工具 | 说明 |
|---|---|
forum_list_discussions |
列出论坛讨论 |
find_forum_discussion |
按主题搜索讨论 |
create_forum_post |
创建新讨论 |
delete_forum_discussion |
删除讨论 |
analyze_forum |
获取参与统计数据 |
反馈活动
| 工具 | 说明 |
|---|---|
find_activity |
按名称/类型查找任何活动 |
analyze_feedback |
获取响应统计信息 |
课程管理
| 工具 | 说明 |
|---|---|
edit_section |
重命名课程部分 |
add_section |
添加新章节 |
delete_section |
删除部分 |
hide_section |
显示/隐藏部分 |
move_section |
重新排序章节 |
enable_editing |
启用编辑模式 |
安全与隐私
- 🔐 凭证保留在本地 --您的Moodle会话永远不会离开您的浏览器
- 🔑 API密钥被散列 --服务器仅存储哈希值
- 🚫 无数据存储 --服务器仅路由命令
- 🔒 HTTPS/WSS --所有流量在生产中加密
- 🎓 符合FERPA标准 --学生PII在到达人工智能服务之前被屏蔽
学生数据保护
Moodle MCP通过以下方式保护学生隐私 自动PII屏蔽:
Your Browser Cloud Server AI Service
───────────── ──────────── ──────────
"John Smith" → "M12345_name" → "M12345_name"
(real name) (masked token) (masked token)
在离开浏览器之前,学生姓名、电子邮件和ID将被匿名令牌替换。人工智能永远看不到真实的学生信息。 了解更多→
文档
许可证
MIT许可证——见 许可证
