使用说明
地毯mcp
MCP服务器,用于通过RCON通过Fabric Carpet mod控制Minecraft玩家。
状态
第一阶段完成——未经测试。 RCON客户端、MCP工具、命令过滤器和scappet桥脚本都是构建和编译干净的。在第一次测试之前,等待服务器上的Carpet mod安装。
完成
- [x] RCON客户端(TCP协议,自动重新连接)
- [x] 带stdio传输的MCP服务器
- [x] 24种工具(移动、动作、状态查询、聊天)
- [x] 命令满列表筛选器(块
/stop,/op等等) - [x] 仅Env RCON密码
- [x] 围巾桥脚本(
wren_bridge.sc)
下一步
- []在服务器上安装Carpet模块
- []配置RCON网络(容器→ 服务器)
- []第一次产卵测试
- []寻路(围巾A*或地毯暴徒寻路)
- []屏幕截图/世界视野
- []游戏循环(任务分解)
建筑
pi agent (Claude, in Docker container)
↓ MCP protocol (stdio)
carpet-mcp (Node.js, this server)
↓ RCON (TCP)
Minecraft server (Fabric 1.21.1 + Carpet)
↓ /player commands + Scarpet
Wren (carpet fake player — server-side entity)
为什么是地毯?
需要使用之前的方法(扫雷器) online-mode=false --一个开放的身份验证孔。Carpet在服务器端生成了一个假玩家,因此服务器保持不变 online-mode=true。假玩家是一个具有适当物理、库存和碰撞的真实实体。没有客户端连接,没有取消同步。
设置
服务器端
- 安装 织物装载机 适用于Minecraft 1.21.1
- 安装 地毯型号
- 在中启用RCON
server.properties:enable-rcon=true rcon.password=<your-password> rcon.port=25575 - 复制
scripts/wren_bridge.sc到world/scripts/ - 在游戏中或通过RCON:
/carpet commandPlayer true /carpet commandScript true /script load wren_bridge
代理端
cd carpet-mcp
npm install
npm run build
添加 ~/.pi/agent/mcp.json:
{
"mcpServers": {
"minecraft": {
"command": "node",
"args": [
"/path/to/carpet-mcp/dist/server.js",
"--host", "play.example.com",
"--port", "25575",
"--player", "Wren"
],
"env": {
"RCON_PASSWORD": "your-rcon-password"
}
}
}
}
安全
命令分配列表 --所有命令在到达RCON之前都会被过滤。只有这些通过:
| 模式 | 目的 |
|---|---|
player <name> ... |
地毯假玩家控制 |
script run/in ... |
围巾查询 |
me ... |
聊天信息 |
weather query, time query |
只读查询 |
list, seed |
服务器信息 |
wren ... |
围巾桥命令 |
其他一切(stop, op, give, fill, ban等)在撞击电线之前被拒绝。
RCON密码 仅限于env(RCON_PASSWORD)--从未被接受为CLI参数。
工具(共24个)
运动(9)
| 工具 | 说明 |
|---|---|
spawn |
制造假玩家(可选择在位置/朝向/维度) |
move |
向前/向后/向左/向右行走(一次、连续或N次) |
look |
面向主方向或查看x/y/z坐标 |
turn |
左转/右转/掉头 |
sprint |
切换短跑 |
sneak |
切换偷偷摸摸 |
jump |
跳跃(一次或连续) |
stop |
停止所有移动和动作 |
kill |
揭穿假玩家 |
行动(7)
| 工具 | 说明 |
|---|---|
attack |
左键单击--打断块,点击实体 |
use |
右键单击--放置块、交互、吃 |
hotbar |
选择热条插槽1-9 |
drop |
删除项目 |
swap_hands |
交换主/备用 |
mount |
安装附近实体 |
dismount |
拆卸 |
州查询(6,通过Scarpet)
| 工具 | 说明 |
|---|---|
status |
位置、健康、饥饿、持有物品、游戏模式、面对 |
get_position |
当前坐标 |
look_at_block |
Raycast——我面对的是哪个街区 |
nearby_entities |
半径内具有距离的实体 |
nearby_blocks |
半径内的块类型计数 |
inventory |
带有标签插槽的完整库存 |
block_at |
特定坐标处的块信息 |
biome_at |
位置生物特征 |
time |
比赛时间和天气 |
公用事业(2)
| 工具 | 说明 |
|---|---|
chat |
以玩家身份发送聊天消息 |
run_command |
运行任何已分配的服务器命令 |
围巾桥
这 wren_bridge.sc 脚本(放置在 world/scripts/)添加了丰富的查询命令:
/wren status — compact status line
/wren look — raycast what you're facing
/wren nearby <radius> — entities with distances
/wren blocks <radius> — block type summary
/wren blocks <radius> <filter> — find specific blocks
/wren inventory — labeled slot listing
/wren path <x> <y> <z> — check if position is reachable
发展
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm start # Run compiled version