moodle-connector

Moodle REST API client, batch downloader, and MCP server for Claude Code integration

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "moodle-connector" with this command: npx skills add Jabir Iliyas Suraj-Deen/moodle-connector-skill

Moodle Connector

Full-featured Moodle REST API client with batch downloading and MCP protocol support for Claude Code and OpenCode.

Features

Complete Moodle API Access

  • List courses, check grades, track assignments
  • Fetch materials, deadlines, announcements
  • Download files with aggressive caching

Multiple Integration Modes

  • CLI: python moodle_connector.py courses
  • Python Library: from moodle_connector import MoodleConnector
  • MCP Protocol: Native integration with Claude Code, OpenCode

Generic Batch Downloader

  • JSON-driven configuration (zero code modification)
  • Works with any Moodle module
  • Auto-organized by course name

Security

  • Encrypted credentials (PBKDF2 + Fernet)
  • Token management built-in
  • No secrets in git history
  • MIT licensed

Installation

Once installed via clawhub install moodle-connector:

cd ./skills/moodle-connector
pip install -r requirements.txt
playwright install chromium

Quick Start

1. Setup Moodle Token

cp config.template.json config.json
# Edit config.json with your Moodle web service token

2. Use CLI

python moodle_connector.py courses        # List all courses
python moodle_connector.py grades         # Check grades
python moodle_connector.py assignments    # View assignments
python moodle_connector.py materials --course-id 44864
python moodle_connector.py download "https://mytimes.taylors.edu.my/..." --output myfile.pdf
python moodle_connector.py summary        # Full markdown export

3. Use Python Library

from moodle_connector import MoodleConnector
from pathlib import Path

connector = MoodleConnector(
    config_path=Path('config.json'),
    password='encryption-password'
)

courses = connector.courses()
grades = connector.grades()
assignments = connector.assignments()
materials = connector.materials()
deadlines = connector.deadlines()
announcements = connector.announcements()
content = connector.summary()

# Download with caching
file_content = connector.download("https://...")

4. Batch Download (Any Module)

cp downloads.example.json downloads.json
# Edit downloads.json to add modules and file URLs
python batch_downloader.py

Output Structure:

downloads/
├── Your_Module_Name_1/
│   ├── file1.pdf
│   ├── file2.zip
│   └── ...
└── Your_Module_Name_2/
    ├── lecture.pdf
    └── ...

MCP Integration (Claude Code / OpenCode)

REQUIRED: Set MOODLE_CRED_PASSWORD environment variable before starting Claude Code.

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "moodle-connector": {
      "command": "python",
      "args": ["./skills/moodle-connector/mcp_server.py"],
      "env": {
        "MOODLE_CRED_PASSWORD": "your-encryption-password"
      }
    }
  }
}

Important: Replace your-encryption-password with your actual encryption password used in config.json.

Restart Claude Code. All 8 Moodle functions are now available as native MCP tools:

  • courses() — List enrolled courses
  • grades() — Get grades
  • assignments() — Get assignments
  • materials() — Get course materials
  • deadlines() — Get upcoming deadlines
  • announcements() — Get course news
  • download(url, output?) — Download files
  • summary() — Get complete data export

Configuration

Moodle Token (config.json)

{
  "moodle": {
    "base_url": "https://mytimes.taylors.edu.my",
    "web_service_token": "YOUR_TOKEN_HERE"
  },
  "cache": {
    "api_ttl_seconds": 300
  }
}

Batch Downloader (downloads.json)

{
  "downloads": [
    {
      "module": "Machine Learning",
      "course_id": 44864,
      "files": [
        {
          "name": "Week1.zip",
          "url": "https://mytimes.taylors.edu.my/webservice/pluginfile.php/..."
        }
      ]
    }
  ]
}

Requirements

  • Python 3.10+
  • requests ≥2.31.0
  • cryptography ≥41.0.0
  • playwright ≥1.40.0
  • mcp ≥0.1.0 (for MCP server)

Supported Moodle Instances

Tested with:

  • Taylor's University (mytimes.taylors.edu.my)
  • Should work with any Moodle 3.x+ instance

Security Notes

  • Environment-enforced: MOODLE_CRED_PASSWORD is required — no hardcoded defaults
  • Error sanitization: MCP server sanitizes errors, no internal details leaked to clients
  • Encrypted credentials: PBKDF2 (480K iterations) + Fernet encryption
  • Safe for headless: Use MOODLE_CRED_PASSWORD env var for automation
  • Git-safe: Never commit config.json with real tokens
  • No telemetry: No external data transmission or logging

Troubleshooting

"Invalid parameter value detected" for calendar API

Use assignments() instead — gets same deadline info.

Browser MFA not triggering

Run: python moodle_connector.py login for manual token retrieval.

File download stuck

Check network. Increase timeout in code or clear cache: rm -rf cache/

License

MIT — See LICENSE file for details. You are free to use, modify, and distribute this software.

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request
  4. Agree to license your work under GPLv3

Author

Jabir Iliyas Suraj-Deen


GitHub: https://github.com/Jabir-Srj/moodle-connector Release: v1.0.0 (March 17, 2026) python moodle_connector.py login for manual token retrieval.

File download stuck

Check network. Increase timeout in code or clear cache: rm -rf cache/

License

MIT — See LICENSE file for details. You are free to use, modify, and distribute this software.

Contributing

Contributions welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request
  4. Agree to license your work under MIT

Author

Jabir Iliyas Suraj-Deen


GitHub: https://github.com/Jabir-Srj/moodle-connector Release: v1.0.0 (March 17, 2026) ** v1.0.0 (March 17, 2026)

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Research

Caring CourseForge

Create and manage online courses via the CourseForge API (caringcourseforge.com). Use when the user wants to create courses, modules, lessons, generate AI content, export to SCORM/xAPI, manage knowledge libraries, or interact with the CourseForge platform. Handles course building, content generation, quizzes, accessibility validation, and course export.

Registry SourceRecently Updated
1.3K2Profile unavailable
Automation

Moodle Web Services Skill

Integrate with Moodle 4.x via REST Web Services to create courses, manage enrollments, activities, grades, and list courses or students.

Registry Source
6950Profile unavailable
Coding

Feishu Skills Kit 飞书技能全集

Complete Feishu (Lark) Skills collection for Claude Code / OpenClaw. Includes 10 skills covering: document management, messaging, spreadsheets, Bitable, inte...

Registry SourceRecently Updated
1.1K1Profile unavailable
Coding

公众号草稿 / 发布(微信 API)

公众号发布|公众号草稿箱|公众号群发|图文推送|微信 API|wechat automation|WeChat API automation|auto publish|scheduled publish — 公众号 API 发布工具,图文入草稿箱或直接群发,支持封面素材上传、发布前检查与 draft/publis...

Registry SourceRecently Updated
1811Profile unavailable