Awesome Mineflayer MCP

io.github.G0Osey99由 GitHub 帳號 G0Osey99 發布v1.3.2更新於 Oct 24, 2026

Control a Mineflayer Minecraft bot with 120+ MCP tools: move, mine, craft, fight, build, and see.

發布方自己的服務:Awesome Tools

已驗證STDIO僅桌面開發者工具AI 與機器學習

概覽

AI 產生的概覽

本機 MCP 伺服器,讓 AI 助理透過 123 個工具操控 Mineflayer Minecraft 機器人:移動、挖礦、合成、戰鬥、建造、交易並觀察世界。

可以做什麼
連線、重新連線與中斷機器人,查看連線狀態與預設帳號設定。觀察世界:生命狀態、位置、背包、玩家、實體、方塊、計分板與事件。移動與行動:尋路、挖掘、放置方塊、戰鬥、採集以及建造/挖掘巨集。管理物品與設施:背包、容器、熔爐、附魔、村民交易、合成與自動選工具。自動化生存與互動:自動進食、護甲、睡覺、載具、釣魚、書與告示牌、聊天與斜線指令。透過第一人稱截圖或示意圖查看世界,並保存跨重啟的路徑點。
適用情境
適合讓 AI 代理在你自行掌控的 Minecraft Java 版伺服器上無人值守地遊玩或測試:採集、挖礦、建造、戰鬥、交易或探索。也適合腳本化機器人流程,以及採集木材、挖鑽石等引導式提示。
執行需求
以 npx 或全域 npm 安裝執行的本機程序,需要 Node.js 20 或 22。需要一個 Minecraft Java 版伺服器(大致 1.8 到 1.21.x)。離線模式伺服器只需使用者名稱;線上模式伺服器需要 Microsoft 帳號並完成一次裝置碼登入,權杖會快取在 profiles 目錄。截圖需要 Chrome、Edge 或安裝 Playwright Chromium。
安裝前請注意
機器人會在真實世界中行動:可挖掘、放置、戰鬥、交易、傳送聊天並執行斜線指令,請使用自己掌控的伺服器。run_command 預設攔截管理類指令,但僅為盡力而為,並非硬性邊界;自主執行時建議使用 MCP_COMMAND_ALLOW、MCP_READ_ONLY,且不授予機器人帳號管理員權限。玩家聊天會作為不可信輸入傳給代理。除非設定 MCP_ENABLE_RAW,原始封包群組預設關閉。Microsoft 權杖會快取在磁碟上,密碼不會保存。不要把離線模式伺服器暴露到公開網際網路。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Awesome Mineflayer MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

awesome-mineflayer-mcp

[npm version] [node] [license: MIT]

A production-ready Model Context Protocol 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 123 strongly-typed tools across 26 groups, plus guided prompts, vision (real first-person screenshots + schematic maps), persistent waypoints, build/dig macros, and dual (poll + push) event streaming, with full bot lifecycle management. Tool results carry both human-readable text and machine-readable structuredContent.

Backed by the Mineflayer ecosystem: mineflayer-pathfinder (A* navigation), mineflayer-pvp (combat), mineflayer-collectblock (gathering), mineflayer-tool (auto tool-select), mineflayer-auto-eat, and mineflayer-armor-manager.


Requirements

  • Node.js ≥ 20 (developed on 22.16)
  • A Minecraft server to connect to (Java Edition). The bot auto-detects the server version. Don't have one? See Get a server to test against.
  • For online-mode servers: a Microsoft account (auth: "microsoft").

Supported versions

Supported
Minecraft (Java)the range supported by the bundled mineflayer 4.37 / minecraft-data (roughly 1.8 → 1.21.x); version is auto-detected, or pass version explicitly
Node.js20, 22 (LTS)

A few tools only work on newer versions/features (e.g. elytra_fly, chat signing). On a version mismatch the bot is kicked with an outdated client/server message — pass an explicit version.

Installation

Run it on demand with npx (no install needed):

bash
npx awesome-mineflayer-mcp

…or install it globally:

bash
npm install -g awesome-mineflayer-mcpawesome-mineflayer-mcp

The server speaks MCP over stdio, so it is normally launched by your MCP client rather than run by hand.

Use with an MCP client

Add it to your client's MCP server configuration. The recommended form uses npx so you always get the latest published build:

Claude Desktop (claude_desktop_config.json), Claude Code, Cursor, or any stdio MCP client:

json
{  "mcpServers": {    "mineflayer": {      "command": "npx",      "args": ["-y", "awesome-mineflayer-mcp"],      "env": {        "MCP_DISABLE_GROUPS": ""      }    }  }}

