mcpField
M
moodle-cli

moodle-cli

github.com/nathanfredericksProductivity044 installsUpdated 5w ago
Repository

About moodle-cli

moodle-cli is a skill for guiding use of the `moodle` CLI to interact with the Moodle Learning Management System API. It covers authentication, courses, assignments and forums, with command references and JSON output examples for filtering with `jq`.

Key features

  1. 01Guidance for Moodle API commands
  2. 02Authentication and course workflows
  3. 03Assignment uploads and submissions
  4. 04Forum reading and posting
  5. 05JSON output and `jq` filtering
  6. 06Command reference lookup

Use cases

  1. 01Log in and inspect enrolled courses
  2. 02Upload and submit assignments
  3. 03Download course and assignment files
  4. 04Read or post in course forums

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/nathanfredericks/moodle-cli --skill moodle-cli

After installing, type/moodle-cliin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
moodle_assignment_download.md
moodle_assignment_due.md
moodle_assignment_get.md
moodle_assignment_list.md
moodle_assignment_status.md
moodle_assignment_submit.md
moodle_assignment_text.md
moodle_assignment_upload.md
moodle_assignment.md
moodle_auth_login.md
moodle_auth_logout.md
moodle_auth_status.md
moodle_auth_token.md
moodle_auth.md
moodle_config_get.md
moodle_config_list.md
moodle_config_set.md
moodle_config.md
moodle_course_content.md
moodle_course_download.md
moodle_course_get.md
moodle_course_grades.md
moodle_course_list.md
moodle_course_module.md
moodle_course_search.md
moodle_course.md
moodle_forum_delete.md
moodle_forum_discussions.md
moodle_forum_edit.md
moodle_forum_list.md

Details

From the project README

Moodle CLI Skill

You are helping a user run moodle — a CLI tool for interacting with the Moodle Learning Management System API.

Command Tree

moodle
├── auth                    # Manage authentication
│   ├── login               # Log in to a Moodle instance
│   ├── logout              # Log out of the Moodle instance
│   ├── status              # Show authentication status
│   └── token               # Print the authentication token
├── course                  # Manage courses
│   ├── list                # List enrolled courses
│   ├── get <id>            # Get course details
│   ├── search <query>      # Search courses
│   ├── content <id>        # Get course contents (sections, modules)
│   ├── module <id>         # Get course module details
│   ├── grades <id>         # View your course grades
│   └── download <id>       # Download module files
├── assignment              # Manage assignments
│   ├── list                # List assignments (--course to filter)
│   ├── get <id>            # Get assignment details
│   ├── status <id>         # Check submission status
│   ├── upload <id> <file>  # Upload files to an assignment
│   ├── submit <id>         # Submit assignment for grading
│   ├── text <id>           # View or update online text submission
│   └── download <id>       # Download submission files (-R for resources)
├── forum                   # Manage forums
│   ├── list                # List forums in a course (--course)
│   ├── discussions <id>    # List discussions in a forum
│   ├── read <id>           # Read a discussion thread
│   ├── post <id>           # Create a new discussion
│   ├── reply <id>          # Reply to a post
│   ├── edit <id>           # Edit a post
│   └── delete <id>         # Delete a post
├── user                    # Manage users
│   ├── whoami              # Show current user info
│   ├── list                # List users enrolled in a course (--course)
│   └── get <id>            # Get user by ID
├── config                  # Manage configuration
│   ├── list                # List all configuration settings
│   ├── get <key>           # Get a configuration value
│   └── set <key> <value>   # Set a configuration value
└── version                 # Print the version

Global Flags

Every command supports these flags:

FlagDescription
-f, --format <fmt>Output format: table, json, csv, yaml, plain
--no-colorDisable color output
-v, --verboseEnable verbose output
-h, --helpHelp for the command

Guidelines

Default to JSON output

When suggesting commands, prefer -f json for machine-readable output. Show users how to pipe to jq for filtering:

# List courses as JSON
moodle course list -f json

# Get a specific field
moodle course list -f json | jq '.[].fullname'

# Filter assignments by course
moodle assignment list --course 42 -f json | jq '.[] | {id, name, duedate}'

For quick human-readable output, the default table format works well — no flag needed.

Common Workflows

First-time setup:

moodle auth login --url https://moodle.example.com
moodle auth status          # verify login
moodle course list          # see enrolled courses

Assignment workflow:

moodle assignment list --course 42          # find assignment ID
moodle assignment get 101                   # check details and due date
moodle assignment upload 101 report.pdf     # upload file
moodle assignment submit 101 --accept-statement  # submit for grading
moodle assignment status 101                # verify submission

Forum workflow:

moodle forum list --course 42               # find forum ID
moodle forum discussions 5                  # list discussions
moodle forum read 100                       # read a thread
moodle forum reply 200 --message "Thanks!"  # reply to a post
moodle forum post 5 --subject "Question" --message "Hello"  # new discussion

Download assignment resources:

moodle assignment get 101                   # see attached resources
moodle assignment download 101 --resources  # download instructor-attached files
moodle assignment download 101 -R -o ./resources  # download to a directory

Download course files:

moodle course content 42                    # browse course sections
moodle course download 500                  # download a module's files
Filtering
  • Use --course <id> to filter assignments, forums, and users by course
  • Use positional <id> arguments for specific resources (courses, assignments, forums, users, modules)
  • Chain with jq for advanced filtering on JSON output
Configuration

Users can set defaults to avoid repeating flags:

moodle config set format json    # always output JSON
moodle config list               # see current settings

Reference Documentation

For detailed information about a specific command (flags, options, examples), read the corresponding file in the references/ directory:

  • Root command: references/moodle.md
  • Auth group: references/moodle_auth.md, references/moodle_auth_login.md, etc.
  • Course group: references/moodle_course.md, references/moodle_course_list.md, etc.
  • Assignment group: references/moodle_assignment.md, references/moodle_assignment_list.md, etc.
  • Forum group: references/moodle_forum.md, references/moodle_forum_list.md, etc.
  • User group: references/moodle_user.md, references/moodle_user_whoami.md, etc.
  • Config group: references/moodle_config.md, references/moodle_config_set.md, etc.
  • Version: references/moodle_version.md

The filename pattern is references/moodle_<group>_<command>.md. When the user asks about a specific command, read the reference file first to provide accurate flag names and usage details.

Comments

Markdown supported