Skip to main content
Glama

Minecraft MCP

Let an AI agent play in your Minecraft client, while you watch and stay in control.

Minecraft MCP connects your game to an MCP-capable agent. Ask it to explore, gather resources, build or debug a script. You see what happens from your own player’s perspective and can take over with /mcp stop.

It comes in two parts: a Minecraft client mod and an agent package containing the MCP server and Skill. Install and update them independently. Both run on your computer. The package includes a Codex plugin; Claude Code, Claude Desktop, Cursor and other local MCP clients can connect to the same server.

What you can do

  • Play together. The agent controls your real client, with progress messages in local chat.

  • Automate with scripts. JsMacros runs JavaScript in the game; the agent uses its usual editor, files and shell to develop scripts.

  • See and debug. Capture the game view, read script output as it arrives, and draw markers in the world.

  • Use your installed mods. The Skill teaches the agent how to discover their APIs. Baritone adds navigation, mining and building automation.

  • Take over. Stop the agent’s scripts and release its controls from Minecraft.

Related MCP server: Minecraft MCP Server Pro

Requirements

The current client mod targets the following versions. Other Minecraft versions and loaders are not yet verified.

Component

Requirement

Minecraft Java Edition

26.3

Mod loader

Fabric Loader 0.19.5 or later

Java

25 or later

Scripting mod

JsMacros Reloaded 2.2.1

Agent runtime

Node.js 22 or later, available on PATH

Agent application

Codex, Claude Code, Claude Desktop, Cursor, or another client with local stdio MCP support

Recommended mod

Baritone, matching your Minecraft version

Baritone is optional but strongly recommended. Without it, scripts, screenshots and direct player controls still work; navigation and resource gathering require more scripting. JsMacros Reloaded 2.2.1 bundles the Fabric API modules this mod needs.

Get started

Go to GitHub Releases and download the client mod JAR (.jar, not the sources JAR) and agent package (.tgz) listed together in the release. Check the release notes for compatible Minecraft and dependency versions. You do not need to build from source; build instructions are in Development.

1. Add the mod to Minecraft

  1. Create or select a Fabric installation matching the release requirements, then open its game folder in your launcher.

  2. Put the Minecraft MCP JAR in mods/, alongside JsMacros and, preferably, Baritone.

  3. Launch Minecraft. With Mod Menu installed, open Mods → Minecraft MCP → Configure. You can also press F8, or enter /mcp config in a world.

  4. Copy the token and note the port. You will use them to pair the agent with this instance.

Use the game folder for the installation you actually launch:

Launcher

Where to put the JAR

Official Minecraft Launcher

The installation's Game Directory, inside mods/. With the default directory, this is .minecraft/mods/ on Windows/Linux or ~/Library/Application Support/minecraft/mods/ on macOS.

Prism Launcher or MultiMC

Open the selected instance's Minecraft folder and use its mods/ directory, usually .minecraft/mods/ inside the instance folder.

Other launchers, including Swift Craft Launcher

Open the selected instance's game folder and use its mods/ directory.

All three entrypoints open the same settings screen. Mod Menu is optional. The screen also controls automatic startup and the [AGENT] tag, optional name and chat colors. Press Apply to save changes; this stops any active agent tasks. F8 can be rebound in Minecraft’s Controls settings.

2. Install the agent package

The archive includes the MCP server, its dependencies, the Skill and Codex plugin metadata. Extract it into a stable folder, then choose the setup for your agent below. The commands use macOS/Linux shell syntax; on Windows, use the equivalent folders under your user profile.

Replace the archive path with the .tgz you downloaded:

mkdir -p ~/plugins/minecraft-mcp
tar -xzf /path/to/downloaded-agent-package.tgz \
  -C ~/plugins/minecraft-mcp --strip-components=1

Create ~/.agents/plugins/marketplace.json with the following contents. If you already have a marketplace file, add just the Minecraft entry to its plugins array and keep its existing name and entries.

