Minecraft Console ClientMinecraft Console Client
About & Features
Installation
Usage
Configuration
ChatBots
Help us translate
  • Afrikaans
  • اللغة العربية
  • Català
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • English
  • Español
  • Suomi
  • Français
  • עברית
  • Magyar
  • Italiano
  • 日本語
  • 한국어
  • Latviešu
  • Nederlands
  • Norsk
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Српски (Cyrillic)
  • Svenska
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
GitHub
About & Features
Installation
Usage
Configuration
ChatBots
Help us translate
  • Afrikaans
  • اللغة العربية
  • Català
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • English
  • Español
  • Suomi
  • Français
  • עברית
  • Magyar
  • Italiano
  • 日本語
  • 한국어
  • Latviešu
  • Nederlands
  • Norsk
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Српски (Cyrillic)
  • Svenska
  • Türkçe
  • Українська
  • Tiếng Việt
  • 简体中文
  • 繁體中文
GitHub
  • About & Features
  • Installation
  • Usage
  • Configuration
  • Creating Simple Script
  • Chat Bots
  • Creating Chat Bots
  • AI-Assisted Development
  • Contributing

AI-Assisted Development

This guide documents the MCC AI-assisted development workflow as a real working loop, not a patch generator running on guesses. The goal is to give the agent an environment it can drive on its own: build MCC, start a local server, send commands, inspect logs, and repeat. Once that loop is in place, iteration is faster and regressions are easier to catch.

If you are looking for the broader contributor entry point first, start with Contributing and then come back here for the agent workflow.

The practical goal is a closed loop:

Warning

If you develop on Windows, use WSL2. This workflow is built around Unix-style shells, tmux, python3, and shell helper functions. Do not try to run the full AI workflow from plain PowerShell or CMD.

Index

  • What This Workflow Covers
  • Setup
  • How The Harness Works
  • Repository Tools
  • Skills
  • Standard Development Loop
  • Testing And Validation
  • Version Adaptation Notes
  • Example Workflows

What This Workflow Covers

This is the workflow for:

  • local MCC development
  • local offline server testing
  • AI-assisted debugging
  • bot authoring
  • protocol and version adaptation work
  • documentation work that should still follow the same disciplined loop

It is built around two layers:

  • repo tools in tools/, which do the actual work
  • AI skills in .skills/, which tell the agent when and how to use those tools

Setup

You only do most of this once.

Windows: install WSL2 first

Open PowerShell as Administrator and run:

wsl --install

If WSL is already enabled and you specifically want Ubuntu, use:

wsl --install -d Ubuntu

If the install stalls at 0.0%, use:

wsl --install --web-download -d Ubuntu

Restart if Windows asks for it, then open the Ubuntu shell and finish the Linux user setup there.

From this point on, do MCC development inside WSL. That includes cloning the repo, building, running servers, and using AI agent tooling.

Reference: Microsoft WSL installation guide

Linux and macOS: use Bash or Zsh

Bash and Zsh both work with MCC's helper scripts.

Check your current shell:

echo $SHELL

Notes:

  • Bash is the normal baseline on Linux.
  • Zsh is the default interactive shell on modern macOS.
  • The helper script tools/mcc-env.sh can be sourced from either ~/.bashrc or ~/.zshrc.
Install Git

Ubuntu, Debian, and derivatives:

sudo apt update
sudo apt install git

Arch Linux:

sudo pacman -S git

macOS with Homebrew:

brew install git

Verify:

git --version

Reference: Git downloads

Install .NET SDK 10

MCC currently builds on .NET 10. You need the SDK, not just the runtime.

Supported Ubuntu releases and Ubuntu-based distros with the correct feed enabled:

sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0

Debian 12:

wget https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0

Debian 13:

wget https://packages.microsoft.com/config/debian/13/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0

Arch Linux:

sudo pacman -S dotnet-sdk

macOS with Homebrew:

brew install --cask dotnet-sdk

Verify:

dotnet --version

References:

  • Install .NET on Ubuntu
  • Install .NET on Debian
  • Homebrew dotnet-sdk cask
