minecraft-rcon-mcp
This server provides an MCP interface for controlling a Minecraft Java Edition server via RCON, with an optional AI-powered in-game chat listener.
run_command: Execute any Minecraft server command (e.g.,list,data get entity,locate structure village) and receive its response, allowing inspection or modification of the live world.get_ai_chat_status: Check the health, history size, active AI model, log path, and memory configuration of the in-game AI chat listener.In-game AI chat: Players can type
ai <question>in chat; Claude (via Anthropic API) responds using/tellraw, with access to live world state via RCON. The agent has two git-tracked persistent memory stores (server-specific and capability-agnostic) that accumulate knowledge across sessions via aremembertool.Bundled scripts and recipes: A Python toolbox of low-level primitives (e.g.,
count_entities,find_block_entities) and higher-level recipes (e.g.,cat_spawn_check,reset_trial_spawners) can be listed and run vialist_scriptsandrun_scripttools, accessible both programmatically and through the in-game AI agent.
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-rcon-mcp list all online players"
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-rcon-mcp
An MCP server that exposes a Minecraft Java
Edition server over RCON as a tool, plus an
optional in-game AI chat listener: players type ai <question> in chat and
Claude answers in-game, using RCON to read live world state.
It is configured entirely through environment variables, so it is independent of any particular server, world, or Minecraft version.
Features
run_commandtool — run any Minecraft server command via RCON and return the response. Use it from any MCP client (Claude Code, VS Code / Copilot, etc.) to inspect or modify the live world.In-game AI chat — a background thread tails the server log; chat messages prefixed with a configurable trigger (
aiby default) are answered by Claude via the Anthropic API, with an agentic RCON tool-use loop and a rolling context window. Responses are posted back with/tellraw.Persistent memory — the in-game agent reads two git-tracked memory files into its context each request and can append to them with a
remembertool, so it accumulates knowledge across sessions instead of relying only on the rolling chat window. See Persistent memory.get_ai_chat_statustool — report listener health, history size, model, log path, and memory configuration.
Related MCP server: Minecraft RCON MCP Server
Requirements
Python 3.14+
A Minecraft server with RCON enabled (
enable-rcon=trueinserver.properties)An Anthropic API key (only if you use the in-game AI chat feature)
Install
pip install git+https://github.com/scotteratigan/minecraft-rcon-mcpOr, for local development / use from a sibling repo:
pip install -e path/to/minecraft-rcon-mcpRun
minecraft-rcon-mcp # console entry point
python -m minecraft_rcon_mcp # equivalentThe server speaks MCP over stdio, so it is normally launched by an MCP client
rather than by hand. Example client config (.vscode/mcp.json):
{
"servers": {
"minecraft-rcon": {
"type": "stdio",
"command": "/path/to/.venv/Scripts/python.exe",
"args": ["-m", "minecraft_rcon_mcp"],
"env": {
"RCON_HOST": "localhost",
"RCON_PORT": "25575",
"RCON_PASSWORD": "your-rcon-password",
"LOG_PATH": "/path/to/server/logs/latest.log"
}
}
}
}Provide ANTHROPIC_API_KEY in the launching environment (not in committed files)
if you want the in-game AI chat.
Configuration
Variable | Default | Purpose |
|
| RCON host |
|
| RCON port |
|
| RCON password (match |
|
| Path to the server log to tail. Set this explicitly — the default is relative to the working directory. |
|
| Set |
|
| Chat trigger prefix (case-insensitive). |
|
| Anthropic model for in-game chat. |
|
| Exchanges retained in the rolling history. |
|
| Max tokens per chat response. |
| (generic built-in) | Replace the entire system prompt. |
| (none) | Append server-specific context (Minecraft version, house rules) to the default prompt. |
|
| Set |
|
| Path to the server-specific memory file (world/player facts). Set this explicitly to a file in your server repo so it is git-tracked there, just like |
| (packaged | Path to the server-agnostic capability/script memory. Defaults to a file shipped inside this package; override only if you want it elsewhere. |
| — | World save folder (the one with |
| — | Folder of captured |
| (auto: | Server jar read for the vanilla structure catalog/sizing ( |
| — | Required for in-game AI chat. |
The run_command + remember tools are always available. Two more — list_scripts
and run_script — dispatch the Python toolbox (structure builders, world queries)
without one MCP tool per script; see Scripts & recipes. They're
also exposed to the in-game chat agent, so players can ask it to build things.
Persistent memory
The in-game AI agent keeps two separate memory stores, both intended to be version-controlled, so it accumulates knowledge across sessions. The split is deliberate — each store lives in a different repo:
Scope | What goes in it | Where it lives | Written via |
| Facts specific to this server, world, or its players — base/build coordinates, player preferences, house rules, world boundaries, ongoing projects. | The consumer (server) repo, at |
|
| Server-agnostic knowledge about this MCP — useful command patterns, what a script does, gotchas, techniques that help on any server. | This package, at |
|
How it works:
Read — on every chat request, both files are read fresh and appended to the system prompt under a
# Persistent memoryheading. Editing a file (by hand or by the agent) takes effect on the next message; no restart needed.Write — the agent has a
remembertool that takescontentand ascope(server|capability) and appends a one-line bullet to the matching file, creating it with a header if absent.
Because the capability store defaults to a path inside this package, the
agent writes into it in place. That is committable when the package is installed
editable (pip install -e), which is the intended development setup; under a
plain wheel install it would write into site-packages instead, so set
CAPABILITY_MEMORY_PATH to a writable, tracked location if you deploy that way.
Disable the whole feature with AI_MEMORY_ENABLED=0.
Scripts & recipes
The package bundles server-agnostic tooling split into two layers. They live here (not in any one server repo) because they are reusable capabilities. The aim is a toolbox of small, orthogonal primitives that compose efficiently, plus a few recipes that show how to combine them for common tasks.
Writing one? See
CLAUDE.mdfor the authoring rules (primitive vs. recipe, server-agnostic requirements, shared helpers, quality gates).
Primitives — minecraft_rcon_mcp.scripts
Low-level building blocks, each doing one general thing:
Primitive | Purpose | Needs world files? |
| Shared RCON client + CLI for running any command. | No (RCON only) |
| Run an entity selector and return the parsed count. | No (RCON only) |
| Scan region files for block entities (spawners, chests…). | Yes |
| Whether given coords are in generated chunks. | Yes |
| Nearest ungenerated region frontier to a position. | Yes |
python -m minecraft_rcon_mcp.scripts.rcon "list"
python -m minecraft_rcon_mcp.scripts.count_entities "type=minecraft:cat,distance=..48" --at Steve
python -m minecraft_rcon_mcp.scripts.find_block_entities --x 0 --z 0 --block-id minecraft:chest
python -m minecraft_rcon_mcp.scripts.check_chunk_generated 1216 237 --dimension the_nether
python -m minecraft_rcon_mcp.scripts.find_unexplored_edges 120 45Recipes — minecraft_rcon_mcp.recipes
Higher-level, task-specific tools composed from the primitives (and sometimes coupled to a particular Minecraft version's mechanics). Each is also a worked example of composition:
Recipe | Composed from | Notes |
|
| Village cat-spawn gates; thresholds are version-coupled (26.x). |
|
| Finds trial spawners near a player, resets cooldowns. |
python -m minecraft_rcon_mcp.recipes.cat_spawn_check Steve
python -m minecraft_rcon_mcp.recipes.reset_trial_spawnersConfiguration
RCON — read from
RCON_HOST/RCON_PORT/RCON_PASSWORD. As a fallback,rcon.pyreadsrcon.port/rcon.passwordfrom aserver.propertiesin the working directory (orSERVER_PROPERTIES).WORLD_DIR— tools that read save files need the world folder (the one withlevel.dat/dimensions/). This cannot be derived over RCON (no vanilla command exposes the save path), so setWORLD_DIR, or pass--world-dir.--dimension— region-reading tools default to the overworld; passthe_nether/the_end/ a namespaced id (mymod:custom) for others. Both vanilla (DIM-1/DIM1) and data-driven (dimensions/<ns>/<name>/) layouts resolve automatically.
The world data itself lives in the server deployment, not in this repo — these tools only carry the logic, and reach the world through
WORLD_DIR.
Development
This project uses uv for environment and
dependency management, Ruff for linting and
formatting, and ty for static type checking.
The pinned Python version lives in .python-version; uv installs it for you.
uv sync # create .venv and install all deps (incl. dev tools)
uv run pytest # run the test suite
uv run ruff format # auto-format
uv run ruff check # lint (add --fix to auto-fix)
uv run ty check # type-checkLicense
MIT — see LICENSE.
Available Tools
2 toolsget_ai_chat_statusA
Return the status of the in-game AI chat listener and conversation history.
Inputs: no named parameters.
run_commandA
Run a Minecraft server command via RCON and return the response.
Examples: 'list', 'data get entity @e[type=minecraft:cat,limit=5,sort=nearest]', 'locate structure village', 'execute at @p run data get block ~ ~ ~'
Inputs: command (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
The two tools, get_ai_chat_status and run_command, have clear and distinct purposes. One retrieves chat status, the other executes arbitrary commands, leaving no ambiguity.
Both tool names follow a consistent verb_noun pattern (get_ai_chat_status, run_command), making them predictable and easy to differentiate.
With only 2 tools, the server is minimally functional. While run_command covers core RCON operations, the additional AI chat tool is specific; the count is low but acceptable for a narrow purpose.
The server provides basic RCON command execution and AI chat status, but lacks tools for managing AI chat (e.g., enable/disable) or more granular server interactions, leaving notable gaps.
Maintenance
Related MCP Connectors
All 20 YourAITools agent APIs in one MCP server. Most tools free; pay with credits or x402.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Hosted YouTube MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables control of a Minecraft server through RCON commands via natural language, including game commands, chat-based AI interactions, and server management capabilities.6-
- AlicenseAqualityDmaintenanceConnects AI agents to Minecraft servers via RCON to execute commands, monitor logs, and perform read-only SQLite database queries. It is specifically designed to facilitate AI-assisted plugin development, live debugging, and automated testing workflows.611MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with and manage Minecraft servers through a standardized interface, supporting server monitoring, player management, log analysis, and command execution.111MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI models like Claude to control a Minecraft character through natural language commands, supporting movement, inventory, block interactions, and more.Apache 2.0