地毯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。假玩家是一个具有适当物理、库存和碰撞的真实实体。没有客户端连接,没有取消同步。
设置
服务器端
enable-rcon=true
rcon.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 ... | 地毯假玩家控制 |
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 — entities with distances
/wren blocks — block type summary
/wren blocks — find specific blocks
/wren inventory — labeled slot listing
/wren path — check if position is reachable发展
npm run dev # Run with tsx (no build step)
npm run build # Compile TypeScript
npm start # Run compiled version