Install Java 21

The local server harness uses java directly, so Java 21 needs to be on your PATH.

Ubuntu and Ubuntu-based distros:

sudo apt update
sudo apt install openjdk-21-jdk

Debian:

Package availability varies by Debian release. If openjdk-21-jdk is not available in your configured repositories, install a current JDK 21 build from your preferred vendor instead of forcing a stale package name.

Arch Linux:

sudo pacman -S jdk21-openjdk

macOS with Homebrew:

brew install openjdk@21
sudo ln -sfn "$(brew --prefix openjdk@21)/libexec/openjdk.jdk" /Library/Java/JavaVirtualMachines/openjdk-21.jdk

Homebrew marks openjdk@21 as keg-only, which is why the symlink step matters.

Verify:

java -version

References:

  • Ubuntu openjdk-21-jdk package
  • Arch jdk21-openjdk package
  • Homebrew openjdk@21 formula
Install Python 3

Python 3 is required for the RCON helper and the version-adaptation tools.

Ubuntu, Debian, and derivatives:

sudo apt update
sudo apt install python3

Arch Linux:

sudo pacman -S python

macOS with Homebrew:

brew install python@3.14

Homebrew currently provides Python 3 through the python@3.14 formula, and aliases it as python and python3.

Verify:

python3 --version

References:

  • Ubuntu python3 package
  • Arch python package
  • Homebrew Python formula
Install tmux

The local Minecraft server runs in a tmux session so it can keep running while the agent builds and restarts MCC.

Ubuntu, Debian, and derivatives:

sudo apt update
sudo apt install tmux

Arch Linux:

sudo pacman -S tmux

macOS with Homebrew:

brew install tmux

Verify:

tmux -V
Clone the repo and initialize submodules

Clone with submodules in one step:

git clone https://github.com/MCCTeam/Minecraft-Console-Client.git --recursive

If you already cloned it without submodules:

git submodule update --init --recursive
Prepare a server version and decompiled source

From the repo root, use the decompiler helper to download the official server jar and create the decompiled source tree:

tools/decompile.sh --version 1.20.6

That creates the paths used by the harness and the version-adaptation workflow:

  • MinecraftOfficial/downloads/1.20.6/server.jar
  • MinecraftOfficial/1.20.6-decompiled/

If you are doing protocol work, this step is not optional.

Load the MCC shell helpers in Bash

Add this line to ~/.bashrc:

source "$HOME/Minecraft/Minecraft-Console-Client/tools/mcc-env.sh"

Reload the shell:

source ~/.bashrc

This gives you the helper functions used by the workflow:

  • mc-start
  • mc-stop
  • mc-cmd
  • mc-log
  • mc-rcon
  • mcc-build
  • mcc-run
  • mcc-cmd
  • mcc-kill
  • mcc-reload
Load the MCC shell helpers in Zsh

Add this line to ~/.zshrc:

source "$HOME/Minecraft/Minecraft-Console-Client/tools/mcc-env.sh"

Reload the shell:

source ~/.zshrc

If your clone lives somewhere else, update the path in the source line.

Verify the environment

Run these checks:

git --version
dotnet --version
java -version
python3 --version
tmux -V

Then make sure the helper functions are loaded:

type mc-start
type mcc-build
type mcc-run

How The Harness Works

AI agents do not get a rich interactive terminal in the same way a human does. That is why this workflow uses a harness instead of relying on live keyboard input.

The moving parts are:

  • a local Minecraft server running in tmux
  • mc-rcon for server-side commands such as /op, /give, /summon, or gamerule setup
  • MCC started with MCC_FILE_INPUT=1
  • FileInputBot, which watches mcc_input.txt and turns file lines into MCC commands or server chat
  • logs from MCC and the local server, which the agent can inspect between runs

The result is simple: the agent can change code, rebuild, start the app, inject commands, and read the result without waiting for a human to sit in the terminal.

Repository Tools

These are the repo-level tools that make the workflow practical.

