A lightweight and simple self-hosted Minecraft account pool manager. Sign in with Microsoft accounts, store tokens, and keep them fresh automatically. All accessible from a web interface.
Important
This is designed for single-user, local use. There is no authentication or input sanitization. Do not expose this to the public internet.
- Microsoft device code login flow
- Import accounts via refresh tokens (single or bulk)
- Automatically refresh expired tokens every 30 minutes
- Copy session and refresh tokens per account
- Export selected accounts as
sessiontoken:refreshtokenper line - 3D skin viewer with live preview
- Skin uploading (classic/slim)
- Cape management (equip, hide, preview on hover)
- Username changing with availability check
- REST API for programmatic access
- Dark-themed web interface
- Backend: Java 25, Javalin, MinecraftAuth
- Frontend: Vanilla HTML/CSS/JS, skinview3d
- Database: SQLite
- Build: Gradle
-
Create a
docker-compose.yml:services: mcap: image: ghcr.io/aurickk/mcap:latest ports: - "7070:7070" volumes: - ./data:/app/data
-
Start the container:
docker compose up -d
To stop: docker compose down
Requires Java 25 or later.
-
Download
mcap-<version>.jarfrom the latest release -
Run:
java -jar mcap-<version>.jar
-
Clone the repository:
git clone https://github.com/Aurickk/MCAP.git cd MCAP -
Build and run:
./gradlew run
Set in docker-compose.yml:
- Port: Change the left side of
ports(e.g."8080:7070"to expose on port 8080) - Environment variables:
| Variable | Default | Description |
|---|---|---|
MCAP_DB |
/app/data/mcap.db |
SQLite database path |
MCAP_REFRESH_MINUTES |
30 |
Token auto-refresh interval |
| Method | Path | Description |
|---|---|---|
GET |
/api/accounts |
List all accounts |
GET (SSE) |
/api/accounts/login |
Start device code login |
POST |
/api/accounts/login/token |
Import via refresh token |
POST |
/api/accounts/{id}/refresh |
Refresh account tokens |
DELETE |
/api/accounts/{id} |
Remove account |
GET |
/api/accounts/{id}/profile |
Fetch skin/cape data |
POST |
/api/accounts/{id}/skin |
Upload skin |
PUT |
/api/accounts/{id}/cape |
Equip cape |
DELETE |
/api/accounts/{id}/cape |
Hide cape |
GET |
/api/accounts/name/{name}/available |
Check username availability |
PUT |
/api/accounts/{id}/name |
Change username |