mmm is a lightweight, dependency-aware CLI tool to manage Minecraft mods from Modrinth. It downloads, tracks, and resolves dependencies automatically — no launcher, no GUI, no bloat.
Each project directory keeps its own profile.json (version/loader) and metadata.json (installed mods), so you can manage multiple modpacks independently.
- Automatic Dependency Resolution — Required dependencies are downloaded recursively; optional deps are skipped.
- Per-Directory Profiles — Set a different version/loader for each modpack folder.
- Bulk Installation — Install multiple mods at once via comma-separated names, search indexes, or
.txtfiles. - Smart Search — Filter by Minecraft version and mod loader, or disable filters to search everything.
- Dependency-Aware Removal — Warns if other mods depend on what you're removing.
- One-Command Update — Update all installed mods to the latest version in one go.
- Autoremove Orphans — Clean up unused dependencies in one command.
- SHA-512 Verification — Every download is checksum-verified automatically.
- No Login Required — No API key, no account, no background services. Just
mmmand a terminal. - Rich Terminal UI — Colorful, structured output via the rich library.
- Python 3.8+
- pip (Python package installer)
- rich — installed automatically during setup
git clone https://github.com/lque36708-pixel/MinecraftModManager.git
cd MinecraftModManager
./install.sh
source ~/.bashrcThe install script adds an alias to ~/.bashrc:
alias mmm="python3 /path/to/MinecraftModManager/mmm.py"If you use zsh, add the alias to ~/.zshrc manually after cloning:
echo 'alias mmm="python3 /path/to/MinecraftModManager/mmm.py"' >> ~/.zshrc
source ~/.zshrc- Install Python 3.8+ from python.org — ensure Add to PATH is checked.
- Allow script execution (one-time), then clone and install:
Restart your terminal, then try
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser git clone https://github.com/lque36708-pixel/MinecraftModManager.git cd MinecraftModManager pip install rich .\install.ps1
mmm --helpfrom any directory.
mmm --helpYou should see the mmm logo, a list of commands, and usage notes.
cd MinecraftModManager
git pullThat's it — no build step, no reinstall needed.
# 1. Go to your mods folder
cd ~/minecraft/mods
# 2. Set your Minecraft version and loader
mmm set-profile 1.21.1 fabric
# 3. Install mods (dependencies resolved automatically)
mmm get sodium, lithium, iris
# 4. See what's installed
mmm list
# 5. Remove a mod (warns if other mods depend on it)
mmm remove sodium
# 6. Update all mods to latest versions
mmm update
# 7. Clean up orphaned dependencies
mmm autoremoveSet the Minecraft version and mod loader for the current directory.
mmm set-profile 1.21.1 fabric
mmm set-profile 1.20.4 forge
mmm set-profile 1.21 neoforgeLoaders: fabric, forge, quilt, neoforge
This creates a profile.json file in the current directory. Every command that needs a profile (search, get, show, list, remove, autoremove) will check for this file and warn you if it's missing.
Search Modrinth for mods matching your query. Results are numbered and can be referenced by index in get, show, or remove.
mmm search sodium # uses profile version/loader
mmm search "performance" -n 15 # show 15 results instead of 10
mmm search sodium --no-filter # ignore profile, search all
mmm search sodium --filter-version 1.20.4 # override version filter
mmm search sodium --filter-loader forge # override loader filterFlags:
-n <count>— Number of results (default: 10)--no-filter— Don't filter by profile version/loader--filter-version <version>— Override the version filter--filter-loader <loader>— Override the loader filter
Install one or more mods to the current directory. Required dependencies are resolved and downloaded automatically.
<name> is a search query, not a precise slug. The program searches Modrinth and installs the first matching result.
mmm get sodium # searches "sodium", installs first result
mmm get sodium, lithium, iris # multiple mods (comma-separated)
mmm get -i 1 # install cached search result #1
mmm get -i 1,3,5 # install cached search results #1, 3, 5
mmm get -f mods.txt # read mod names from a file
mmm get immediately fast, sodium # "immediately fast" is one mod nameFile format (-f):
sodium
lithium
iris
immediately fast
Alias: mmm install (same as mmm get)
Display full details about a mod: version, file size, dependencies, checksums, and the full Markdown description.
mmm show sodium # by slug name
mmm show -i 1 # by search/list indexShow all tracked mods in the current directory, including file sizes and the dependency graph.
mmm list
mmm ls # aliasRemove installed mods. Warns if any other mod depends on the one being removed.
mmm remove sodium # by name
mmm remove -i 1 # by search/list index
mmm remove sodium, lithium # multiple
mmm remove -a # remove everything (nuclear)Alias: mmm rm (same as mmm remove)
Update installed mods to the latest version. New dependencies introduced by the updated version are auto-installed.
mmm update # update all mods (requested + deps)
mmm update sodium # update specific mod
mmm update sodium, lithium # update multiple mods
mmm update --dry-run # preview without downloadingDisplay the current profile settings (Minecraft version, loader) and the cache directory information.
mmm profilecd ~/minecraft/mods
mmm set-profile 1.21.1 fabric
mmm get sodium, lithium, iris, immediately fast
mmm get ferritecore, entityculling, modernfix, krypton
mmm get sodium-extra
mmm list # verify everything installedmmm search "chunk loading"
mmm show -i 1
mmm get -i 1# mods.txt:
# sodium
# lithium
# iris
# ferritecore
mmm get -f mods.txtyour-mods-folder/
├── profile.json # Minecraft version, loader (created by set-profile)
├── metadata.json # Tracked mods, versions, checksums
├── sodium-0.6.0+mc1.21.jar
├── fabric-api-0.102.0+mc1.21.jar
└── ...
When you run mmm get sodium, it:
- Queries Modrinth for the best version matching your profile.
- Downloads the
.jarfile to the current directory. - Reads the mod's dependencies from Modrinth's API.
- Recursively downloads any required dependencies (optional deps are skipped).
- Records all installed files in
metadata.json.
When you run mmm remove sodium, it checks metadata.json to see if any other installed mods list sodium as a dependency. If so, it warns you before proceeding.
You're in a folder that doesn't have a profile.json. Either:
# Option A — Set a profile in the current folder
mmm set-profile 1.21.1 fabric
# Option B — Move to your mods folder and try again
cd ~/minecraft/mods
mmm list- Try
--no-filterto search without version/loader restrictions. - Make sure the mod name is correct (it uses Modrinth slugs).
- Some mods may only be on CurseForge — mmm only supports Modrinth.
Modrinth's API allows 300 requests per minute. This is more than enough for normal use.
cd MinecraftModManager
./uninstall.shRemove the cloned folder if you no longer need it:
rm -rf MinecraftModManager- Run the uninstall script (removes repo from PATH):
cd MinecraftModManager .\uninstall.ps1
- Delete the cloned folder.
- Optionally remove
rich:pip uninstall rich
| Command | Alias | Description |
|---|---|---|
set-profile <ver> <loader> |
— | Set MC version and loader for this directory |
search <query> |
— | Search Modrinth for mods |
get <name> |
install |
Install mod(s) — searches and takes first result |
show <name> |
— | Show detailed mod info |
list |
ls |
List installed mods |
remove <name> |
rm |
Remove mod(s) |
update [name] |
— | Update all (or specific) installed mods to latest version |
autoremove |
— | Clean up orphaned dependencies |
profile |
— | View current profile |
- Mods always install to the current working directory, not to a system location.
- Only required dependencies are auto-installed; optional deps are skipped.
- Commas separate multiple mod names:
mmm get sodium, lithium, iris - Spaces are part of the mod name:
mmm get immediately fastinstalls "Immediately Fast" - Every download is verified against its SHA-512 hash.
- Profile and metadata are stored as plain JSON — easy to edit or back up.
- No login, no API key, no telemetry, no background processes.