Moodle集成服务

一个提供与Moodle学习管理系统(LMS)通过其Web Services API交互的工具和资源的Model Context Protocol (MCP)服务器实现。

  • by theredbluepill
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 spoonbobo/moodle-mcp-server

使用说明

Moodle MCP服务器

一种模型上下文协议(MCP)服务器实现,通过其Web服务API提供与Moodle学习管理系统(LMS)交互的工具和资源。

特性

此MCP服务器为Moodle集成提供了全面的工具:

课程管理

  • get_course:获取特定课程的详细信息
  • get_courses:列出具有可选类别筛选的课程
  • 创建课程:在Moodle中创建新课程
  • get_course_enrollments:让用户注册课程
  • get_course_assignments:从课程中获取作业
  • get_course_forums:从课程中获取论坛

用户管理

  • get_user:通过ID、用户名或电子邮件获取用户信息
  • 搜索用户:按姓名、用户名或电子邮件搜索用户
  • 注册用户:为用户注册具有指定角色的课程

系统信息

  • get_site_info:获取一般网站信息和功能

资源

  • moodle://course/{course_id} -带有web界面链接的课程数据
  • moodle://user/{user_id} -带有web界面链接的用户数据
  • moodle://course/{course_id}/enrollments -课程报名数据
  • moodle://course/{course_id}/assignments -课程作业
  • moodle://courses -课程列表

安装

先决条件

  • Python 3.10或更高版本
  • 启用了Web服务的Moodle实例
  • 有效的Moodle Web服务令牌

设置

  1. 克隆或下载此MCP服务器

  2. 使用UV安装依赖项:

    uv sync
    

    或者使用pip:

    pip install -e .
    

环境配置

设置所需的环境变量:

# Required
export MOODLE_BASE_URL="http://localhost:8080"
export MOODLE_TOKEN="e6e5019748dd95f7380bc25b1be120ba"

# Optional
export MOODLE_VERIFY_SSL="true"  # Set to "false" for self-signed certificates

或者对于PowerShell:

$env:MOODLE_BASE_URL="http://localhost:8080"
$env:MOODLE_TOKEN="e6e5019748dd95f7380bc25b1be120ba"

您也可以复制 env.example 向 .env 并使用您的凭据进行修改。

Moodle配置

  1. 启用Web服务 在您的Moodle网站上:

    • 转到管理→ 网站管理→ 高级功能
    • 启用“启用web服务”
  2. 创建Web服务令牌:

    • 转到管理→ 网站管理→ 服务器→ Web服务→ 管理代币
    • 为具有适当权限的用户创建新令牌
  3. 配置Web服务功能 (如果使用受限令牌):

    • 确保启用以下功能:
      • core_course_get_courses_by_field
      • core_course_get_courses
      • core_course_create_courses
      • core_user_get_users_by_field
      • core_user_get_users
      • core_enrol_get_enrolled_users
      • enrol_manual_enrol_users
      • mod_assign_get_assignments
      • mod_forum_get_forums_by_courses
      • core_webservice_get_site_info

用法

运行服务器

使用紫外线:

uv run moodle-mcp-server

或者使用Python:

python -m moodle_mcp.main

或者,如果全局安装:

moodle-mcp-server

与MCP客户端集成

添加到MCP客户端配置中:

{
  "moodle": {
    "command": "moodle-mcp-server",
    "env": {
      "MOODLE_BASE_URL": "http://localhost:8080",
      "MOODLE_TOKEN": "e6e5019748dd95f7380bc25b1be120ba"
    }
  }
}

示例用法

获取课程信息

# Get course with ID 123
course = await get_course(course_id=123)
print(f"Course: {course['courses'][0]['fullname']}")
print(f"Web URL: {course['courses'][0]['web_url']}")

搜索用户

# Search for users named "John"
users = await search_users(query="John", limit=10)
for user in users['users']:
    print(f"User: {user['fullname']} ({user['email']})")
    print(f"Profile URL: {user['web_url']}")

获取课程注册信息

# Get enrollments for course 123
enrollments = await get_course_enrollments(course_id=123)
print(f"Total enrolled: {enrollments['total_count']}")
for user in enrollments['enrolled_users']:
    print(f"- {user['fullname']} ({user['email']})")

创建新课程

# Create a new course
new_course = await create_course(
    fullname="Introduction to Python",
    shortname="PYTHON101",
    category_id=1,
    summary="Learn Python programming basics"
)
print(f"Created course: {new_course[0]['web_url']}")

API函数

认证

所有API请求都使用基于令牌的身份验证。令牌会自动包含在使用 MOODLE_TOKEN 环境变量。

错误处理

服务器包括全面的错误处理,并将返回详细的错误消息以进行调试。所有响应都包括适用的web界面URL,以便轻松导航到Moodle web界面。

Web界面集成

所有返回的数据都包括以下内容的直接web界面URL:

  • 课程页面
  • 用户配置文件
  • 作业页面
  • 论坛页面

这允许API访问和web界面导航之间的无缝集成。

发展

项目结构

mcp/moodle-mcp-server/
├── src/moodle_mcp/
│   ├── __init__.py
│   ├── server.py      # Main server implementation
│   └── main.py        # Entry point
├── pyproject.toml     # Project configuration
└── README.md         # This file

添加新工具

要添加新的Moodle Web服务功能,请执行以下操作:

  1. 将该功能添加到 server.py 使用 @mcp.tool 装饰器
  2. 使用 make_moodle_api_request() 用于API调用
  3. 使用辅助函数添加适当的web界面URL
  4. 更新中的可用操作列表 main.py

测试

该项目包括综合测试:

# Run all tests
uv run pytest tests/ -v

# Run simple working tests
uv run python tests/test_simple.py

# Run connectivity tests
uv run python tests/test_connectivity.py

使用以下工具设置测试环境:

  • Moodle开发实例
  • 测试具有适当权限的用户帐户
  • 测试示例课程和内容

测试文件包括:

  • test_simple.py -基本功能测试(始终通过)
  • test_connectivity.py -导入和连接测试
  • test_basic.py -单个组件的单元测试
  • test_moodle_api.py -全面的API和工具测试

故障排除

常见问题

  1. 403禁止的错误:

    • 运行诊断工具: uv run python tests/test_moodle_connection.py
    • 检查Moodle中是否启用了web服务
    • 验证令牌是否具有所需的权限
    • 确保启用了所需的web服务功能
  2. 身份验证错误:验证您的令牌并确保它具有所需的权限

  3. SSL验证:设置 MOODLE_VERIFY_SSL=false 用于自签名证书

  4. 缺少功能:确保Moodle中启用了所有必需的web服务功能

  5. 权限错误:验证令牌用户是否具有适当的功能

调试模式

通过设置环境变量启用调试日志记录:

export MOODLE_DEBUG=true

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交拉取请求

支持

关于以下问题:

  • MCP服务器:在此存储库中创建问题
  • Moodle配置:查阅Moodle文档
  • Web服务:查看Moodle Web服务文档