{"name":"io.github.gjlmotea/blockhand-for-minecraft-education-mcp","slug":"gjlmotea-blockhand-for-minecraft-education-mcp","title":"BlockHand","description":"Minecraft Education Edition MCP server: Agent robot, 24 build shapes, events. No add-on needed.","url":"https://mcp.market/server/gjlmotea-blockhand-for-minecraft-education-mcp","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":33,"stars":3,"forks":0,"downloads_week":71,"last_push_at":"2026-10-19T08:01:34.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/gjlmotea/blockhand-mcp","website":"https://github.com/gjlmotea/blockhand-mcp","version":"0.1.1","remotes":[],"packages":[{"registryType":"npm","identifier":"@gjlmotea/blockhand-mcp","version":"0.1.1","transport":{"type":"stdio"},"environmentVariables":[{"description":"Port the game connects to with /connect (default 19131, shared by all AI sessions)","format":"number","name":"MINECRAFT_EDU_WS_PORT"},{"description":"Listen address (default 127.0.0.1, loopback only)","format":"string","name":"MINECRAFT_EDU_WS_HOST"}]}],"tools":[{"name":"mc_agent_act","description":"Act in a direction: attack hits a mob, destroy breaks a block and puts it in the inventory, till turns dirt into farmland. repeat runs it several times in a row. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_collect","description":"Pick up dropped items near the Agent. Leave item empty to pick up everything. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_create","description":"Spawn the Agent next to the player. Calling it again when the Agent already exists is safe. …","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_agent_inventory","description":"Do one thing with the Agent inventory: count reads the amount in a slot, space reads the room left, detail reads item details, drop drops a quantity, dropAll drops everything in a direction, transfer moves items between slots. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_move","description":"Move the Agent steps blocks in a direction, one command per block. A step blocked by a block fails without stopping the rest. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_place","description":"Take a block from an inventory slot (1-27) and place it in a direction. Fails when the slot is empty. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_program","description":"Run a sequence of Agent actions in order as one program. This is the main tool for getting real work done with the Agent: laying a path as it walks, digging a tunnel, tilling a whole field. Each step is reported separately, and it can stop at the first failure.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_agent_sense","description":"Read what is around the Agent without changing the world: inspect reads the block type, inspectData reads the block data value, detect checks whether there is a solid block in that direction, detectRedstone checks for a redstone signal. These are the Agent's eyes; look before acting.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_teleport","description":"Bring the Agent to the player. Use it to recover the Agent when it is lost, stuck or has fallen into a hole. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_agent_turn","description":"Turn the Agent left or right in place, 90 degrees each time. times=2 turns it around. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_analyze_symmetry","description":"Check whether a region is symmetric left to right (or front to back), and when it is not, point out **which parts** are not.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_await_connection","description":"Block until the game connects to the bridge, for at most timeoutSeconds seconds. A timeout is not an error; it just reports connected=false. Call it after asking the user to type /connect.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_blueprint_preview","description":"Compute only, build nothing: group a block-by-block blueprint by block type and report the total block count and the number of merged fill batches.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_build_blueprint","description":"Build any form from a list of coordinate -> block entries; identical blocks are merged into the fewest fill commands automatically.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_build_preview","description":"Compute only, build nothing: report how many blocks the shape uses, where its bounding box is, and how many fill commands it splits into. …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_build_shape","description":"Build a shape directly in the world. Block coordinates are merged into the fewest fill commands automatically, so a sphere of radius 20 takes a few hundred commands instead of thirty thousand.… …","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_clone","description":"Copy the region from begin to end to destination. cloneMode=\"move\" clears the original. Good for mass-producing a hand-built template.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_compare_regions","description":"Compare a whole region with one command; good for checking whether a student build matches a reference.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_effect","description":"action=\"apply\" applies a potion effect; \"clear\" removes all effects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_events_catalog","description":"Return the event names known to work. Mojang does not formally document this list, so subscribing to a name outside it is allowed; it is just marked unverified. No side effects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_events_poll","description":"Return the events after a cursor. Use afterCursor=0 the first time, then pass back the nextCursor from the previous call to keep reading.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_events_subscribe","description":"Start receiving a kind of game event (for example PlayerMessage for chat, BlockPlaced for placed blocks, PlayerTravelled for movement).","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_events_unsubscribe","description":"Stop receiving a kind of event. Events already in the buffer are kept.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_feedback","description":"Play a sound or spawn a particle effect at a coordinate, to give players immediate sensory feedback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_fill","description":"Fill the box from from to to with one kind of block. Bedrock allows at most 32768 blocks per fill; beyond that use mc_build_shape, which splits the work into batches automatically. mode=hollow fills the six outer faces and clears the inside to air; mode=outline replaces only the six outer faces and leaves the inside as it is.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_gamemode","description":"Switch the target to survival, creative, adventure or spectator.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_give","description":"Give a target a number of items. To give the Agent something to place, give it to the player first and then hand it to the Agent.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_message","description":"say posts to everyone in chat, tell sends a private message, title / subtitle / actionbar show large text on screen. Use it to talk to players while teaching or reporting progress.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_player_action","description":"kill kills the target, clear empties the inventory (optionally one item only), xp gives experience, ability turns the worldbuilder / mayfly / mute abilities on or off.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_query_target","description":"Query the coordinates, facing and unique ID of entities by selector, returned as parsed JSON. This is the standard way to get the current position of the player or the Agent; ask this before building so you know where to build.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_read_block","description":"Report what is actually at a coordinate, without you having to guess first. Education has no command to read a block,","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_run_command","description":"Send one raw slash command, for anything this server has no dedicated tool for. Single line only, no newline chaining. Refuses wsserver / connect / closewebsocket, including when wrapped in execute (that would cut this bridge). The leading slash is optional.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_run_commands","description":"Send several raw commands in order; each one passes the command policy on its own. Good for hand-written macros; for many blocks use mc_build_shape or mc_build_blueprint, which merge them into the fewest fill commands automatically.","write_action":true,"price_micros":0,"input_schema":null},{"name":"mc_set_block","description":"Place one block at a coordinate. For many blocks use mc_fill or mc_build_shape instead; calling this tool block by block is very slow.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_status","description":"Report the WebSocket bridge, whether the game is answering commands (commandState), the last reply and timeout times, the /connect command and subscribed events. connected only means the network link is up; timed-out means a recent command got no reply, so do not assume the game can still act. No side effects.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_structure","description":"Save a region as a named structure, or place a saved structure back into the world. This is the official way to keep what the AI built, mass-produce it, or take it to another world.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_summon","description":"Spawn one entity at a coordinate, optionally with a name tag. Leave position empty to spawn it where the command runs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_teleport","description":"Teleport the targets of a selector to a coordinate. target defaults to @s, the player running the commands.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_test_block","description":"Report whether a coordinate holds the given block, without changing the world. Use it to check the terrain before building or to verify what was just built.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_ticking_area","description":"Keep a region loaded so its mechanisms keep running after the player leaves. Needed when the Agent works on its own far away.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_undo","description":"Undo the last protected setblock/fill or build tool call; several build commands count as one step. All target blocks are checked first, then each region is restored with conditional commands so later changes are not overwritten. operationId guards against undoing the wrong version. Use overwriteChanges only when the user explicitly asks to overwrite conflicts, or accepts restoring the site after ","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_undo_control","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_verify_reading","description":"Block reading relies on the testforblock **failure message** revealing the block name, and that message format has no official stability guarantee.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mc_world_settings","description":"Change one world setting at a time: time sets the time (day/night/noon/midnight or a tick count), weather the weather, gamerule a game rule, difficulty the difficulty.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-10-27T18:17:27.612Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-27T18:17:27.527Z","components":{"code":{"score":25,"max":25,"notes":["77 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 8 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@gjlmotea/blockhand-mcp","version":"0.1.1","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":3,"publishedAt":"2026-10-19T08:03:19.701Z","repositoryUrl":"git+https://github.com/gjlmotea/blockhand-mcp.git","weeklyDownloads":71}],"repo":{"found":true,"owner":"gjlmotea","repo":"blockhand-mcp","archived":false,"pushedAt":"2026-10-19T08:01:34Z","stars":3,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/40420568?v=4","ownerCreatedAt":"2018-06-20T06:55:18Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/40420568?v=4&s=128","source":"github"},"presence":{"stars":3,"forks":0,"downloadsWeek":71,"license":"MIT","lastPushAt":"2026-10-19T08:01:34.000Z","score":33}}}},"grade_history":[],"reviews":[]}