MineCLI
MineCLI is a command-line tool for Minecraft server administrators. Its goal is to install, update, list, edit, and remove server-side mods, datapacks, and plugins across multiple Minecraft server types.
The CLI is designed to be package-source agnostic. Modrinth is the first implemented source for discovery and version metadata, but commands should stay generic enough to support local files, folders, and other registries later.
Current Status
This repository is in Phase 4: polish and distribution for production testing.
The current executable supports:
Install from the GitHub release:
|
Install globally with Cargo from Git:
Once MineCLI is published to crates.io, installation will become:
MineCLI stores per-server state in .minecli/ inside the server folder:
.minecli/
server.toml
lock.toml
history.log
backups/
Compatible Server Layouts
MineCLI can initialize directly from standard Minecraft server folders and from the Docker volume layout used by TheRemote/Legendary-Minecraft-Purpur-Geyser.
For that image, MineCLI detects:
purpur.jarandpurpur.ymlas a Purpur serverversion_history.json,versions/, andcache/as version hintsserver.propertieslevel-namefor the world/datapack pathplugins/as the plugin target
Example:
The implementation roadmap is tracked in:
- docs/GETTING_STARTED.md
- docs/SUPPORTED_SERVERS.md
- docs/SAFETY.md
- docs/MODRINTH.md
- docs/PACKAGING.md
- PROJECT_PLAN.md
- TASKS.md
- docs/SOURCES.md
Server Registry
MineCLI can remember server folders globally:
By default the registry is stored in the platform config directory as servers.toml. Use --config <path> or MINECLI_CONFIG_DIR to override the config directory.
Local Sources
Registry installs are not the only supported source. You can also install local files and folders:
Local installs are copied into the server's configured mods, plugins, or datapacks directory and tracked in .minecli/lock.toml with SHA-512/SHA-1 hashes.
When a package source reports a broad project type, MineCLI tries to infer the right install kind from versions compatible with the current server. For example, a project listed as a mod can still install as a Paper/Purpur plugin when a compatible plugin artifact exists.
Import, Export, And Sync
Existing server folders can be imported into MineCLI. Files are matched to source metadata by hash when possible; unmatched files stay unmanaged and visible in status.
MineCLI can also export a portable manifest, restore registry-backed packages into another server, or sync another local server's manifest and local files:
Local file and folder installs are copied during sync when the source server folder is available. Plain manifest restore skips non-portable local packages.
Modpacks
MineCLI can inspect and install the required server-side files from Modrinth .mrpack files:
Client-only packs are rejected. Optional server files are listed but skipped for now, and overrides/ plus server-overrides/ files are copied during install.
Datapacks
MineCLI can inspect and toggle datapacks without editing level.dat:
Disabled datapacks are moved to .minecli/datapacks-disabled/. If a datapack is tracked in lock.toml, MineCLI updates the tracked path when it is enabled or disabled.
Updates
Registry-backed installs can be checked and updated against the latest compatible release for the server's Minecraft version and loader:
Local file and folder installs are tracked in the lockfile but intentionally skipped by update commands.
Backups And Rollback
Update and remove operations create file backups before replacing or deleting tracked files:
Backups are stored under .minecli/backups/ with metadata that lets rollback restore both files and lockfile entries.
Editing And Diagnostics
edit opens .minecli/server.toml in $VISUAL or $EDITOR and validates the result. doctor --fix applies safe local fixes such as creating missing content directories and removing stale lockfile entries.
Development
Required tooling:
- Rust 1.85 or newer
- Cargo
Common commands:
Equivalent Cargo commands:
Production-oriented commands:
Live integration tests are ignored by default because they download real Fabric, Purpur, Forge, and NeoForge server artifacts and install packages from external sources:
Use --nocapture to see each downloaded artifact, detected server type, install target, lockfile listing, and cleanup check.
License
MineCLI is distributed under the MIT license. See LICENSE.