mcc-fleet
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., "@mcc-fleetspawn bot Builder and build a shelter"
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.
mcc-fleet
An MCP server that manages a fleet of Minecraft Console Client (MCC) instances and lets an MCP client (e.g. Claude) drive each bot individually.
MCC already ships an embedded MCP server, but each mcc process controls only one
account. This wrapper:
Spawns/stops multiple
mccprocesses — each with its own nick, working directory, and MCP HTTP port.Proxies the in-game tools of each MCC instance, addressed by nick.
Targets offline-mode servers (login by nick, no Microsoft auth) and MCC v26.1.
How it works
Claude -- stdio --> mcc-fleet (this wrapper) -- HTTP /mcp --> mcc (Bot1)
-- HTTP /mcp --> mcc (Bot2)
...Each bot's MCC config is rendered from mcc-template.ini into runtime/<nick>/MinecraftClient.ini.
MCC's embedded MCP endpoint only comes up after the bot joins the world, so spawn_bot
polls it until ready.
Related MCP server: Renge Bot
Tools exposed to the client
Tool | Purpose |
| Start a bot, wait until ready, return its tools |
| Status, MCP port, pid, uptime of all bots |
| Discover a bot's in-game tools |
| Invoke one of a bot's in-game tools |
| Disconnect/terminate bot(s) |
Dependencies
Dependency | Why | Version |
Runs the wrapper | 3.12+ | |
Installs Python deps and runs the server | any recent | |
Minecraft Console Client ( | The bot client each instance wraps | v26.1 |
mcc is a self-contained native binary (no separate .NET runtime needed) and must be
reachable on PATH as mcc, or pointed to via MCC_BINARY (see below).
Installation
Install
uv(skip if already installed):curl -LsSf https://astral.sh/uv/install.sh | shInstall Minecraft Console Client v26.1. Download the build for your platform from the releases page, then make it executable and put it on
PATHasmcc:chmod +x MinecraftClient sudo mv MinecraftClient /usr/local/bin/mcc(If you'd rather not move it onto
PATH, leave it where it is and setMCC_BINARYto its full path in the next step instead.)Clone this repo and install Python dependencies:
git clone https://github.com/italoseara/mcc-fleet.git cd mcc-fleet uv syncConfigure the target server (defaults:
localhost:25565):export MCC_SERVER_HOST=play.example.net export MCC_SERVER_PORT=25565 # optional: export MCC_BINARY=mcc # path to the mcc executable, if not on PATH export MCC_BASE_MCP_PORT=33334 # first MCP port to allocateSanity check — the wrapper should start without errors:
uv run mcc-wrapperIt should print a FastMCP startup banner and then sit waiting for MCP messages on stdio;
Ctrl+Cto exit. This confirmsuv syncand themccbinary are both set up correctly.
Register with Claude Code
claude mcp add mcc-fleet \
-e MCC_SERVER_HOST=play.example.net -e MCC_SERVER_PORT=25565 \
-- uv run --directory /path/to/mcc-fleet mcc-wrapperThen ask Claude to spawn_bot("Bot1"), bot_call("Bot1", ...), etc.
Notes
The server must be in offline-mode for nick-only login.
On shutdown the wrapper kills all child
mccprocesses (stop_all).
Available Tools
6 toolsbot_callC
Invoke one of a bot's in-game tools. tool/arguments come from list_bot_tools.
| Name | Required | Description | Default |
|---|---|---|---|
| nick | Yes | ||
| tool | Yes | ||
| arguments | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'invoke', implying mutation, but does not disclose side effects, permissions, or whether the invocation is safe or destructive. The description is minimal on behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, very concise and no filler. However, the second sentence could be integrated more cleanly, and the structure is acceptable but not exceptional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return values, error conditions, or what 'invoking a tool' entails. Sibling tools are listed but no cross-referencing in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that 'tool' and 'arguments' come from list_bot_tools, but leaves 'nick' unexplained. This adds partial meaning but not enough for a tool with 3 totally undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'invoke' and the resource 'bot's in-game tools', and explicitly ties the parameters to the sibling tool 'list_bot_tools', distinguishing it from other sibling tools like 'list_bot_tools' (which lists) and 'spawn_bot' (which creates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a prerequisite (use list_bot_tools first) but does not give explicit guidance on when to use this tool versus alternatives, nor any exclusions or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_botsA
List all bots with their status, MCP port, pid and uptime.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the output includes specific fields, implying a read-only list operation. However, it does not clarify potential side effects, pagination, sorting, or any limitations on the number of bots returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the key information. Every word is necessary and adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, zero-parameter list tool, the description adequately covers the purpose and output fields. An output schema exists, so return values are already defined. Minor gap: no mention of ordering or if all bots are guaranteed to be returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema coverage is 100%. The description adds value by specifying the output fields (status, MCP port, pid, uptime) beyond the empty schema. Baseline for 0 parameters is 4, and the description justifies this score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list all bots') and the specific fields returned (status, MCP port, pid, uptime). It distinctly separates this tool from siblings like list_bot_tools and bot_call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to list all bots) but provides no explicit guidance on when not to use or alternatives. For instance, it doesn't mention that filtering is absent or that list_bot_tools is for listing tools per bot. However, the context of sibling tools partially covers this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_bot_toolsB
List the in-game tools a ready bot exposes (discovered from its MCC instance).
| Name | Required | Description | Default |
|---|---|---|---|
| nick | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions 'discovered from its MCC instance' but does not disclose whether the operation is read-only, has side effects, or required permissions. No error handling or edge cases mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it could benefit from slight expansion (e.g., clarifying the parameter). Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema, the description is partially complete. It mentions the source (MCC instance) but omits prerequisites (bot readiness) and return or error details. An output schema exists but is not shown in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the single parameter 'nick'. The description does not explain what 'nick' represents (bot nickname or something else), so it adds no meaning beyond the schema field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists in-game tools from a ready bot, and it distinguishes from sibling tools like list_bots (which lists bots) and bot_call (which invokes a bot).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies using this tool to see what tools a bot exposes, but it does not specify when not to use it, prerequisites (e.g., bot must be ready), or alternatives. Some guidance is present but minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spawn_botA
Start a new MCC bot that joins the server under nick (offline mode).
Waits until the bot's in-game MCP endpoint is ready. Returns its status and the
tools it exposes. host/port default to the configured target server.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | ||
| nick | Yes | ||
| port | No | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the bot joins in offline mode, waits until ready, and returns status/tools. It does not mention limits or errors, but is reasonably transparent for a start action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description covers the essential behavior and parameters, though it omits error handling details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds meaning for nick, host, and port (with defaults), but does not explain the timeout parameter, leaving a gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('start'), the resource ('a new MCC bot'), and the key parameter ('nick'), effectively differentiating it from sibling tools like list_bots and stop_bot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to spawn a bot) and provides defaults for host/port, but lacks explicit guidance on when not to use or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_allA
Disconnect and terminate every running bot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It indicates a destructive action but omits critical details such as irreversibility, side effects (e.g., disconnecting connections), or confirmation requirements. This is insufficient for a high-impact operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It could be slightly expanded with a cautionary note, but it is appropriately concise for its simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to provide essential context for a destructive tool: no warning of consequences, no mention of all bots being affected, and no reference to the safer sibling 'stop_bot'. The description is too sparse to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema coverage is 100%, so the description adds no additional parameter information. Baseline for zero parameters is 4, and the description does not detract from that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (disconnect and terminate) and resource (every running bot), with a clear verb-resource structure. It effectively distinguishes from the sibling tool 'stop_bot', which targets individual bots.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives like 'stop_bot'. The context implies it is for bulk termination, but no caveats or prerequisites are mentioned, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_botC
Disconnect and terminate a bot's MCC process.
| Name | Required | Description | Default |
|---|---|---|---|
| nick | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'disconnect and terminate' without disclosing side effects, required permissions, or whether the action is reversible. The description is too brief to adequately inform an agent about behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and front-loaded with the core action. However, it is perhaps too brief, missing important details that could have been included without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one required parameter and no complex structure. The description covers the basic purpose, but given the absence of usage guidelines and parameter details, it feels incomplete for an agent to reliably use it in varied contexts. Output schema exists but is not provided, so return values are not explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'nick' has a schema coverage of 0%, meaning the schema provides no description. The tool description does not explain what 'nick' refers to or how it should be used, leaving the agent without sufficient context to supply a correct value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Disconnect and terminate') and the resource ('a bot's MCC process'). It effectively distinguishes from sibling tools like spawn_bot (create), list_bots (list), and stop_all (stop all bots).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., stop_all). It does not mention prerequisites, such as needing the bot's nickname, or context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.1.0- First observed
bot_call - First observed
list_bot_tools - First observed
list_bots - First observed
spawn_bot - First observed
stop_all - First observed
stop_bot
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: listing bots, listing their tools, spawning, stopping, and invoking tools. No ambiguity between tools.
All tools follow a consistent verb_noun naming pattern (e.g., spawn_bot, stop_bot, bot_call), using snake_case throughout.
With 6 tools covering fleet management operations, the count is well within the ideal range and feels appropriately scoped for the domain.
The toolset covers essential lifecycle operations (spawn, list, stop, call) but lacks a dedicated tool for inspecting a single bot's detailed status or logs, which is a minor gap.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Create, deploy, and operate MCP servers directly from your GitHub repositories.
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for Pinchwork - an agent-to-agent task marketplace with credits-based economy
Related MCP Servers
- AlicenseAqualityCmaintenanceWraps the Claude Agent SDK as MCP servers, letting you spawn multiple specialized Claude Code agents — each with its own model, tools, system prompt, and personality — from any MCP client.581 npm21ISC
- FlicenseNot gradedqualityDmaintenanceEnables controlling a semi-autonomous Minecraft bot via MCP, supporting tasks like movement, combat, farming, and chatting.-
- AlicenseNot gradedqualityFmaintenanceAn MCP server that lets Claude control a Minecraft bot with 40+ actions including movement, combat, crafting, and inventory management. Built on Mineflayer, it supports Microsoft authentication, pathfinding, and auto-reconnect.3MIT
- FlicenseNot gradedqualityBmaintenanceEnables controlling a real Minecraft Bedrock client by injecting input and reading frames through the launcher's agent socket, including launching, stopping, screenshotting, sending chat, and managing multiple bot instances.3-