A CLI tool for creating and managing Minecraft modpacks
Project description
Modpack Manager (mpm) v1.0.3
An interactive CLI tool for creating and managing Minecraft (Java Edition) modpacks via the Modrinth platform.
Note: Version 1.0.2 was skipped due to PyPI package uploading issues.
Features
- Create & Manage Modpacks with custom names, versions, and Minecraft versions
- Multiple Loader Support: Fabric, Forge, Quilt, and NeoForge
- Auto Loader Version Detection for all supported loaders
- Mod Management: Add, remove, list mods with required/optional status
- Import/Export: Import from modrinth.index.json or export your own format
- Build & Archive: Generate modrinth.index.json with automatic build archiving
- Version Management: Update modpack and mod versions
- Smart Updates: Check for mod updates with selective update options
- Direct CLI Mode: All commands support non-interactive flags for scripting
- Auto Minecraft Version Detection: Fetches latest MC version from Modrinth API automatically
- Auto Dependency Resolution: Optional automatic dependency installation when adding mods
- API Caching: Reduces redundant Modrinth API calls
Installation
From PyPI (Recommended)
pip install mcmpm
From GitHub
pip install git+https://github.com/AhmedShah29/MP-Manager.git
From Source
git clone https://github.com/AhmedShah29/MP-Manager.git
cd MP-Manager
pip install .
Usage
Interactive Mode
mpm
Direct CLI Mode
# Create modpack non-interactively (auto-detects latest MC version)
mpm -n --name "MyPack" --loader fabric --mc-version 26.1.2
# Add mod
mpm -am AANobbMI --t # required mod
mpm -am AANobbMI --f # optional mod
# Open, build, list
mpm -omp "MyPack"
mpm -mpb
mpm -lmp
# Show help
mpm -help
mpm --help
mpm -h
Commands
| Command | Description | Direct Flags |
|---|---|---|
-n |
Create new modpack | --name, --loader, --mc-version, --loader-version |
-imp |
Import from app export | (interactive) |
-imp-mr |
Import from modrinth.index.json | (interactive) |
-mpe |
Export modpack to JSON | (interactive) |
-omp <name> |
Open modpack | name positional arg |
-emp |
Deactivate modpack | — |
-am [id] |
Add mod | --t (required), --f (optional) |
-rm |
Remove mod (interactive) | — |
-rmp |
Remove modpack completely | — |
-lmp |
List modpacks | — |
-lm |
List mods | — |
-mpi |
Show modpack info | — |
-mpb |
Build modrinth.index.json | — |
-mpvc |
Change version & update mods | — |
-mu |
Check and apply updates | — |
-help, -h, --help |
Show all commands | — |
File Structure
# Config (platform-specific)
# Linux/macOS: ~/.config/mpm/config.json
# Windows: %LOCALAPPDATA%\Modpack Manager\mpm\config.json
{storage_path}/
└── {modpack}/
├── modpack.json # Main data file
├── build/
│ └── modrinth.index.json # Export file
└── build_archive/
└── build_YYYYMMDD_HHMMSS/
├── modrinth.index.json
└── modpack.json # Backup of app data
Key Features
Smart Build System
- Mods with complete metadata are included in
modrinth.index.json - Mods with missing data stay in
modpack.jsonbut are excluded from build - Clear reporting of included/excluded mods
Archive System
When archiving old builds, both files are saved:
modrinth.index.json- The Modrinth-compatible exportmodpack.json- Complete app data backup- Auto-cleanup: Only the 10 most recent archives are kept
Update Handling
-mpvc: Change MC version with option to keep unsupported mods-mu: Check for updates within same MC version- Selective updates: choose specific mods or update all
- Loader compatibility check: Verifies loader exists for new MC version before updating
Environment Variables
| Variable | Purpose |
|---|---|
MPM_STORAGE_PATH |
Override the modpack storage path (stored in config) |
Requirements
- Python 3.8+
requests(auto-installed)platformdirs(auto-installed)
Development
pip install -r requirements.txt
python -m unittest test_mpm -v
Package Structure
mpm/
├── __init__.py # Package init with version info
├── __main__.py # Entry point with argparse CLI
├── core.py # Main ModpackManager class
└── ...
Notes
- Config stored in platform-specific config directory via
platformdirs - Get Project IDs from mod pages on Modrinth
- Generated
modrinth.index.jsoncan be used for.mrpackfiles
License
MIT License - See LICENSE file for details
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcmpm-1.0.3.tar.gz.
File metadata
- Download URL: mcmpm-1.0.3.tar.gz
- Upload date:
- Size: 24.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fe086fc0276d6365afae81c923d2c416dd6fccb755df4625cc16a68509c3eb8
|
|
| MD5 |
becdda9253b3902686bfe0961fac8843
|
|
| BLAKE2b-256 |
634dc8a5f40cdbacf6c1b9c00d611c0da8a6a1171acb21c33ff95100544f5051
|
Provenance
The following attestation bundles were made for mcmpm-1.0.3.tar.gz:
Publisher:
publish-to-pypi.yml on AhmedShah29/MP-Manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcmpm-1.0.3.tar.gz -
Subject digest:
3fe086fc0276d6365afae81c923d2c416dd6fccb755df4625cc16a68509c3eb8 - Sigstore transparency entry: 1383352897
- Sigstore integration time:
-
Permalink:
AhmedShah29/MP-Manager@56af9ad2aefc0ab755ec51c2723611643bfdb826 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/AhmedShah29
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@56af9ad2aefc0ab755ec51c2723611643bfdb826 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcmpm-1.0.3-py3-none-any.whl.
File metadata
- Download URL: mcmpm-1.0.3-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d336f817f7758fa5a815aa248c44c4f893a81c5f2fb79241ecce0576f6adb01d
|
|
| MD5 |
47cef2be9f3db563bd29d1bbb1c2c826
|
|
| BLAKE2b-256 |
b9eb3b195b718685f832c01a84ee6f369475d28107c345789b4f24510ba5bf14
|
Provenance
The following attestation bundles were made for mcmpm-1.0.3-py3-none-any.whl:
Publisher:
publish-to-pypi.yml on AhmedShah29/MP-Manager
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcmpm-1.0.3-py3-none-any.whl -
Subject digest:
d336f817f7758fa5a815aa248c44c4f893a81c5f2fb79241ecce0576f6adb01d - Sigstore transparency entry: 1383352920
- Sigstore integration time:
-
Permalink:
AhmedShah29/MP-Manager@56af9ad2aefc0ab755ec51c2723611643bfdb826 -
Branch / Tag:
refs/tags/v1.0.3 - Owner: https://github.com/AhmedShah29
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yml@56af9ad2aefc0ab755ec51c2723611643bfdb826 -
Trigger Event:
push
-
Statement type: