Minecraft Survival MCP Server
Enables LLM agents to play and survive in Minecraft by abstracting low-level tasks like pathfinding, building, and crafting into high-level transactional commands. It utilizes a "Helix" architecture to handle execution and coordinate math autonomously, allowing models to focus on strategy and high-level intent.
README
Minecraft Survival MCP Server
A TypeScript Model Context Protocol (MCP) server for Minecraft Survival, powered by Mineflayer. This server is specifically designed to allow LLM agents to play and survive in Minecraft.
Vision: The Helix Approach
This project is inspired by the architecture of Figure AI’s Helix. While existing implementations like yuniko-software/minecraft-mcp-server provide a comprehensive set of low-level tools, mc-mcp is designed to shift the burden of "trivial" execution away from the LLM.
- The Mind (LLM): Focuses on high-level intent, strategy, and long-term goals.
- The Body (MCP Server): Handles the "transactions"—autonomous pathfinding, geometric math, block-by-block construction logic, and environmental processing.
The goal is to prevent the LLM from getting bogged down in coordinate arithmetic or individual tool selection, allowing it to act as a pure cognitive layer.
Quick Start
Installation
npm install
npm run build
Screenshot Dependency (Optional)
The capture_bot_view tool needs node-canvas-webgl.
Use Node 24 LTS (or 22 LTS) before installing:
nvm install 24
nvm use 24
npm install github:PrismarineJS/node-canvas-webgl
The Helix Approach & Key Improvements
Traditional Minecraft MCP implementations often treat the LLM as a "low-level controller." This results in high latency, token waste, and frequent failures due to the LLM struggling with 3D coordinate math or step-by-step block placement.
mc-mcp flips this model by implementing a "Transactional Body" architecture:
1. Intent vs. Execution (Mind/Body Split)
Instead of asking the LLM to "Move forward, then turn left, then jump," the LLM simply states "Go to the village at [X, Y, Z]." The MCP server (the Body) handles the A* pathfinding, obstacle avoidance, and physics calculations autonomously.
2. Transactional Operations
Complex tasks are exposed as single high-level transactions.
- Current:
get_own_position,move_to_coordinates,move_to_player,open_door_or_trapdoor,close_door_or_trapdoor,mine_block_by_coords,mine_room,break_tree,mine_stairs,place_block_at,place_wall,place_ceiling,get_inventory_contents,get_inventory_status,drop_inventory_item,put_item_in_chest,take_item_from_chest,get_chest_contents,get_chest_status,craft_item,smelt_item,capture_bot_view,get_biome_info,get_daytime_info,sleep_in_bed,locate_blocks_in_area,locate_dropped_items,search_blocks_wiki,search_items_wiki,get_crafting_recipe,list_players,find_player,get_player_coordinates,distance_to_player,find_nearest_players. - Planned:
build_structure(Geometric templates handled by the server),harvest_area(Area scanning and path optimization).
3. Reduced Cognitive Load
By abstracting the "how," the LLM has more context window available for the "why"—allowing for more complex reasoning, multi-agent coordination, and creative problem-solving without being distracted by Minecraft's technical constraints.
4. Container-First Architecture
Designed to run in isolated environments (Docker/GHCR), making it easy to deploy "worker bees" that can be controlled by a centralized intelligence.
Development & Deployment
Local Development
npm install
npm run dev
Environment Variables
MCP_TRANSPORT: Set toremoteto enable the HTTP/SSE server (default:stdio).PORT: Port for the remote server (default:3000).HOST: Host for the remote server (default:0.0.0.0).MC_HOST: Minecraft server host used at startup (default:localhost).MC_PORT: Minecraft server port (default:25565).MC_USERNAME: Bot username (default:MCP-Bot).ENABLE_VIEWER: Set to1/trueto start prismarine-viewer web stream after bot spawn (default: disabled). Viewer page includes a HUD overlay (hearts and held item).VIEWER_PORT: Port for prismarine-viewer (default:3000).ENABLE_IMAGES: Set to1/trueto enable registration ofcapture_bot_view.LOG_LEVEL: Pino log level (trace,debug,info,warn,error,fatal; default:info).
Available Tools
Movement Module
get_own_position: Get the bot's current coordinates.move_to_coordinates: Move to target coordinates. Inputs:x,y,z,allow_block_breaking,allow_block_placement,timeout_ms.move_to_player: Move near a player. Inputs:username,range,allow_block_breaking,allow_block_placement,timeout_ms.open_door_or_trapdoor: Open a door/trapdoor by optional coordinates or nearest in range. Inputs: optionalx,y,z,max_distance.close_door_or_trapdoor: Close a door/trapdoor by optional coordinates or nearest in range. Inputs: optionalx,y,z,max_distance.
Mining Module
mine_block_by_coords: Mine one block with mineability/tool checks. Inputs:x,y,z,timeout_ms.mine_room: Mine a cuboid area layer-by-layer. Inputs:start_x,start_y,start_z,length,width,depth,timeout_ms.break_tree: Break all connected log-like blocks (log,stem,hyphae). Inputs:x,y,z,timeout_ms,allow_build_up_if_needed.mine_stairs: Create a descending stair tunnel to a target depth. Inputs:depth,timeout_ms.
Building Module
place_block_at: Place one block at coordinates with support/entity/inventory checks. Inputs:block_name,x,y,z,timeout_ms.place_wall: Place a wall plane from start coordinates. Inputs:block_name,start_x,start_y,start_z,x_length,y_height,z_length, optionalx_direction,y_direction,z_direction,timeout_ms. Resource check is enforced before building.place_ceiling: Place a ceiling plane from start coordinates. Inputs:block_name,start_x,start_y,start_z,x_length,z_length, optionalx_direction,z_direction,timeout_ms. Resource check is enforced before building.
Inventory Module
get_inventory_contents: List inventory item stacks with item names and counts.get_inventory_status: Report inventory slot usage (used,free,total).drop_inventory_item: Drop items by query/name and amount. Inputs:query,count. Returns clear errors if missing or insufficient quantity.put_item_in_chest: Put items from inventory into the nearest chest in reach. Inputs:query,count. Returns clear errors if chest/item is missing.take_item_from_chest: Take items from the nearest chest in reach into inventory. Inputs:query,count. Returns clear errors if chest/item is missing or insufficient.get_chest_contents: List nearest chest contents with item names and counts.get_chest_status: Report nearest chest slot usage (used,free,total).
Vision Module
capture_bot_view: Capture a first-person screenshot from the bot. Inputs:width(default800),height(default400),view_distancein blocks (default96),quality,look_at_x,look_at_y,look_at_z.get_biome_info: Get biome info at current or optional coordinates. Inputs: optionalx,y,z.get_daytime_info: Get day/time state and ticks until sleep window.sleep_in_bed: Sleep in bed by optional coordinates or nearest bed in range. Inputs: optionalx,y,z,max_distance,timeout_ms.locate_blocks_in_area: Locate blocks by name/id/wildcard, sorted by nearest. Inputs:query,radius,max_results, optionalcenter_x,center_y,center_z.locate_dropped_items: Locate dropped item entities, sorted by nearest. Inputs:radius,max_results, optionalquery.
Wiki Module
search_blocks_wiki: Search block names and ids from Mineflayer's built-in registry. Inputs:query,max_results.search_items_wiki: Search item names and ids from Mineflayer's built-in registry. Inputs:query,max_results.get_crafting_recipe: Show recipe ingredient requirements for an item and amount, including crafting-table requirement. Inputs:item,amount.
Crafting Module
craft_item: Craft an item by name and amount. Uses inventory crafting or a nearby crafting table. On failure, returns actionable guidance about missing resources and/or crafting table requirement. Inputs:item,amount.smelt_item: Smelt an item in a nearby furnace-like block. On failure, returns actionable guidance about missing furnace, fuel, and/or input resources. Inputs:item,amount, optionalfuel_query. Uses a fixed internal timeout (2x the normal Minecraft smelt time) for progress stalls.
Multiplayer Module
list_players: Get all currently known players on the server.find_player: Search players by partial username (case-insensitive). Inputs:query.get_player_coordinates: Get coordinates of a visible player. Inputs:username.distance_to_player: Calculate 3D distance from the bot to a player in blocks. Inputs:username.find_nearest_players: Find nearest visible players. Inputs:x_parameter.
The server manages exactly one bot process and attempts connection automatically on startup.
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。