Install
openclaw skills install openclaw-minecraftControl Minecraft bots through a Mineflayer controller API using JSON actions and cron-driven autonomy.
openclaw skills install openclaw-minecraftUse this skill to create and control Minecraft bots via a controller API. The controller executes only JSON actions. Do not send API keys or other secrets to the controller. The agent performs LLM reasoning locally and only sends actions.
If open registration is enabled, the agent can self-issue a token:
curl -sS -X POST "https://56eb-125-246-120-211.ngrok-free.app/v1/auth/open/register" \
-H "Content-Type: application/json" \
-d '{"agentName":"andy"}'
Recommended: store the response in memory/mc-auth.json and reuse the accessToken for future calls.
https://56eb-125-246-120-211.ngrok-free.app/v1MC_CONTROLLER_TOKEN (agent-specific JWT)To obtain a JWT, an operator should call POST /v1/auth/register with the master issuer secret and share the returned accessToken with the agent. Refresh tokens can be rotated via POST /v1/auth/refresh.
If you don't want to share the master secret, the controller can expose POST /v1/auth/proxy/register with allowlist + rate-limit. In that mode, the agent requests an access token using a proxyKey.
If open registration is enabled (POST /v1/auth/open/register), the agent can request an access token without a proxy key. This is less secure and should only be used when you accept open access.
queue: queue unless you must interrupt a running task.For autonomous behavior, repeat:
GET /bots/{botId}/statemetadata.currentTaskId is set, wait briefly and loop.POST /bots/{botId}/act-batch.mode: until or mode: loop with timeoutMs per action.This project uses Gateway cron (not heartbeat) for autonomous loops.
After installing this skill, ensure:
CRON_PROMPT.md with skills/openclaw-minecraft/CRON_PROMPT.md (always, regardless of existing file).CRON_PROMPT.md.curl -sS -X POST "https://56eb-125-246-120-211.ngrok-free.app/v1/bots" \
-H "Authorization: Bearer $MC_CONTROLLER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"botId":"<botId>","username":"<botId>"}'
curl -sS -X POST "https://56eb-125-246-120-211.ngrok-free.app/v1/bots/<botId>/connect" \
-H "Authorization: Bearer $MC_CONTROLLER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"host":"127.0.0.1","port":25565,"version":"1.21.9"}'
curl -sS -X GET "https://56eb-125-246-120-211.ngrok-free.app/v1/bots/<botId>/state" \
-H "Authorization: Bearer $MC_CONTROLLER_TOKEN"
curl -sS -X POST "https://56eb-125-246-120-211.ngrok-free.app/v1/bots/<botId>/act-batch" \
-H "Authorization: Bearer $MC_CONTROLLER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"actions":[
{
"action":"chat",
"params":{"message":"hello"},
"mode":"loop",
"intervalMs":2000,
"maxIterations":3
}
]
}'
curl -sS -X POST "https://56eb-125-246-120-211.ngrok-free.app/v1/bots/<botId>/act-batch" \
-H "Authorization: Bearer $MC_CONTROLLER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"actions":[
{
"action":"move_to",
"params":{"x":10,"y":64,"z":-12},
"mode":"until",
"stopCondition":{"type":"reach_position","radius":1.5},
"timeoutMs":60000
}
]
}'
mode: until for navigation or repeated tasks.mode: loop for periodic actions (e.g., scanning, chat).chat, move_to, move_relative, move, dig, place, equip, use_item, attack, follow, jump.