Skip to main content
Glama

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:

  1. Spawns/stops multiple mcc processes — each with its own nick, working directory, and MCP HTTP port.

  2. 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

spawn_bot(nick, host?, port?, timeout?)

Start a bot, wait until ready, return its tools

list_bots()

Status, MCP port, pid, uptime of all bots

list_bot_tools(nick)

Discover a bot's in-game tools

bot_call(nick, tool, arguments)

Invoke one of a bot's in-game tools

stop_bot(nick) / stop_all()

Disconnect/terminate bot(s)

Dependencies

Dependency

Why

Version

Python

Runs the wrapper

3.12+

uv

Installs Python deps and runs the server

any recent

Minecraft Console Client (mcc)

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

  1. Install uv (skip if already installed):

    curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Install Minecraft Console Client v26.1. Download the build for your platform from the releases page, then make it executable and put it on PATH as mcc:

    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 set MCC_BINARY to its full path in the next step instead.)

  3. Clone this repo and install Python dependencies:

    git clone https://github.com/italoseara/mcc-fleet.git
    cd mcc-fleet
    uv sync
  4. Configure 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 allocate
  5. Sanity check — the wrapper should start without errors:

    uv run mcc-wrapper

    It should print a FastMCP startup banner and then sit waiting for MCP messages on stdio; Ctrl+C to exit. This confirms uv sync and the mcc binary 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-wrapper

Then 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 mcc processes (stop_all).

Available Tools

6 tools
bot_callC

Invoke one of a bot's in-game tools. tool/arguments come from list_bot_tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nickYes
toolYes
argumentsNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
nickYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNo
nickYes
portNo
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nickYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 6 tool updatesv0.1.0
    • First observedbot_call
    • First observedlist_bot_tools
    • First observedlist_bots
    • First observedspawn_bot
    • First observedstop_all
    • First observedstop_bot

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing bots, listing their tools, spawning, stopping, and invoking tools. No ambiguity between tools.

Naming Consistency5/5

All tools follow a consistent verb_noun naming pattern (e.g., spawn_bot, stop_bot, bot_call), using snake_case throughout.

Tool Count5/5

With 6 tools covering fleet management operations, the count is well within the ideal range and feels appropriately scoped for the domain.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Wraps 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.
    5
    81 npm
    21
    ISC
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables controlling a semi-autonomous Minecraft bot via MCP, supporting tasks like movement, combat, farming, and chatting.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    An 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.
    3
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
    -