Minecraft MCP Server
Um servidor MCP em Python para controlar um servidor Minecraft via RCON usando FastMCP.
Documentação
Minecraft-MCP-Server
Servidor MCP em Python para controlar um servidor Minecraft via RCON, usando FastMCP.
🔧 Recursos
- Expõe um conjunto de comandos (dicionário) para contextualizar o LLM
- Executa comandos no servidor Minecraft via RCON
- Integração com Claude Desktop ou qualquer cliente MCP
- Estrutura simples:
stdio(desenvolvimento local) ou HTTP/SSE (produção)
📦 Estrutura do Projeto
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
⚙️ Instalação
- Clone o repositório:
cd Minecraft-MCP-Server/mcp_server - Crie um ambiente e instale as dependências:
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txt
📝 Configuração
No arquivo commands.json, você terá uma lista de comandos como /give, /weather, /gamemode, etc., com descrições e exemplos.
Não se esqueça de habilitar o RCON no arquivo server.properties do Minecraft:
enable-rcon=true
rcon.password=minemcp
rcon.port=25575
Crie um arquivo .env assim:
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
🚀 Executando o Servidor MCP
Ative o ambiente virtual e execute:
venv\Scripts\activate python mcp_server/server.py
Monkey patch: inicia o servidor MCP em STDIO por padrão (apidog.com, reddit.com, github.com)
💬 Executando o Cliente de Chat (@ai)
Após iniciar o servidor, em um novo terminal, execute o cliente de chat:
venv\Scripts\activate python mcp_server/mcp_chat_client.py
Este script monitora o log do servidor Minecraft e escuta mensagens de chat de jogadores que começam com @ai. Ele envia a mensagem para a API Gemini e executa o comando resultante no servidor via MCP.
⚠️ Importante: O servidor deve ser iniciado antes de executar o cliente.
A versão atual tem um bug conhecido de estouro de memória se o cliente iniciar antes do servidor.
⚙️ Integração com Claude Desktop
Em claude_desktop_config.json (ex.: %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%"} } } }
Em seguida, reinicie o Claude — o servidor 'minecraft-controller' aparecerá.
🧪 Teste Local com 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())
🧰 Como Funciona
- 🎯
FastMCPcarrega automaticamente ferramentas e recursos (medium.com, github.com) - O recurso
minecraft://commandsfornece o dicionário de comandos - A ferramenta
run_minecraft_commandusamcrconpara enviar comandos ao Minecraft
📚 Referências
- [FastMCP v2 – README de exemplo] (pypi.org)
- [mcrcon – Cliente RCON em Python] (pypi.org)
🛠 Próximos Passos
- Suporte para transporte HTTP/SSE com Docker
- Validação/autocompletar de argumentos via dicionário de comandos
- Registro de ações extras:
/start,/stop,/backup,/whitelist
Pronto para tornar seu servidor inteligente! 🚀