If you installed it globally, use "command": "awesome-mineflayer-mcp" with "args": [] instead.

Get a Minecraft server to test against

If you don't already have a server, spin up a throwaway offline-mode one with Docker (no account needed):

bash
# from a clone of this repo:docker compose up -d        # offline 1.20.4 server on localhost:25565docker compose logs -f      # wait for "Done (…)! For help, type "help""

…or a one-liner without the repo:

bash
docker run -d --name mc -p 25565:25565 -e EULA=TRUE -e ONLINE_MODE=FALSE -e VERSION=1.20.4 itzg/minecraft-server

Then connect: connect_bot { host: "localhost", username: "DevBot", auth: "offline" }. Tear it down with docker compose down -v (or docker rm -f mc). Don't expose an offline-mode server to the public internet.

Autonomous operation (default account)

For hands-off use, configure a default account so the bot connects automatically on startup — no connect_bot call required. Run the interactive setup:

bash
npx awesome-mineflayer-mcp setup

It asks for the server host/port, an offline or Microsoft account, and whether to auto-connect on startup, then writes ~/.awesome-mineflayer-mcp/config.json (no password is stored). For a Microsoft account it runs the device-code sign-in once and caches the token under profilesFolder, so later startups need no prompt.

On startup the server auto-connects the configured account (verify with get_connection_status). The agent can also call connect_default to (re)connect it or get_default_account to inspect it.

Configure without the wizard (env vars)

You can set the default account entirely from your MCP client config — handy for headless deploys. Environment variables override the config file:

json
{  "mcpServers": {    "mineflayer": {      "command": "npx",      "args": ["-y", "awesome-mineflayer-mcp"],      "env": {        "MCP_DEFAULT_HOST": "play.example.net",        "MCP_DEFAULT_USERNAME": "MyBot",        "MCP_DEFAULT_AUTH": "offline",        "MCP_AUTO_CONNECT": "true"      }    }  }}

For Microsoft auth in a headless setup, run setup once locally first (or point MCP_PROFILES_FOLDER at a directory with a pre-cached token).

Configuration (environment variables)

VariableDefaultPurpose
MCP_DISABLE_GROUPS(none)Comma-separated tool-group keys to disable (see catalog). Trim the surface for clients that struggle with a large tool list.
MCP_CHARACTER_LIMIT25000Max characters returned by any single tool call (truncated with a marker).
MCP_EVENT_BUFFER1000Size of the in-memory event ring buffer.
MCP_THROTTLE_MS250Minimum spacing between pushed resource-update / log notifications.
MCP_PROXIMITY_RADIUS32Radius (blocks) for proximity-filtered events (entity spawns, sounds).
MCP_ACTION_TIMEOUT_MS60000Default timeout for long actions when the caller omits one.
MCP_DEFAULT_HOST / MCP_DEFAULT_PORT—Default server to auto-connect on startup.
MCP_DEFAULT_USERNAME—Default account name (offline) or email (microsoft).
MCP_DEFAULT_AUTHofflineDefault auth mode: offline or microsoft.
MCP_DEFAULT_VERSIONautoForce a protocol version for the default account.
MCP_DEFAULT_AUTO_RECONNECTtrueAuto-reconnect the default account on disconnect.
MCP_AUTO_CONNECTtrue†Auto-connect the default on startup († when a default is configured).
MCP_PROFILES_FOLDER<home>/profilesMicrosoft auth token-cache directory.
AWESOME_MINEFLAYER_MCP_HOME~/.awesome-mineflayer-mcpConfig + token-cache directory.
MCP_READ_ONLYfalseObserve-only mode: register only read-only tools (+ lifecycle). See Safety.
MCP_COMMAND_DENY(admin verbs)Slash commands run_command blocks. Setting it replaces the default; set empty to allow all.
MCP_COMMAND_ALLOW(none)If set, a strict allow-list: only these commands run (deny list ignored).
MCP_ALLOWED_HOSTS(any)Comma-separated allow-list of hosts the bot may connect to.
MCP_CHAT_MIN_INTERVAL_MS0Minimum spacing between outbound chat/whisper/command sends (anti-spam).
MCP_ENABLE_RAWfalseEnable the advanced/unsafe raw protocol tool group (direct packet send/subscribe).
MCP_SCREENSHOT_WIDTH / _HEIGHT800 / 450Default get_screenshot image size (px).
MCP_SCREENSHOT_LOAD_MS2500How long to let the world render before capturing a screenshot.
MCP_VIEW_DISTANCE4Chunk render distance for screenshots.
MCP_SCREENSHOT_BROWSER_CHANNEL(auto)Browser channel for screenshots (chrome, msedge, chromium).
MCP_SCREENSHOT_EXECUTABLE_PATH(none)Explicit browser executable path for screenshots (overrides channel).

