minecraft-companion
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., "@minecraft-companionfollow me and mine some iron ore nearby"
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.
⛏️ minecraft-companion — Minecraft AI 伴侣(MCP 服务器)
一个跑在 Minecraft 里的 AI 机器人:mineflayer 当身体,大模型当大脑,MCP 当接口。 任何支持 MCP 的客户端(AstrBot / Claude / Cursor / 自写脚本)都能通过 SSE 连上来,指挥机器人做游戏内操作。
✨ 特性
🧠 大脑桥(默认接 AstrBot):机器人不直连 LLM,统一走 AstrBot
/api/v1/chat—— 同一个脑子:QQ 和游戏里是同一个 AI,共享人格+记忆,零 API key 配置🎒 创造模式工具:
creative-give协议级发放任意物品,不需要/give权限🪃 跟随玩家:
follow-player持续跟随(动态寻路、掉线自愈、可指定玩家)🔒 身体控制权锁:guardian 保命 > 玩家任务 > 自主生活,动作类工具统一走
withBody,多客户端不会抢身体⚔️ 战斗 / 生存 / 采集:自动寻路打怪、生存守护(残血撤退、自动进食)
📊 49 个 MCP 工具(13 分类):感知、移动、建造、采集、合成、熔炼、农业、战斗、仓库、创造、技能、记忆、社交,全协议实现
Related MCP server: minecraft-mcp
🤖 AI Agent 部署?(一句话部署)
如果你是 AI agent(LLM),用户丢给你压缩包说"部署好让我玩我的世界":
📖 看
AGENT_DEPLOY.md—— 专为 AI 写的部署指南(一键命令 + 配置决策表 + 排查清单) 一句话方案:解压 →node setup.js --auto→node dist/main.js→ 接入 MCP:3001/mcp
智能配置引导(人和 AI 通用)
node setup.js # 交互式,Enter 用默认值
node setup.js --auto # 全自动:装依赖 + 检测 AstrBot + 生成配置自动探测本机 AstrBot(6185) → 大脑走 astrbot 桥模式,无需 API key
不在 AstrBot 环境 → 需提供 OpenAI 兼容 API key(或
brain.mode=none纯工具模式)已有配置自动备份
.bak
🚀 快速开始
1. 环境要求
Node.js 18+
一个 Minecraft Java 版服务器(1.20 ~ 1.21.1,
1.21.1实测)正版 / 离线 / Yggdrasil(LittleSkin 等外置登录) 账号
2. 安装
npm install3. 配置
# 首次使用:把模板复制成正式配置,然后填自己的服务器和账号
copy config\config.example.json config\config.json编辑 config/config.json(字段含义见 配置说明)。
4. 启动
npm start # 或 node dist/main.js看到以下日志即成功:
✅ 已进入游戏!位置: (x, y, z)
🛡️ 生存守护已启动
🛰 MCP SSE 服务: http://127.0.0.1:3001/mcp5. 接入 MCP 客户端
SSE 地址:http://127.0.0.1:3001/mcp
AstrBot:MCP 服务器添加 SSE 类型,填上面的地址(支持多客户端,可带
?clientId=名字区分)Claude Desktop / 其他:用 SSE transport 指向同一地址
自写脚本:参考
tools/test-mcp.js(node tools/test-mcp.js <工具名> "参数=值")
⚙️ 配置说明
字段 | 说明 |
| MCP SSE 服务端口(默认 3001) |
| Minecraft 服务器地址 / 端口 |
| 机器人账号 |
| 登录方式: |
| 外置登录认证服务器(LittleSkin 等填自己的地址) |
|
|
| OpenAI 兼容 API 地址 / 密钥 / 模型名( |
| 记忆会话 ID |
| 生存守护:残血( |
| 生活模式(自动探索/学习,默认开) |
🧰 工具清单(MCP tools,共 49 个)
分类 | 工具 |
感知 (9) |
|
移动 (7) |
|
建造 (2) |
|
采集 (4) |
|
合成/熔炼 (2) |
|
仓库 (3) |
|
战斗 (2) |
|
生存 (3) |
|
农业 (5) |
|
创造 (1) |
|
技能 (5) |
|
记忆/目标 (4) |
|
社交/系统 (2) |
|
🔁 MCP 断连自愈与日志(排查指南)
问题:AstrBot ↔ 本 bot 的 MCP 连接是一次性 SSE。bot 重启 / AstrBot 后启动时,
连接会静默失效——AstrBot 后台甚至可能仍显示"已连接"(它只检查运行时对象,
不检查真实 session),但每次工具调用都报
MCP session is not available for MCP function tools.
三层自愈(按推荐顺序,A 必须有,B/C 可选):
A. 游戏内直报(本仓库内置,无需配置)
src/brain.ts 检测到工具调用因 session 不可用而失败时,不再把 LLM 编的假话发给玩家,
而是直报"我跟大脑的连接断了",并在 logs/app.log 留 WARN。玩家看到后去后台重存一次即可恢复。
B. watchdog 自动重连(推荐,开源可用,无硬编码路径)
mcp-watchdog.ps1:轮询 bot 端口(:3001),检测到 down→up 重启边沿或
AstrBot 后台报 disconnected / 0 工具时,自动调 AstrBot 管理 API
PATCH /api/v1/mcp/servers/enabled 触发重连。零 token、纯本地 HTTP。
# 常驻模式
.\mcp-watchdog.ps1 -CmdConfig <你的AstrBot>/data/cmd_config.json
# 单次检查(适合计划任务,每 30s 跑一次)
.\mcp-watchdog.ps1 -CmdConfig <你的AstrBot>/data/cmd_config.json -Once
# 或设环境变量,参数可省
$env:ASTRBOT_CMD_CONFIG = '<你的AstrBot>/data/cmd_config.json'
.\mcp-watchdog.ps1 -Oncewatchdog 从
cmd_config.json的dashboard.jwt_secret自签 JWT 调管理 API, 仅需后台管理账号密码在 cmd_config 里有 jwt_secret(默认有),不依赖外置密码。 状态存logs/mcp-watchdog.state,脚本重启不会误判"重启边沿"。
C. AstrBot 源码补丁(可选增强,治"后台假连接")
patches/astrbot-mcp-autoreconnect.patch:给 AstrBot 的 mcp_client.py 打补丁后,
session 丢失时调用前自动重连一次,玩家无感恢复。属可选:
AstrBot 升级会覆盖,需重打。
# 备份原文件后应用(补丁内路径相对 AstrBot 安装根目录)
cd <你的AstrBot根目录>
git apply --no-index 或 patch -p1 < minecraft-companion/patches/astrbot-mcp-autoreconnect.patch
# Windows 无 patch 命令时:用文件对比工具手动照补丁改,或重新打🔍 出问题先查日志(都在本仓库 logs/ 下,自动轮转):
日志 | 内容 | 什么时候看 |
| bot 全生命周期:连接/掉线/重连、MCP 客户端连上/断开、大脑调用、MCP down 直报、自检 | 默认排障入口 |
| 启动脚本 stdout/stderr( | bot 崩溃/启动失败 |
| watchdog 每次探测结果、PATCH 触发原因 | MCP 莫名断连 |
快速搜关键行:
Select-String -Path logs\app.log -Pattern "ERROR|WARN|断开|重连|session|直报" | Select-Object -Last 30🛠️ 常见问题
Q:AstrBot 侧 MCP 显示"未连接"或工具数 0? A:先启动 bot、后启动 AstrBot(或 bot 重启过)时注册不会自动补。去 AstrBot MCP 服务器设置里重新保存/编辑一次该服务器(触发 PATCH)即可重连;或按"先 bot 后 AstrBot"的顺序启动。
Q:建房卡住一直刷 "No available actions"? A:图纸起点悬空或 chunk 未加载。已自动处理(自动走位加载 chunk + 45s 停滞取消);手动调用旧版时请让 bot 先走到建造区。
Q:creative-give 发了物品但背包没有?
A:快捷栏槽位(0-8)部分服务器保护,已自动跳过;若全被拒,检查 mc.auth 是否有权限 / 是否创造模式。
Q:连不上 MCP?
A:确认 mcpPort 没被占用,http://127.0.0.1:3001/mcp 浏览器能返回 SSE 响应。
Q:机器人不动 / 动作冲突? A:身体控制权锁机制下,观察类工具不占用身体,动作类同一时刻只允许一个会话执行(guardian 保命可抢占)。等 2 分钟无动作自动让出。
🔧 开发说明
src/是唯一源码(TypeScript),改功能请改src/,然后npm run build产出dist/,重启生效dist/是 tsc 编译产物,不要手改 dist(会被下次 build 覆盖);早期 v1.0/1.1 时代的"dist 手改"说明已废弃npm run build编译检查 + 产出;tsc --noEmit仅类型检查tools/test-mcp.js:免客户端调用工具,调试神器新增工具:在
src/tools/xxx.ts里mcp.registerTool(...),并在src/tools/index.ts注册动作类工具会自动走身体锁(
mcp-server.ts的 ACTION_TOOLS 白名单);技能侧复合动作在src/skills/index.ts
📄 免责声明
机器人使用你的账号登录,请遵守服务器规则,勿用于作弊/破坏
配置文件含账号密码与 API Key,请勿提交到公开仓库
项目仅作学习交流,作者不对滥用行为负责
📦 版本记录
📦 版本记录
v1.6.0 (2026-09-05) · P2
🎣 真实钓鱼流程(P2-1):旧版"8s 硬收杆"(activateBlock 假抛竿、不检测咬钩)→ 新
src/tools/fishing.ts共用核心fishOnce:找水→就位→抛竿→等咬钩(mineflayer 粒子检测自动收杆)→背包快照 diff 判定鱼获。MCPfish工具与 lifestylefish技能同一实现(同 buildShelterCore 思路,杜绝工具/技能逻辑分裂);稀有鱼获(bow/enchanted_book/name_tag/nautilus_shell/saddle)触发fished_rare情绪 + 短期记忆⚡ 事件双轨制落地(P2-2):危险类改状态型 + 事件双轨 ——
events.tsscanDanger 改边沿触发(威胁首次进入警戒 / 等级升级才发事件并触发情绪;离开警戒范围复位,恢复后新威胁可再提醒),"周围持续有谁"改由每次上下文构建的状态轨注入,事件层不再 60s 重复刷屏(同样根治"不满足前置条件不硬上")🧩 聊天上下文组装器(P2-3):新增
src/chat-context.tsChatContextBuilder,统一组装world / self / danger状态轨 / player / recent_events / chat_history / shared_memories / player_observations / avoid_topics / 情绪语气喂给大脑;玩家消息与自主 trigger 共用;brain.ts保留旧拼接作未装配时兜底📉 情绪衰减接入确认(P2-4):核验 lifestyle tick 每 5s 已调
emotion.decay()(v1.4 已接),本轮技能 ctx 增加可选 emotion getter,自主钓鱼等技能路径同样能触发情绪📜 日志轮转(P2-5):
utils.tsapp.log 超 2MB 自动 size 轮转(保留 3 份);新增restart-with-rotate.ps1启动脚本(stdout/stderr 重定向 + 启动前 size 轮转),替代外部裸> restartN.log无限增长的重定向方式🎯 版本 bump → 1.6.0
v1.5.0 (2026-09-05)
v1.5.0 (2026-09-05)
🧠 记忆层 v2(蓝图第六节落地):新增
memory-v2.ts+ 独立memory2.json—— 短期记忆(session 内 importance 淘汰)、长期记忆(地点/带情感事件/人物/成就/失败)、对话记忆(话题冷却 300s / 玩家画像 / 滚动摘要)。v1 memory.json 结构与写入零改动,两层并存。大脑上下文自动注入「记忆段」(短期印象/熟悉地点/难忘往事/画像/话题避免)🎬 事件源接情绪补齐(P0-2):guardian 濒死撤退 → 后怕(almost_died)、死亡 → 沮丧(lost_items);挖到钻石 → 兴奋+成就事件+长期记忆;建成小屋 → 满足+长期事件
🧩 工具上下文新增 emotion/eventBus/memoryV2 注入通道(getter 形式,断线重连安全)
🧪 验证:
verify-memory-v2.cjs10 项断言全过(含畸形文件/损坏 json 防御)🎯 版本 bump → 1.5.0
v1.4.0 (2026-09-05)
🧩 情绪+事件接线 v1(蓝图"注入不干预"落地):
emotion.ts/events.ts正式启用——lifestyle 每 5s tick 复用状态快照做世界事件扫描(危险/环境/社交/成就,60s 去重),触发情绪(紧张/后怕/宁静…)并自然衰减(3%/tick);大脑上下文注入「当前情绪 + 刚发生的事」——只作语气参考,不干预决策⚡ 性能:EventWatcher 扫描从 4 次全量
getStatus()收敛为 1 次(复用 lifestyle 快照)🎯 版本 bump → 1.4.0(v1.3.2 = ① 重连泄漏修复快照)
v1.3.2 (2026-09-05)
🐛 修复断线重连泄漏:Guardian/Lifestyle/Companion 统一优雅 detach(定时器+监听器全清),断线/重连不再残留后台定时器抢身体——模拟 5 轮重连实测零泄漏(
verify-reconnect.cjs自检通过)🛡️ 防崩溃:陪伴层延迟问候/关心补 try/catch,断线后触发不再可能炸进程
🧩 新增基础模块:
emotion.ts(情绪系统 valence/arousal,13 事件触发+衰减)与events.ts(事件层 EventBus/EventWatcher,危险/环境/社交/成就检测)——为"人类视角感知 + 世界主动推送"铺路(本版未启用,接线见后续版本)🎯 版本号正式 bump 1.3.0 → 1.3.2
v1.3.0 (2026-08-31)
🪃 跟随玩家:新增
follow-player/stop-follow(动态寻路、1.5s 检测、掉线自愈、身体锁独占)🔒 身体锁补全:
jump/fly-to等动作工具统一走withBody,与 body-controller 白名单对齐,杜绝抢身体🧠 大脑桥纯转发版:brain 不再内置人设/直连 LLM,统一转发 AstrBot
/api/v1/chat(人设与记忆归 AstrBot 管,bot 只当"传话筒+执行手")🔗 MCP 多客户端:SSE 支持
?clientId=名字区分多方控制📊 49 个工具(13 分类)全量可用
🐛 修复:建房期间大脑不再重复指挥(工具互斥)、欢迎语跨进程持久化不重复刷
🗑️ 清理:移除已停用的
build-schem工具引用与示例图纸(开源合规检查)
v1.2.0 (2026-08-30)
🤖 AI 一键部署:新增
AGENT_DEPLOY.md(给 AI agent 的部署指南)+setup.js智能配置引导(node setup.js --auto全自动:装依赖/检测 AstrBot/生成配置/已有配置保护)🧠 大脑免配置:自动探测本机 AstrBot(6185) → 自动选 astrbot 桥模式,无需 API key
🔗 寻路大升级:换用
@nxg-org/mineflayer-pathfinder@0.0.26,gotoSmart 卡住自救链(挖方块→tp→喊救命)🛡️ 配置校验增强:启动时明确报出缺失字段,并提示用 setup.js 引导
📖 README 新增"AI Agent 部署"快速入口
v1.1.0 (2026-08-30)
📘 新增 PROJECT_DOC.md 项目总文档(初心实录/架构/计划/踩坑记录)
🧠 大脑记忆注入:每次回复前把「当前目标 / 历史目标 / 玩家偏好 / 最近经历」拼进上下文,机器人不再"失忆"
🔒 单活跃控制者锁:动作类工具同一时刻只允许一个会话执行,其他会话提示"bot 正被另一个会话控制",2 分钟无动作自动让出
⏱️ 建房停滞检测:build-schem 45 秒无实际进度自动取消并播报
✂️ 修复双句回复:send-chat 直接发话后 5 秒内大脑不再重复转发
📣 欢迎语只发一次:跨进程/断线重连不再重复刷欢迎语
v1.0.0 (2026-08-29)
首个可运行版本:mineflayer 身体 + AstrBot/LLM 大脑 + MCP SSE 接口
40+ MCP 工具:感知 / 移动 / 放置 / 合成 / 熔炼 / 钓鱼 / 繁殖 / 种田 / 战斗 / 图纸建房 / 创造模式发物品
🙏 Acknowledgements / 致谢
参考与启发(设计思路参考、代码独立实现)
本项目的功能设计与实现思路参考并受以下开源项目启发。除下文显式标注处,本项目代码均独立实现,与下列项目无代码复用关系;各项目版权归原作者所有:
项目 | 许可证 | 启发点 |
Apache-2.0 | 用 MCP 协议控制 mineflayer 机器人的整体思路 | |
MIT | LLM 驱动 mineflayer 玩 Minecraft 的玩法 | |
PrismarineJS/mineflayer(及 minecraft-data / pathfinder / prismarine-* 生态) | MIT | 机器人的身体(mineflayer 及其生态依赖库) |
随仓库分发的第三方代码(代码复用/分发,各版权归原作者,按各自许可证使用)
来源 | 许可证 | 用途 | 说明 |
PrismarineJS/mineflayer-schem(v1.5.1, © 2020 PrismarineJS, MIT) | MIT | 图纸读取与建造 | 离线副本身在 |
AGPL-3.0 | 大脑后端对接 |
|
运行依赖
mineflayer 生态(mineflayer、minecraft-data、pathfinder、tool、schematic、nbt 等,均 MIT)
@nxg-org/mineflayer-pathfinder(寻路)
MCP SDK
@modelcontextprotocol/sdk、prismarine-viewer(顶视图渲染)、pngjs、zod、express 等(见package.json)
本项目以 MIT 协议开源。使用本仓库意味着你确认并接受上述第三方组件的许可证条款。
This server cannot be deployed
Maintenance
Related MCP Connectors
One AI endpoint to search and call 22k+ MCP servers; 50+ hosted tools work instantly, no key.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Minecraft bots through over 30 verified skills including navigation, resource gathering, and advanced building. It allows for multi-bot management and seamless integration with MCP clients to automate complex in-game tasks.78MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control a Minecraft bot for movement, building, crafting, and instant schematic-based structure spawning via MCP tools.46 npm2Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables controlling a semi-autonomous Minecraft bot via MCP, supporting tasks like movement, combat, farming, and chatting.-
- AlicenseNot gradedqualityDmaintenanceA production-ready MCP server that gives an LLM agent standalone-equivalent control over a Mineflayer Minecraft bot — movement, mining, crafting, inventory, combat, containers, chat, and much more — exposed as 110 strongly-typed tools across 23 groups, with full bot lifecycle management and dual (poll + push) event streaming.92 npm4MIT