内容
# mcc-fleet
一个管理多个 [Minecraft 控制台客户端](https://github.com/MCCTeam/Minecraft-Console-Client) (MCC) 实例的 MCP 服务器,并允许 MCP 客户端(例如 Claude)单独控制每个机器人。
MCC 已经自带了一个嵌入式 MCP 服务器,但是每个 `mcc` 进程只控制一个账户。这个包装器:
1. 启动/停止多个 `mcc` 进程 — 每个进程都有自己的昵称、工作目录和 MCP HTTP 端口。
2. 代理每个 MCC 实例的游戏内工具,通过昵称寻址。
目标是**离线模式**服务器(仅限昵称登录,无 Microsoft 认证)和 MCC v26.1。
## 工作原理
```
Claude ──stdio──▶ mcc-fleet(此包装器)──HTTP /mcp──▶ mcc(Bot1)
──HTTP /mcp──▶ mcc(Bot2)
...
```
每个机器人的 MCC 配置从 `mcc-template.ini` 渲染到 `runtime/<nick>/MinecraftClient.ini`。MCC 的嵌入式 MCP 端点仅在机器人加入世界后才启动,因此 `spawn_bot` 会一直轮询直到就绪。
## 向客户端公开的工具
| 工具 | 用途 |
|------|---------|
| `spawn_bot(nick, host?, port?, timeout?)` | 启动机器人,等待就绪,返回其工具 |
| `list_bots()` | 状态、MCP 端口、进程 ID、所有机器人的运行时间 |
| `list_bot_tools(nick)` | 发现机器人的游戏内工具 |
| `bot_call(nick, tool, arguments)` | 调用机器人的游戏内工具之一 |
| `stop_bot(nick)` / `stop_all()` | 断开/终止机器人(们) |
## 设置
```bash
uv sync
```
配置目标服务器(默认值:`localhost:25565`):
```bash
export MCC_SERVER_HOST=play.example.net
export MCC_SERVER_PORT=25565
# 可选:
export MCC_BINARY=mcc # mcc 可执行文件的路径
export MCC_BASE_MCP_PORT=33334 # 要分配的第一个 MCP 端口
```
## 在 Claude 代码中注册
```bash
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
```
然后要求 Claude 执行 `spawn_bot("Bot1")`、`bot_call("Bot1", ...)` 等操作。
## 注意事项
- 服务器**必须**处于离线模式,仅限昵称登录。
- 在关闭时,包装器会杀死所有子 `mcc` 进程(`stop_all`)。