{
  "name": "personal",
  "interface": {"displayName": "Personal"},
  "plugins": [{
    "name": "minecraft-mcp",
    "source": {"source": "local", "path": "./plugins/minecraft-mcp"},
    "policy": {"installation": "AVAILABLE", "authentication": "ON_INSTALL"},
    "category": "Productivity"
  }]
}

This makes the plugin available in your local directory; it does not publish it. See Codex plugin installation for other installation options.

Install and enable it:

codex plugin add minecraft-mcp@personal

Use your marketplace’s name instead of personal if it differs. You can also install Minecraft MCP from that source in the desktop app’s Plugins directory. Reopen the directory or restart the app if the new entry has not appeared.

The plugin already includes the Skill. If you previously configured Minecraft MCP manually, remove that older MCP registration and standalone Skill copy after confirming the plugin works.

Configure a local stdio MCP server that runs node with the absolute path to the extracted src/plugin.mjs. This entrypoint reads the connection file created in step 3.

For Cursor, add the following to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project). Merge it with any existing servers. See the Cursor MCP documentation.

{
  "mcpServers": {
    "minecraft_mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/minecraft-mcp/src/plugin.mjs"]
    }
  }
}

For Claude Desktop, use the same command and args in the mcpServers section of claude_desktop_config.json; omit the type field. Follow the local MCP setup guide.

For Claude Code, register the server with its CLI (MCP documentation):

claude mcp add --transport stdio --scope user minecraft_mcp \
  -- node /absolute/path/to/minecraft-mcp/src/plugin.mjs

For Codex without the plugin, register it manually:

codex mcp add minecraft_mcp \
  -- node /absolute/path/to/minecraft-mcp/src/plugin.mjs

Other clients may use a different configuration format; the command and entrypoint are the same. These instructions connect to a process on your computer, so use the client's local MCP support.

Also install the complete skills/minecraft-mcp folder using your client's Skill support. For manual Codex setup, copy it to ${CODEX_HOME:-$HOME/.codex}/skills/. If your client does not load Skills, provide SKILL.md as instructions and make its referenced files available to the agent. The folder contains API references, utilities and examples that the agent reads when needed.

3. Pair the agent with your game

Create ~/.config/minecraft-mcp/connection.json (including its parent directory) with the values from the Minecraft settings screen. On Windows, ~ means your user profile directory, typically C:\Users\YourName.

{
  "port": 28473,
  "token": "PASTE_YOUR_TOKEN_FROM_MINECRAFT_SETTINGS"
}

On macOS/Linux, restrict access with chmod 600 ~/.config/minecraft-mcp/connection.json. This is the agent's connection file. Minecraft manages its own settings through the game UI; the two sides do not share a config file. Keep the token out of the installed package so updates and sharing do not include it.

Restart your client's MCP connection and start a new local chat. Enable Minecraft MCP if your client requires it, then try:

Inspect my Minecraft client and tell me what you can see.

Gather some wood nearby and keep me updated in chat.

Place a visible marker at this location so I can find it again.

Staying in control

In Minecraft

Action

/mcp stop

Disable agent actions, cancel its scripts and release controls

/mcp start

Allow agent actions again

/mcp status

Show whether control is enabled and how many tasks are active

/mcp config or F8

Open connection and chat settings

Mod Menu → Minecraft MCP → Configure

Open the same settings screen; Done or Esc returns to Mod Menu

These are client-side commands. The mod interface and agent-authored in-game messages use English. [AGENT] messages stay in your local chat; they are not sent to a multiplayer server. Screenshots remain available while control is disabled. Leaving or changing worlds cancels old tasks.

The mod adds no blocks, items, entities or world-generation changes. Removing it does not require converting your save. Actions performed by the agent still affect your world and inventory, just as player actions do.

Connection help

Symptom

What to check

Connection refused

Launch the correct Minecraft instance and check the port in F8 settings

Authentication failed

Copy the same token into the agent’s connection settings, then restart its MCP connection

Agent control disabled

Enter /mcp start when you want the agent to resume

Plugin or tools missing

Confirm the plugin or MCP server is enabled, Node.js is installed, and open a new local chat

Port already in use

Give each simultaneously running instance a different port

Incompatible protocol

Update the mod and MCP plugin to compatible versions

The src/plugin.mjs entrypoint used by the Codex plugin and the manual setups above reads ~/.config/minecraft-mcp/connection.json. Set MINECRAFT_MCP_CONNECTION to use a different file. Explicit MINECRAFT_MCP_PORT and MINECRAFT_MCP_TOKEN values override the file's values. To configure the connection entirely through environment variables, launch src/server.mjs directly instead.

Minecraft and the MCP server must run on the same computer. The mod listens only on 127.0.0.1 and requires its token. Scripts run with the Minecraft process’s permissions, so connect agents you trust.

Updating

Download compatible mod and agent packages from GitHub Releases, then:

  • Minecraft mod: close Minecraft and replace the JAR in mods/.

  • Codex plugin: replace the extracted package, run codex plugin add minecraft-mcp@personal again, and start a new chat.

  • Other clients or manual MCP setup: replace the extracted package, update any separately installed Skill copy, and restart the MCP process.

Your Minecraft settings and agent connection file stay outside the installed packages. The mod and plugin have separate version numbers; they communicate using a versioned protocol.

Stop and remove the minecraft_mcp JsMacros service and its bootstrap/helper JAR. Install the client mod and follow the pairing instructions above. Replace the old MINECRAFT_MCP_CONFIG setting with the new agent-side configuration. Other JsMacros scripts and services can stay as they are.

Development

The repository contains one agent plugin and its companion Minecraft mod:

.codex-plugin/         Codex plugin metadata
.mcp.json             Bundled MCP server launch configuration
src/                  Node.js MCP server and plugin entrypoint
skills/minecraft-mcp/ Agent instructions, API references, scripts and examples
mod/                  Fabric client mod
assets/               SVG icon source and PNG used by the mod and plugin
scripts/              Developer utilities
tests/                MCP protocol and real-client integration checks

The plugin metadata, Skill and MCP launch configuration sit at the plugin root. src/ contains the MCP implementation; mod/ contains the game integration. Keep gameplay scripts, notes and captures in a separate task workspace.

Build the Minecraft mod with JDK 25:

./gradlew build

On Windows, use gradlew.bat build. Install the JAR from build/libs/, excluding the -sources.jar.

Package the agent plugin with Node.js 22 or later:

npm ci
mkdir -p build/distributions
npm pack --pack-destination build/distributions

The archive contains the server, runtime dependencies, Skill and plugin metadata. It does not contain Minecraft, a launcher instance or pairing credentials.

The editable icon source is assets/icon.svg. Both the mod and plugin use its transparent 512 × 512 export, assets/icon.png; Gradle copies the PNG to the mod's resource path when building. When changing the SVG, refresh the PNG with an SVG renderer such as resvg and check that the terminal symbol and transparency are preserved.

npm test checks the real stdio server through the official MCP SDK. These additional checks require a running disposable Minecraft client and the MCP port/token environment variables:

  • npm run test:runtime: script execution, game-thread callbacks, mod discovery and screenshots.

  • npm run test:mod: settings UI, token rotation and authentication; also checks the settings entrypoint and return navigation when Mod Menu is installed.

  • npm run test:live: movement, Baritone navigation, output, cancellation, markers and player takeover. Requires Baritone and a loaded world.

No mocked game clients are used. Launch a separate development client with ./gradlew runClient -PmcpRunDir=/absolute/test-instance; the default run directory is in the OS temporary folder.

The five MCP tools are execute, read_output, stop, screenshot and chat. Each execution gets a fresh JsMacros context; running scripts can continue and produce incremental output, but top-level variables are not shared between calls.

Agent Skill · API index · Mod discovery · Script utilities · Examples

License

MIT © 2026 Mak. Bundled third-party dependencies retain their own licenses.

Available Tools

5 tools
chatA

Display a progress message in English in the player’s local Minecraft chat as [AGENT] message. Tag, optional name, and colors come from config. Does NOT send server chat or execute chat commands.

NameRequiredDescriptionDefault
messageYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add real behavioral facts: the message is local-only, it is not server chat, it cannot run commands, and tag/colors are config-driven. It omits whether the message is ephemeral or persisted, whether it requires permissions, and what the call returns on failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the capability and its rendering first, the exclusions second. No filler, and the most important constraint is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema display tool this is close to complete: it says where the text appears, how it is formatted, and what it will not do. The main residual gap is error/return behavior, which the description does not mention.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and 0% schema description coverage, so the description must compensate. It adds useful meaning ("progress message in English", the [AGENT] prefix, tag/colors from config), but the 1–2000 character constraint lives only in the schema and the parameter itself is never explicitly named or explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("display") and resource ("progress message in ... local Minecraft chat"), and pins down the rendering format including the [AGENT] prefix. It also carves itself away from server chat and command execution, which implicitly separates it from the `execute` sibling, though it never names that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it is for showing progress messages to the player. There is no explicit when-to-use, no mention of when to prefer `execute` or `read_output`, and no stated preconditions (e.g. player must be online, rate expectations).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

executeA

Run JS code OR an absolute local .js file in a fresh JsMacros context. Native JsMacros and installed mod Java APIs are available. console.log/print are captured. Returns early with task ID when still running; use read_output. This is GraalJS, not Node.js.

NameRequiredDescriptionDefault
codeNo
fileNo
wait_msNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantial work: fresh context per run, native JsMacros and mod Java APIs available, console.log/print captured, and async early-return semantics with a task ID. It omits the security/permission implications of arbitrary code execution and error/exception behavior, which is the main remaining gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what gets executed, followed by environment, output capture, and return semantics. The 'GraalJS, not Node.js' caveat is terse and prevents a real class of invocation errors, so every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations mean the description is the only source of behavioral detail, and it covers execution environment and the early-return path well. However, for a three-parameter arbitrary-code-execution tool it leaves wait_ms semantics, code-vs-file precedence, and failure modes undocumented.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description only adds meaning for two of the three params: `code` (JS source) and `file` (must be an absolute local .js path). It never explains whether code and file are mutually exclusive or which wins, and `wait_ms` — with a 0–10000 range and 1000 default — is not mentioned at all despite being the control that determines whether the call returns early.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and two concrete input modes: run JS code or an absolute local .js file, executed in a fresh JsMacros context. It also disambiguates the runtime ('GraalJS, not Node.js') and points at the async sibling read_output, so an agent can tell exactly what this tool does and how it differs from read_output/stop.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent to read_output when the call returns early with a task ID, which is the key alternative-selection rule for this tool family. It does not state when to prefer inline `code` over `file`, nor when not to use the tool at all, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_outputA

Read and consume newly buffered output for a task, plus its native execution state. No filesystem needed. Single-reader stream; no output is repeated. Bounded buffer reports dropped_chars on overflow.

NameRequiredDescriptionDefault
taskYes
wait_msNo

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does well: it discloses no filesystem dependency, single-reader semantics, non-repeating output, and a bounded buffer that surfaces dropped_chars on overflow. It omits what happens on an empty buffer and whether the call blocks, which is the main remaining behavioral gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, each carrying distinct information (what it reads, no filesystem, single-reader non-repeating semantics, buffer overflow reporting), with the core purpose front-loaded. Nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description is the only source of contract detail. It covers stream behavior well but leaves the return shape and the wait_ms blocking semantics undefined, which matters for correct invocation of a streaming read.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for both parameters, so the description must compensate and does not. 'for a task' loosely ties to the task argument, but wait_ms — a blocking hint with a 0-10000ms range and default 0 — is never mentioned, leaving the agent unable to infer that it can wait for output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: read and consume newly buffered output for a task, plus its native execution state. Against siblings like execute, stop, screenshot and chat, it is unmistakably the output-retrieval tool, so no schema opening is needed to tell them apart.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'consume newly buffered output' and the single-reader warning, which tells the agent output is gone once read. However, it never states when to call this versus polling, nor what to do when no output is ready, and it names no alternatives among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

