Mineness
Allows the OpenAI Codex CLI to control its own Minecraft player through a local connection, receiving in-game mentions and carrying out survival tasks like moving, gathering resources, crafting, building, delivering items, and following players.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Minenesschop 4 oak logs and bring them back to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Mineness
Claude, Codex, Grok, and Cursor as Minecraft teammates. Each coding-agent CLI controls its own Mineflayer player through a local MCP connection. They wait for your requests, announce what they will do, perform survival actions, and report what happened.

Run locally
The included demo server provides the example configuration, teammate datapack, and /model plugin. Run everything from this mineness folder.
Requires Java 21 or newer, Node.js 22.12 or newer, and Minecraft Java Edition 1.21.11. Install the coding-agent CLIs you want to use and sign in with their normal subscription login. No model API key is required by Mineness.
git clone --recurse-submodules https://github.com/SpectrumTantrum/mineness.git
cd mineness
npm ci
npm run setupSetup downloads pinned Paper and SkinsRestorer jars and verifies their SHA-256 checksums. Read the Minecraft EULA, then set eula=true in mc-server/eula.txt if you accept it.
Start the server in one terminal:
npm run serverIn another terminal, apply the skins once, then start your teammates:
npm run skins
npm run play -- claude codex grok cursorYou can select one provider, for example npm run play -- codex. npm run play defaults to all four. Missing or expired CLI logins must be resolved with claude auth login, codex login, grok login, or cursor-agent login.
Cursor_Bot defaults to Cursor Grok 4.6 with high reasoning, cursor-grok-4.6-high.
Grok requires one initial workspace trust decision. Prepare its configuration, open the isolated game workspace, accept its trust prompt, then quit Grok and start the launcher:
npm run play -- grok --prepare
grok --cwd "$PWD/.runtime/grok"
npm run play -- grokJoin localhost:25565 in Minecraft Java 1.21.11. The server uses offline authentication so the bots can join; it binds to localhost. Leave it local unless you intentionally configure access controls for a shared server.
Related MCP server: MCP Minecraft Remote
Play together
Type requests in Minecraft chat:
@claude chop 4 oak logs and bring them to me
@codex follow me
@grok craft a crafting table and place it next to you
@cursor build a small wall with the blocks you have
@all what are you carrying?
stopFull nametags such as @Claude_Bot also work. @all is for conversation and status; address a named teammate for physical work. A plain stop immediately stops every body. @codex stop stops just Codex. They wait for another request afterward.
Use the server's /model command to inspect or change one teammate:
/model @cursor
/model @cursor grok-4.6 high
/model @claude sonnet high
/model @codex gpt-5.6-sol high
/model @grok grok-4.6 high
/model @cursor defaultThe format is /model @bot [model-id] [effort]. Model IDs must be supported by that bot's CLI and account. Without a model, it shows the configured model and connection status. default restores the project default. The command reconnects only the selected teammate, stops its current action, and preserves its Minecraft location and inventory. If the new model fails to connect, the launcher attempts to restore the previous one and reports the result in chat.
Selections persist in .runtime/<provider>/model.json. Human players can use the command through the mineness.model permission, enabled by default on this local server.
Keep requests within survival abilities. A bot needs materials to build, ingredients to craft, and a suitable tool for blocks that require one. It can navigate, chop nearby trees, gather blocks, craft, place up to 32 blocks per call, deliver items, and follow a visible player. Each physical action has a 45-second limit, and the model can chain actions for a larger request. Dense terrain or inaccessible targets can still require a different approach.
The models see structured tool results. look_around includes leaves and leaf litter, and its inspect argument reports exact blocks at requested coordinates, including air. Before building, inspect the footprint and the blocks underneath it. place_blocks clears grass and leaf litter at the requested positions, preserves solid blocks, and skips blocks already placed correctly. High walls and roofs can require temporary access steps made from the bot's materials.
Skin setup uses a temporary connection for each body. Apply skins before starting the agents. SkinsRestorer's live refresh respawns a player and can disrupt Mineflayer inventory and movement state. On subsequent launches, the server supplies the saved skin without refreshing it.
How it works
Minecraft chat → named teammate's inbox → its coding-agent CLI
↑ ↓
Minecraft body ← Mineness MCP toolsEach CLI starts one src/server.js --username NAME_Bot process. A lock prevents a second local session from taking the same body. The ten MCP tools are wait_for_mention, say, look_around, goto, chop_tree, gather_blocks, craft_item, place_blocks, give_items_to_player, and follow_player.
The shared operating prompt is in prompts/shared-operating-prompt.md. The launcher builds provider-specific configurations in ignored .runtime/ directories and disables unrelated tool access. Minecraft chat cannot run slash commands through say. Bot messages do not wake other bots. The raw stop listener runs in the body process, so stopping does not wait for a model response.
CLI output goes to .runtime/claude.log, .runtime/codex.log, .runtime/grok.log, and .runtime/cursor.log. Completed tool calls are recorded in calls.jsonl, including duration, result, and failures. These logs, account settings, server passwords, player data, and worlds are excluded from Git.
Press Ctrl+C in the launcher terminal to disconnect its teammates. Their Minecraft inventories remain in the world. Type stop in the server terminal to save and stop Paper. python3 scripts/rcon.py list is available for local administration and reads the generated RCON password from the local server configuration.
Checks
npm test
npm run test:game
node scripts/test-building.mjs
node scripts/test-agents.mjs claude codex grok cursor
node scripts/test-model-command.mjsnpm test checks routing, inbox behavior, cancellation, deadlines, duplicate-body protection, and model switching with rollback. test:game requires the local server; it creates a temporary test platform only after verifying that the space is empty, exercises real mining, crafting, placement, navigation, recipient pickup, following, and stopping, then removes the platform.
test-agents.mjs requires the selected CLI teammates to be running. It sends requests through a clearly named test player and verifies actual delivery to that player's inventory. It temporarily moves the selected bots to an empty test platform and restores their positions afterward. Run these integration checks when other players are not using that area.
test-building.mjs uses a separate test bot and an empty temporary platform. It checks bulk crafting against server inventory, terrain inspection, building over leaf litter, a complete small shelter with a roof, and harvesting a tree beside an isolated canopy log. It removes the platform afterward.
The /model plugin's Java source and compiled jar are in mc-server/model-command/. Setup installs the jar. To rebuild it, use a JDK 21 or newer and run npm run build:plugin after Paper has started once and extracted its libraries. Restart Paper after rebuilding. The launcher and server share the local .runtime directory.
test-model-command.mjs sends real player slash commands, temporarily switches Cursor's reasoning effort, verifies that the other bots stay connected, and restores Cursor's original model. Run it when Cursor is idle.
Sources and attribution
The starting Mineflayer/MCP connection code came from yuniko-software/minecraft-mcp-server, under Apache-2.0. The running implementation uses the dependencies pinned in package-lock.json; the old reference checkout is not required. See LICENSE and NOTICE.
The small client collision margin follows the proposed Minecraft 1.21.x pathfinder fix. It prevents the bot from aligning exactly with block edges, where server collision checks can reject its movement.
CLI configuration follows the official Claude Code CLI reference, Codex configuration reference, Grok headless documentation, and Cursor CLI permissions. Skins use SkinsRestorer and the separate Mineness skins repository.
Mineness is an independent project. Product names and logos identify the represented teammates; they do not imply endorsement.
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for Pinchwork - an agent-to-agent task marketplace with credits-based economy
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control a Minecraft bot for movement, building, crafting, and instant schematic-based structure spawning via MCP tools.242Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to remotely control a Minecraft player, including navigation, mining, building, and interaction with the world and other players.MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to control Minecraft via MCP with configurable versions, creative building commands, survival helpers, and an autonomous agent loop.Apache 2.0
- AlicenseAqualityAmaintenanceEnables AI agents to control a Minecraft bot inside a Java Edition world via MCP, providing tools for movement, building, mining, combat, farming, trading, inventory, and world perception.55241MIT