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
🛠 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 deixar seu servidor inteligente! 🚀