screenshotA

Capture the actual Minecraft framebuffer including HUD, menus and overlays. Returns the image directly; no shared screenshot directory is needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With zero annotations the description carries the full burden, and it does disclose meaningful traits: what is included in the capture (HUD, menus, overlays) and that the image is returned inline rather than written to a shared directory. It stops short of latency/cost, whether the call blocks the game loop or requires a render tick, and whether capture works while paused.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the capture scope and followed by the return mechanism. Every clause earns its place and nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, no-output-schema tool this is nearly complete: it explains what is captured and that an image comes back directly. A minor gap remains around the image format/size or which content block carries the payload, which matters since there is no output schema to describe the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema declares zero parameters, so there is nothing for the description to disambiguate; baseline for a parameterless tool is 4. The description correctly avoids inventing parameters and instead spends its words on scope and return behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ("Capture") plus a precisely scoped resource ("the actual Minecraft framebuffer including HUD, menus and overlays"). The word "actual" implicitly contrasts with a clean/render-only capture, and no sibling tool (execute, read_output, stop, chat) could be confused with it, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent infers it should call this when it needs to see the current game screen. The note that "no shared screenshot directory is needed" removes a workflow blocker, but there is no explicit when-to-use, when-not-to-use, or comparison against siblings such as read_output.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

stopA

Stop one MCP-owned JsMacros task or all MCP tasks. Also cancel Baritone and release scripted input for player takeover. Does not stop the bridge service.

NameRequiredDescriptionDefault
taskNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and delivers real side-effect disclosure: it cancels Baritone, releases scripted input, and explicitly does not touch the bridge service. It stops short of saying what happens to a task mid-execution or whether partial output survives.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the primary action, then side effects, then the scope exclusion. No filler and nothing an agent must read twice.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-param mutation with no annotations and no output schema, the description covers action, targets, side effects, and an explicit non-goal. The remaining gap is how to address a specific task and what, if anything, comes back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single optional `task` parameter is a bare string. The phrasing "one ... task or all MCP tasks" implies omitting it stops everything, but the description never states that rule outright nor says whether the value is a task name, ID, or handle.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource ("Stop one MCP-owned JsMacros task or all MCP tasks") and immediately bounds the target set with "MCP-owned". The closing clause "Does not stop the bridge service" carves out scope so an agent can tell this apart from a session/bridge teardown.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope (one task vs. all tasks) and the implicit motivation ("release scripted input for player takeover") hint at when to call it, but no sibling is named and there are no explicit when-not conditions against alternatives like execute. Usage is inferable rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.2.1
    • First observedchat
    • First observedexecute
    • First observedread_output
    • First observedscreenshot
    • First observedstop

TDQS

A3.9/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a distinct action: run code (execute), consume its output (read_output), cancel work (stop), capture the framebuffer (screenshot), and post a player-facing message (chat). The only soft overlap is output surfaces — execute returns inline results while read_output streams buffered output, and chat displays text vs. console.log capture — but the descriptions explicitly delimit these boundaries.

Naming Consistency3/5

Casing is consistently lowercase snake_case (read_output), but the conventions mix verb-first names (execute, stop, read_output) with bare nouns (screenshot, chat). It remains readable, though there is no single predictable verb_noun pattern across the set.

Tool Count5/5

Five tools is well-scoped for an execution-bridge server: one general-purpose runner plus the lifecycle tools (output, stop) and two I/O channels (screenshot, chat). Nothing feels redundant or padded, and the powerful generic tool absorbs what would otherwise be many narrow tools.

Completeness4/5

The core loop of run/observe/stop plus visual capture and player messaging is fully covered, with world/player operations reachable through the injected JsMacros APIs. Minor gap: there is no way to enumerate running tasks, so task IDs must be remembered from execute's return value.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers