Minecraft MCP Server

Un servidor MCP en Python para controlar un servidor de Minecraft mediante RCON usando FastMCP.

Documentación

Minecraft-MCP-Server

Servidor MCP en Python para controlar un servidor de Minecraft mediante RCON, usando FastMCP.


🔧 Características

  • Expone un conjunto de comandos (diccionario) para contextualizar el LLM
  • Ejecuta comandos en el servidor de Minecraft mediante RCON
  • Integración con Claude Desktop o cualquier cliente MCP
  • Estructura simple: stdio (desarrollo local) o HTTP/SSE (producción)

📦 Estructura del Proyecto

mcp_server/
├── __pycache__/
├── .env                   # Environment variables for Gemini and paths
├── commands.json          # Commands dictionary and examples  
├── mcp_chat_client.py     # NEW: Client that listens to @ai messages from chat
├── server.py              # Main MCP server  
├── .gitattributes
├── .gitignore
├── readme.md
└── requirements.txt

⚙️ Instalación

  1. Clona el repositorio:
    cd Minecraft-MCP-Server/mcp_server
    
  2. Crea un entorno e instala las dependencias:
    python -m venv venv
    venv\Scripts\activate
    pip install -r requirements.txt
    

📝 Configuración

En el archivo commands.json, tendrás una lista de comandos como /give, /weather, /gamemode, etc., con descripciones y ejemplos.

No olvides habilitar RCON en el archivo server.properties de Minecraft:

enable-rcon=true
rcon.password=minemcp
rcon.port=25575

Crea un archivo .env como este:

MINECRAFT_LOG_PATH=C:\Users\YourUser\Desktop\mineserver\logs\latest.log
MCP_SERVER_PATH=mcp_server/server.py
GEMINI_API_KEY=your_gemini_api_key

🚀 Ejecutando el Servidor MCP

Activa el entorno virtual y ejecuta:

venv\Scripts\activate
python mcp_server/server.py

Monkey patch: inicia el servidor MCP en STDIO por defecto (apidog.com, reddit.com, github.com)


💬 Ejecutando el Cliente de Chat (@ai)

Después de iniciar el servidor, en una nueva terminal, ejecuta el cliente de chat:

venv\Scripts\activate
python mcp_server/mcp_chat_client.py

Este script monitorea el registro del servidor de Minecraft y escucha los mensajes de chat de los jugadores que comienzan con @ai. Envía el mensaje a la API de Gemini y ejecuta el comando resultante en el servidor mediante MCP.

⚠️

Importante: El servidor debe iniciarse antes de ejecutar el cliente.
La versión actual tiene un error conocido de desbordamiento de memoria si el cliente se inicia antes que el servidor.


⚙️ Integración con Claude Desktop

En claude_desktop_config.json (por ejemplo, %APPDATA%\Claude\):

{
  "mcpServers": {
    "minecraft-controller": {
      "type": "stdio",
      "command": "/home/qkeq/Documentos/GitHub/Minecraft-MCP-Server/venv/bin/python3",
      "args": ["C:\\...\\mcp_server\\server.py"],
      "env": {"PATH": "%PATH%"}
    }
  }
}

Luego reinicia Claude — el servidor 'minecraft-controller' aparecerá.


🧪 Prueba Local con Python

from fastmcp import Client
import asyncio

async def test():
    client = Client("mcp_server/server.py")
    async with client:
        res = await client.call_tool("run_minecraft_command", {"command": "/list"})
        print("Players:", res)
        cmds = await client.read_resource("minecraft://commands")
        print("Commands:", list(cmds.keys())[:5])

asyncio.run(test())

🧰 Cómo Funciona

  • 🎯 FastMCP carga automáticamente herramientas y recursos (medium.com, github.com)
  • El recurso minecraft://commands proporciona el diccionario de comandos
  • La herramienta run_minecraft_command usa mcrcon para enviar comandos a Minecraft

📚 Referencias

  • [FastMCP v2 – README de ejemplo] (pypi.org)
  • [mcrcon – Cliente RCON para Python] (pypi.org)

🛠 Próximos Pasos

  • Soporte para transporte HTTP/SSE con Docker
  • Validación/autocompletado de argumentos mediante el diccionario de comandos
  • Registro de acciones adicionales: /start, /stop, /backup, /whitelist

¡Listo para hacer tu servidor inteligente! 🚀