Example — disable rarely-used groups:

MCP_DISABLE_GROUPS=creative,villager,enchanting,settings

Quick start (tool flow)

  1. connect_bot { host, username, auth } — connect (resolves once the bot spawns). Skip this if you configured a default account — the bot auto-connects on startup; just check get_connection_status.
  2. Act: goto, dig, collect_block, craft_item, pvp_attack, chat, …
  3. Observe: call get_observation for a one-shot snapshot (vitals, position, inventory, nearby entities, new events) — pass the returned events.nextSince back each tick. Or compose get_state / get_inventory / list_entities / get_events, or subscribe to the bot://* resources.
  4. disconnect_bot when done.

New to the server? Use the getting_started prompt (see Prompts) for an in-context walkthrough.

Block / item / entity arguments accept human names ("iron_ore", "diamond_pickaxe", "zombie"); unknown names return fuzzy suggestions.

Authentication

  • auth: "offline" (default) — offline-mode servers; username is the in-game name.
  • auth: "microsoft" — username is the account email. A device-code prompt is emitted as an msa_code event / log notification. Set profilesFolder to cache the token so subsequent runs skip the prompt, or pass a cached accessToken. Tip: run npx awesome-mineflayer-mcp setup once to do the device-code sign-in and cache the token, then the server connects autonomously (see Autonomous operation).

Tool catalog (123 tools, 26 groups)

Full generated reference (every tool, prompt, resource): docs/TOOLS.md.