PathPurpose
tools/mcc-env.shLoads the shell helper functions used for the normal loop.
tools/start-server.shStarts a local Minecraft server in a named tmux session with a FIFO for stdin.
tools/mc-rcon.shSends RCON commands to the local server using python3.
tools/decompile.shDownloads MinecraftDecompiler.jar if needed, decompiles the requested Minecraft version, and fetches server.jar for server-side work.
tools/diff_registries.pyCompares registries between two Minecraft versions to show which palettes need updates.
tools/gen_item_palette.pyGenerates item palette source from decompiled or reported registry data.
tools/gen_block_palette.pyGenerates block palette source from authoritative block reports.
tools/gen_entity_palette.pyGenerates entity palette source from registry reports.
tools/gen_entity_metadata_palette.pyGenerates entity metadata palette source from serializer registration order.
tools/gen_command_argument_registry.pyHelps update modern declare-commands registry order.
tools/gen_block_shapes.pyDownloads and compacts collision shape data for physics support.

There is one more piece worth calling out:

  • MinecraftClient/ChatBots/FileInputBot.cs is what makes file-driven command injection possible.
  • It is loaded when MCC_FILE_INPUT=1 is set.
  • mcc-run in tools/mcc-env.sh already sets that flag for you.

Skills

The tools above do the work. The skills in .skills/ tell the AI when to use them and what good output looks like.

SkillWhat it is forNotes
mcc-dev-workflowThe default build, run, debug, and local server loop.This is the skill to use for most day-to-day MCC debugging. It assumes WSL, tmux, Java, and the local harness.
mcc-integration-testingRepeatable end-to-end testing against a local offline server.This skill bundles its own scripts under .skills/mcc-integration-testing/scripts/. Those are skill resources, not top-level repo scripts.
mcc-version-adaptationProtocol and palette updates for new Minecraft versions.Use this when routing, registries, metadata, palettes, or structured components change.
mcc-chatbot-authoringAuthoring or repairing built-in bots and standalone /script bots.This skill bundles references and templates under .skills/mcc-chatbot-authoring/. It defaults to standalone /script bots unless built-in wiring is requested.
csharp-best-practicesC# 12 / .NET 10 coding guidance for this repo.Use it whenever the change touches MCC runtime code.
humanizerDocumentation and prose cleanup.Use it for docs, guides, release notes, and anything that starts sounding machine-written.
skill-creatorCreating or evolving skills themselves.This is for improving the AI workflow, not for normal MCC feature work.

The important distinction is this:

  • repo tools are executable scripts and source files
  • skills are instructions, references, templates, and workflow constraints for the AI

Some skills also carry their own bundled resources:

  • mcc-integration-testing bundles scripts and a command matrix reference
  • mcc-chatbot-authoring bundles references and bot templates
  • skill-creator bundles scripts, eval tooling, and reviewer assets

Standard Development Loop

This is the core loop you should expect an agent to follow.

1. Start the local server

mc-start 1.20.6

Check the recent server output:

mc-log 1.20.6

2. Build MCC

mcc-build

3. Run MCC with file input enabled

mcc-run

The raw form looks like this:

MCC_FILE_INPUT=1 dotnet run --project MinecraftClient -c Release -- CursorBot - localhost:25565

4. Set up server state through RCON

Examples:

mc-rcon "op CursorBot"
mc-rcon "gamerule sendCommandFeedback true"
mc-rcon "give CursorBot diamond_sword 1"
mc-rcon "summon minecraft:armor_stand ~ ~ ~"

5. Drive MCC through mcc_input.txt

Examples:

mcc-cmd "inventory player list"
mcc-cmd "entity"
mcc-cmd "/gamemode creative"

Behavior:

  • lines starting with / are sent as server commands or chat
  • lines without / are treated as MCC internal commands first
  • if a line is not an MCC internal command, it falls back to normal chat sending

6. Inspect the result

Read the MCC output and the server log, decide what changed, and either keep iterating or stop.

7. Rebuild and restart fast

mcc-reload

That is the usual tight loop for regression work.

Testing And Validation

There are two main testing styles in this workflow.

Manual validation

This is enough for smaller changes:

  • join the local server
  • grant operator privileges with mc-rcon
  • run internal MCC commands through mcc-cmd
  • trigger gameplay or server state changes through mc-rcon
  • inspect logs for parsing errors, disconnects, or wrong output

Typical manual checks:

  • inventory listing and creative item injection
  • entity tracking after summon
  • terrain and chunk handling after join
  • chat and command flow
  • explosion, particle, and sound events

Scripted full-spectrum testing

The mcc-integration-testing skill goes further. It bundles its own scripts under .skills/mcc-integration-testing/scripts/ and expects the shell helpers from ~/.zshrc.

Treat those scripts as skill-owned resources. Read the skill before running them directly, and do not assume they behave like top-level repo tools.

That skill is designed for repeatable offline validation of:

  • chat
  • slash commands
  • MCC internal commands
  • inventory handling
  • entity handling
  • particles and sounds
  • TNT and explosion handling

Server settings that matter for AI-driven offline testing:

  • eula=true
  • online-mode=false
  • enforce-secure-profile=false
  • enable-rcon=true
  • rcon.password=test123

If those are wrong, the loop gets noisy fast.

Version Adaptation Notes

Version work needs a stricter process than normal bug fixing.

The important rule is simple:

  • for newer versions, especially 1.21.9+, use server data reports as the authority for items and blocks
  • use decompiled source for implementation details, field order, codecs, and serializer logic
  • do not stop at a palette diff; finish with a build and a live server test

The usual order is:

  1. tools/decompile.sh --version <ver>
  2. generate server reports from server.jar
  3. run tools/diff_registries.py
  4. regenerate the palettes that actually changed
  5. update version routing and packet handling
  6. build MCC
  7. test against the real target version

That is exactly the sort of work mcc-version-adaptation is meant to guide.

Example Workflows

These are four common patterns this guide is meant to support.

Example 1: Debug a runtime regression

Use skills:

  • mcc-dev-workflow
  • csharp-best-practices

Typical loop:

mc-start 1.20.6
mcc-build
mcc-run
mc-rcon "op CursorBot"
mcc-cmd "inventory player list"
mcc-cmd "entity"

Then inspect the MCC output, patch the code, and use:

mcc-reload

Example 2: Build or repair a bot

Use skills:

  • mcc-chatbot-authoring
  • csharp-best-practices
  • mcc-dev-workflow

Typical flow:

  1. Decide whether this should be a standalone /script bot or a built-in bot.
  2. Use the authoring skill's references and templates.
  3. Build MCC.
  4. Start a local server and join it.
  5. Test the bot behavior through live commands, chat, or event-driven actions.
  6. Make sure cleanup paths such as OnUnload() are correct.

For standalone script work, the skill defaults to /script unless built-in repo wiring is explicitly needed.

Example 3: Adapt MCC to a new Minecraft version

Use skills:

  • mcc-version-adaptation
  • mcc-dev-workflow
  • mcc-integration-testing

Typical flow:

tools/decompile.sh --version 26.1

Generate server reports:

cd /tmp
java -DbundlerMainClass=net.minecraft.data.Main \
  -jar "$MCC_SERVERS/26.1/server.jar" \
  --reports --output /tmp/mc_reports

Run the registry diff:

python3 tools/diff_registries.py 1.21.10 26.1 --registry /tmp/mc_reports/reports/registries.json

Then regenerate the palettes that changed, update routing, build MCC, start a local server for the target version, and run live validation before calling the work done.

Example 4: Write or update documentation for the workflow itself

Use skills:

  • humanizer
  • skill-creator, if you are changing the skills rather than just the docs

Typical flow:

  1. Re-read the relevant skill files and repo tools.
  2. Update the guide so the written process matches the real process.
  3. Keep the instructions concrete enough that another contributor can follow them without guessing.
  4. If the workflow itself changed, update the relevant skill too instead of leaving the docs ahead of the automation.
Edit this page
Last Updated: 3/22/26, 3:29 PM
Contributors: Anon
Prev
Creating Chat Bots
Next
Contributing