Install
$ agentstack add skill-zocomputer-skills-minecraft-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Minecraft Server Skill
Sets up and manages a Minecraft Java Edition server as a persistent Zo user service.
Setup
Setup is a two-step process:
Step 1: Run the setup script
bash /home/workspace/Skills/minecraft-server/scripts/minecraft.sh setup
This will:
- Detect the required Java version for the latest Minecraft release
- Install the correct Java via Adoptium (if not already installed or too old)
- Create
/home/workspace/minecraft-server/with the latest Minecraft server JAR - Accept the EULA
- Generate a default
server.properties - Create the
file start.shwrapper with JVM flags tuned to the system's available RAM
Step 2: Register as a Zo user service
After the setup script completes, you MUST register a persistent Zo user service using the register_user_service tool:
register_user_service(
label="minecraft-server",
protocol="tcp",
local_port=25565,
entrypoint="bash /home/workspace/minecraft-server/start.sh",
workdir="/home/workspace/minecraft-server"
)
This creates a TCP service (not a proxy link) that:
- Persists across Zo reboots
- Auto-restarts on crash via supervisor
- Has a stable
tcp_addr(e.g.ts4.zocomputer.io:10578) for players to connect to
After registration, share the tcp_addr from the service response with players — that's the Minecraft server address.
If the service already exists
Check with list_user_services. If a minecraft-server service is already registered, skip registration. Use update_user_service(service_id=...) to restart it if the entrypoint or config changed.
Post-setup recommendations
After the server is running, recommend these steps to the user and offer to execute them for the user:
- Enable whitelist for security (especially important with
online-mode=false):
``bash bash Skills/minecraft-server/scripts/minecraft.sh set white-list true bash Skills/minecraft-server/scripts/minecraft.sh whitelist bash Skills/minecraft-server/scripts/minecraft.sh restart ``
- Op themselves so they have admin commands in-game:
``bash bash Skills/minecraft-server/scripts/minecraft.sh op ``
- Create an initial backup once the world generates and they've verified it works.
Commands
All commands are run via the management script:
bash /home/workspace/Skills/minecraft-server/scripts/minecraft.sh
| Command | Description | | --- | --- | | setup | Full first-time setup (Java, JAR, EULA, start script) | | status | Check if the server is running and show connection info | | logs | Show recent server logs | | properties | Print current server.properties | | set | Change a server.properties value (e.g. set difficulty hard) | | whitelist | Add a player to the whitelist | | op | Give a player operator privileges | | restart | Restart the server (kills process, supervisor auto-restarts) | | backup | Create a backup of the world in minecraft-server/backups/ | | update | Download the latest server JAR and restart |
Configuration
Edit /home/workspace/minecraft-server/server.properties directly or use the set command.
Common settings:
difficulty— peaceful, easy, normal, hardgamemode— survival, creative, adventure, spectatormax-players— default 20motd— server message shown in the server listwhite-list— true/false to enforce whitelistpvp— true/falseview-distance— chunk render distance (default 10)level-seed— world seed
After changing properties, run restart to apply.
File Locations
- Server directory:
/home/workspace/minecraft-server/ - Server JAR:
/home/workspace/minecraft-server/server.jar - World data:
/home/workspace/minecraft-server/world/ - Properties:
/home/workspace/minecraft-server/server.properties - Backups:
/home/workspace/minecraft-server/backups/ - Start script:
file minecraft-server/start.sh - Logs:
/dev/shm/minecraft-server.logand/dev/shm/minecraft-server_err.log
Caveats
online-mode is set to false
The server defaults to online-mode=false to avoid issues with the server IP being blocked from reaching Mojang's session authentication servers (sessionserver.mojang.com returns 403). With online-mode=true, players might get "Invalid session" errors and cannot connect.
What this means:
- The server does NOT verify player identities with Mojang/Microsoft
- Anyone who knows the server address can join with any username
- Player UUIDs are offline-mode UUIDs (different from their Mojang UUIDs)
Mitigation: Always enable the whitelist (white-list=true) and only add trusted players. This is the primary access control when online-mode is off.
Offline UUIDs: Because online-mode=false, the server uses offline UUIDs instead of Mojang UUIDs. Entries in file whitelist.json and file ops.json must include the correct offline UUID or the server will reject players even if their name is listed. The offline UUID is computed as UUID v3(MD5("OfflinePlayer:" + username)). The whitelist and op commands in the management script generate these automatically — but if you ever edit these JSON files by hand, you must include the UUID. Example entry:
{"uuid": "87c5c7bc-81a1-30a4-81c3-7d1746521b14", "name": "PlayerName"}
Java version auto-detection
The setup and update commands auto-detect the Java version required by the latest Minecraft release and install it via Adoptium. Minecraft's Java requirements have been increasing rapidly (Java 21 → 25 in recent versions). If Adoptium hasn't packaged a new major Java version yet, the setup will fail — in that case, pin to the latest supported MC version manually.
Server port
The server binds to the PORT environment variable injected by Zo's service manager, not necessarily port 25565 locally. The external-facing address and port are provided by the TCP service's tcp_addr — that's what players use.
Notes
- The server MUST be registered as a Zo user service (TCP protocol) — not a proxy link. This ensures persistence, auto-restart, and a stable address.
- Players connect using the
tcp_addrfrom the registered service. - Heap size is auto-detected based on available RAM:
- <2GB RAM: 512MB max heap (tight — small player count, reduced view distance)
- 2-4GB: 1GB max heap
- 4-8GB: 2GB max heap
- 8-16GB: 4GB max heap
- 16GB+: 8GB max heap
- View distance is also scaled down on low-RAM systems (6 chunks at <2GB vs 12 at 8GB+)
- The generated
file start.shbakes in the heap values at setup time. Re-runsetupafter a hardware change to recalculate, or editfile start.shmanually. - The restart command kills the Java process; the supervisor automatically restarts it.
- Free plan compatibility: The skill works on free-tier Zo plans with reduced RAM. The server will run but with lower heap and view distance, which means fewer concurrent players and shorter render range. For a playable experience with 1-3 players, even 512MB-1GB heap is viable. It is recommended to upgrade the plan though otherwise.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: zocomputer
- Source: zocomputer/skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.