Group keys (for MCP_DISABLE_GROUPS) are shown in brackets.

  • Lifecycle [lifecycle] — connect_bot, connect_default, disconnect_bot, reconnect_bot, respawn, get_connection_status, get_default_account
  • State & inspection [state] (read-only) — get_observation (one-call snapshot for an agent's observe loop), get_state, get_inventory, list_players, list_entities, find_nearest_entity, get_entity_details, get_scoreboards, get_teams, get_boss_bars, get_control_states, get_chat_patterns, support_feature, pathfinder_status, get_settings, get_physics, get_loaded_plugins
  • World queries [world] (read-only) — get_block_at, find_blocks, get_cursor_target, get_blocks_in_region, wait_for_chunks_to_load
  • Movement & pathfinding [movement] — goto, set_goal, flee_from, follow_entity, stop_pathfinding, get_path_to, configure_movements, configure_pathfinder, set_control_state, clear_control_states, elytra_fly, wait_for_ticks, set_physics_enabled
  • Look [look] — look_at, look, look_at_entity
  • Digging & building [digging] — dig, place_block, activate_block, activate_entity, swing_arm
  • Combat [combat] — pvp_attack, attack_entity, pvp_stop, pvp_configure
  • Inventory & items [inventory] — equip_item, unequip_item, toss_item, set_quickbar_slot, consume, activate_item, click_window, move_slot_item, transfer_items
  • Containers [containers] — open_container, read_open_container, container_deposit, container_withdraw, close_window
  • Furnace / smelting [furnace] — open_furnace, furnace_action, furnace_status, smelt_item
  • Enchanting & anvil [enchanting] — enchant_item, anvil_combine
  • Villager trading [villager] — open_villager, trade_with_villager
  • Crafting [crafting] — list_recipes, craft_item
  • Block gathering [gathering] — collect_block, cancel_collect, set_collect_config
  • Tool auto-select [tool] — equip_tool_for_block, set_tool_chest_locations, get_best_tool
  • Survival automation [survival] — autoeat_set_enabled, autoeat_configure, autoeat_eat, autoeat_cancel, autoeat_preview, armor_equip_all
  • Beds & sleep [beds] — sleep, wake
  • Vehicles [vehicles] — mount_entity, dismount, steer_vehicle
  • Fishing, books & signs [fishing] — fish, cancel_fish, write_book, update_sign
  • Chat & communication [chat] — chat, whisper, run_command, tab_complete, register_chat_pattern, remove_chat_pattern, wait_for_message
  • Settings [settings] — set_settings
  • Creative mode [creative] — creative_set_inventory_slot, creative_clear_inventory, creative_fly, creative_fly_to
  • Vision [vision] — get_screenshot (real first-person textured game render), render_map (dependency-free schematic map) — see Vision
  • Waypoints [waypoints] — set_waypoint, list_waypoints, delete_waypoint, goto_waypoint (persisted across restarts)
  • Build & dig macros [build] — clear_region, dig_tunnel, dig_staircase, fill_region (cancellable, multi-block)
  • Events & telemetry [events] — get_events, cancel_task
  • Raw protocol [raw] — send_packet, subscribe_packet, list_packet_subscriptions (advanced/unsafe; off unless MCP_ENABLE_RAW=true)

Long-running actions (goto, dig, collect_block, pvp_attack, fish, smelt_item, craft_item) are mutually exclusive and cancellable — start a new movement/combat action to supersede the prior one, or call stop_pathfinding / pvp_stop / cancel_collect / cancel_fish / cancel_task.

Prompts

The server exposes guided, parameterized workflows as MCP prompts — clients surface them as slash-commands / templates. They teach an agent how to chain the right tools for a goal:

  • getting_started — orientation: connect → observe → act → recover.
  • gather_wood { count?, logType? } — find trees and collect logs.
  • mine_to_diamonds { targetY? } — descend safely and branch-mine.
  • build_shelter { material? } — enclose a safe space before nightfall.
  • find_and_smelt { input, fuel? } — mine/gather an input and smelt it.
  • follow_and_defend { player } — follow a player and fight off hostiles.

Block/item arguments offer name autocompletion drawn from the connected world.

Vision — let the agent see

Two complementary tools return PNG images as MCP image content, so a vision-capable model (and a human) can look at the world instead of reconstructing it from JSON.

get_screenshot — a real game render

Captures an actual textured Minecraft render of what the bot sees — first-person from its eyes (default) or a third-person orbit — exactly like an in-game screenshot. Under the hood, prismarine-viewer renders the real world (client-side WebGL) and a headless browser screenshots it. Args: width, height, firstPerson, waitMs, viewDistance.

Setup (one-time). The renderer deps ship as optional packages (installed by default with npm install). All you also need is a browser:

  • Already have Google Chrome or Microsoft Edge? Nothing to do — it's used automatically.
  • Otherwise run npx playwright install chromium once.
  • Headless servers: install Chrome/Chromium, or set MCP_SCREENSHOT_EXECUTABLE_PATH / MCP_SCREENSHOT_BROWSER_CHANNEL.

If the deps/browser aren't available, get_screenshot returns a clear UNSUPPORTED error with these steps — the rest of the server is unaffected. The renderer packages are pure-JS (no native build), but if you want the leanest possible install and don't need screenshots, use npm install --omit=optional.

render_map — a dependency-free schematic

A lightweight colored top-down map (or mode:"slice" cross-section) drawn from block data with a built-in PNG encoder (no extra deps at all). Good as a minimap/overview or when the screenshot extras aren't installed. North (−Z) is up; bot = white dot with a facing tick; players cyan, hostiles red, passives yellow, items grey; includes a block legend.

Safety & guardrails

Sensible defaults that matter once an agent drives the bot autonomously (especially with a default account):

  • Command policy. run_command blocks server-administration verbs by default (op, deop, ban, kick, stop, whitelist, and the execute/function/schedule wrappers, …). Ordinary gameplay commands (/tp, /time, /give, …) are allowed. Override with MCP_COMMAND_DENY (replaces the default; empty = allow all) or lock down with MCP_COMMAND_ALLOW (strict allow-list). This is best-effort defense-in-depth, not a hard boundary — it gates on the first command verb, and a bot with operator permissions could still find a way around it. For untrusted/autonomous deployments, prefer MCP_COMMAND_ALLOW, MCP_READ_ONLY, and not granting the bot's account operator rights. Note: incoming player chat is delivered to your agent as events — treat it as untrusted input.
  • Host allow-list. MCP_ALLOWED_HOSTS restricts which servers connect_bot / reconnect_bot may join, so an agent can't repoint the bot (and its cached token) at an arbitrary address.
  • Read-only mode. MCP_READ_ONLY=true registers only observation tools (plus connection management) — look-but-don't-touch.
  • Rate limiting. MCP_CHAT_MIN_INTERVAL_MS spaces outbound chat/commands to avoid spam-kicks.
  • No secret leakage. Passwords / access tokens are never stored on disk and are redacted from connection-error messages.

Resources

Subscribe-capable JSON resources for clients that support resource subscriptions:

  • bot://state — live self snapshot (position, vitals, gamemode, time, weather, held item, control states)
  • bot://inventory — items, armor, off-hand, held slot
  • world://entities — up to 50 nearest tracked entities
  • world://players — server roster
  • bot://events — tail of recent events
  • bot://waypoints — saved named waypoints

Plus parameterized resource templates for on-demand lookups: block://{x}/{y}/{z} and entity://{id}.

Events

Game events are delivered two ways:

  • Pull: get_events({ since, types, limit }) drains a ring buffer; pass the returned nextSince to read only new events. dropped: true signals the buffer overflowed since your since.
  • Push: subscribed resources emit throttled notifications/resources/updated; notable lines (chat, death, kick, error, msa_code) are forwarded via sendLoggingMessage.

High-frequency observations (movement, per-tick updates, block/entity updates, time) are intentionally not buffered — read them on demand via get_state and the read-only tools.

Development (from source)

bash
git clone https://github.com/G0Osey99/awesome-mineflayer-mcp.gitcd awesome-mineflayer-mcpnpm installnpm run build       # tsc -> dist/npm run typecheck   # tsc --noEmitnpm test            # vitest (unit tests for the pure logic)npm run dev         # tsx src/index.ts (run from source, no build step)

Architecture and the full design rationale: docs/superpowers/specs/2026-06-28-mineflayer-mcp-server-design.md.

src/  index.ts        entry (stdio transport, graceful shutdown, crash guards)  server.ts       builds the McpServer, registers tool groups + resources + prompts  config.ts       env + constants + safety policy (groups, read-only, command/host allow-lists)  bot/            manager (lifecycle FSM), plugins, events, wire-events, state, windows, action-locks  tools/          one module per tool group (+ registry.ts)  prompts/        guided multi-tool workflows  resources/      MCP resources + push notifications  util/           errors, format, result, resolve (name→id + fuzzy), serialize, async, redact  schemas/        shared Zod fragments

See CONTRIBUTING.md for how to add a tool/group and run a local test server.

Publishing (maintainers)

Pushing a v* tag publishes to npm, GitHub Container Registry (Docker), the MCP Registry, and updates Smithery — all via .github/workflows/ci.yml. npm version keeps package.json, src/config.ts, and server.json in sync.

bash
npm version minor        # bumps + syncs versions, commits, and tagsgit push --follow-tags   # triggers the release jobs

Full one-time setup and the step-by-step release checklist are in RELEASE.md. The published npm package ships only dist/, README.md, LICENSE, and NOTICE (see the files field).

Troubleshooting

Connection failures now return a specific error code and suggestions (not an opaque INTERNAL). Common cases:

Symptom / errorLikely causeFix
CONNECT_REFUSED (ECONNREFUSED)Wrong host/port, or server not runningCheck host/port; confirm the server has finished starting (default port 25565).
CONNECT_REFUSED (ENOTFOUND)Hostname doesn't resolveDouble-check the server address.
ONLINE_MODE / "unverified username"Server is online-mode; bot used offline authUse auth: "microsoft", or set online-mode=false on the server.
VERSION_MISMATCH / "outdated client/server"Auto-detected version is wrongPass an explicit version (e.g. "1.20.4").
Chat rejected / "secure profile"Server requires signed chatConnect with disableChatSigning: true.
AUTH_FAILEDStale/invalid Microsoft tokenRe-run npx awesome-mineflayer-mcp setup, or clear the profilesFolder cache and sign in again.
FORBIDDEN on run_commandCommand blocked by policySee Safety — adjust MCP_COMMAND_DENY / MCP_COMMAND_ALLOW.
FORBIDDEN on connect_botHost not in allow-listAdd it to MCP_ALLOWED_HOSTS (or unset to allow any).
NO_PATHPathfinder can't reach the goalMove closer, clear obstacles, or relax configure_movements.
Microsoft device-code promptFirst-time MSA sign-inVisit the URL from the msa_code event; set profilesFolder to cache it.

First-run sign-in for Microsoft auth is interactive once — run npx awesome-mineflayer-mcp setup to do it and cache the token.

Docker

A Dockerfile is included for headless/autonomous deployments (configure a default account via MCP_DEFAULT_*):

bash
docker build -t awesome-mineflayer-mcp .

Mount a volume at /root/.awesome-mineflayer-mcp to persist the config and Microsoft token cache. (The server speaks MCP over stdio, so a container is most useful for autonomous default-account runs rather than for a client to spawn.)

Limitations

  • One bot per server process (single-session by design).
  • Evaluations require a seeded world. A live Minecraft world is not deterministic, so the evaluation set in eval/ targets a documented seeded fixture (see eval/fixture.md); it cannot be verified against an arbitrary live server.
  • cancel_fish is best-effort (Mineflayer exposes no first-class fishing abort).
  • Microsoft auth's first run needs an interactive device code (surfaced as an msa_code event); use profilesFolder to cache it.

License

MIT

來源:README.md,提交 89a407c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.3.2最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Awesome 整合