Moodle MCP服务器
 
嘿,维也纳大学的学生们,你们会喜欢这个的。 此MCP服务器连接 我们的Moodle (moodle.univie.ac.at)获得法学硕士学位。使用Cursor(或其他MCP客户端),您可以用简单的语言询问您的课程、材料和截止日期;人工智能通过该服务器使用Moodle的API进行应答。
它能做什么
| 工具 | 说明 |
|---|---|
| get_site_info | 您的Moodle身份: userid, username, fullname.使用 userid 对于其他工具。 |
| get_rolled_courses | 您注册的课程列表(最近的课程,最多12门)。 |
| get_course_contents | 课程结构:章节、模块名称和材料链接(资源、PDF等)。 |
| get_course_assignments | 课程作业:描述和截止日期(当Moodle通过API公开它们时)。 |
示例:向法学硕士询问一门课程
在Cursor中配置服务器后,您可以在聊天中提问。LLM将调用Moodle工具并总结结果。虚构课程示例:
你: 780012课程中有什么,我需要交什么?
LLM (打电话后 get_course_contents 和 get_course_assignments):
课程: 2025W 123456机器学习导论\ 课程ID: 780012 结构——5个部分: 1. 将军 --公告论坛 1. 第1-2周:基础知识 --幻灯片、阅读列表、第一堂课链接 1. 第3-4周:监督学习 --课堂讲稿,练习表1 1. 作业 --作业1和2的描述和提交链接 1. 考试 --范围和日期 作业: - 作业1——线性回归 (2026年4月1日到期):实施并报告。 - 作业2——分类 (2026年5月1日到期):在提供的数据集上训练分类器。
______________________________________________________________________
注: 这个项目刚刚开始,如果时间允许,将积极开发。可以添加更多功能(例如日历、成绩、论坛),服务器可以与Notion等工具一起用于计划和笔记。
需求
- Python 3.10+
- Uni Wien Moodle帐户和 web服务令牌 (如果您的教员/管理员已启用)
安装
git clone https://github.com/Ilya-Grigoryev/moodle-student-mcp.git
cd moodle-student-mcp
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e .无可编辑安装:
pip install -r requirements.txt
# Run with: PYTHONPATH=src python -m moodle_mcp.main配置(光标)
服务器需要 MOODLE_URL 和 MOODLE_TOKEN 在环境中。在Cursor中,您可以在MCP配置中设置它们,这样令牌就永远不会存在于文件中。
获取您的令牌
你使用现有的浏览器会话,没有额外的软件,也没有“真正的”黑客攻击——Moodle只需将令牌放在重定向URL中,你就可以捕获它。
- 登录Moodle 在浏览器中(例如通过Uni Wien SSO)。
- 打开DevTools (F12)→ 网络 选项卡,启用 保留日志.
- 打开移动启动URL 在同一浏览器中(与您的Moodle相同的网站):\
https://moodle.univie.ac.at/admin/tool/mobile/launch.php?service=moodle_mobile_app&passport=12345
- 捕获重定向: Moodle将重定向到以开头的URL
moodlemobile://token=...。在“网络”选项卡中,找到重定向(或从地址栏复制目标URL,如果它短暂出现在那里)。令牌位于该URL中。 - 提取密钥: 该值通常采用Base64编码。对其进行解码并获取32个字符的令牌(Moodle用于REST API的核心部分)。那是你的 MOODLE_TOKEN.
所以:你“欺骗”Moodle为你当前的会话发放一个移动令牌,并从重定向中读取它——不需要管理员权限。
光标MCP设置
- MOODLE_URL 维也纳大学:
https://moodle.univie.ac.at/webservice/rest/server.php. - 打开的游标 设置→ MCP (或编辑
~/.cursor/mcp.json在macOS上)。 - 添加这样的服务器条目(使用您的路径和令牌):
"moodle-student-mcp": {
"command": "/path/to/moodle-student-mcp/.venv/bin/python",
"args": ["-m", "moodle_mcp.main"],
"cwd": "/path/to/moodle-student-mcp",
"env": {
"PYTHONPATH": "/path/to/moodle-student-mcp/src",
"MOODLE_URL": "https://moodle.univie.ac.at/webservice/rest/server.php",
"MOODLE_TOKEN": "your_ws_token_here"
}
}使用 完整路径 到repo和venv的Python。保存并重新加载MCP(或重新启动Cursor)。
跑步
使用Cursor,您不需要自己运行服务器——Cursor会从以下位置启动它 mcp.json.对于本地测试:
MOODLE_URL=... MOODLE_TOKEN=... PYTHONPATH=src python -m moodle_mcp.main项目结构
| 文件 | 目的 |
|---|---|
| config.py | 阅读 MOODLE_URL 和 MOODLE_TOKEN 从环境中(例如从Cursor的mcp.json)。 |
| 客户端.py | HTTP客户端和 call_moodle_api 使用Moodle错误处理。 |
| tools.py | FastMCP服务器和四个工具。 |
| main.py | 入口点(mcp.run()). |
许可证
麻省理工学院——见 许可证.
