Conectei meu servidor Docker a LLMs locais e agora minha estação de trabalho de autoatendimento gerencia sozinha

Grandes modelos de linguagem são muito úteis para tarefas de busca e recuperação semântica. No entanto, sua utilidade dispara quando você os combina com a coleção certa de ferramentas, e os servidores MCP são uma das adições mais úteis aos pacotes de produtividade com tecnologia LLM. Para os não iniciados, os servidores Model Context Protocol aproveitam provedores LLM e ambientes de tempo de execução para serviços externos que não oferecem suporte nativo a modelos de IA, e fazem isso transformando solicitações típicas de LLM em chamadas de ferramentas que os aplicativos podem entender.

Tenho trabalhado com minha parcela de servidores MCP e, embora mantenha algumas restrições sobre quais ferramentas meu LLM pode acessar, elas são bastante compatíveis com tudo, desde meu hub Home Assistant até a pilha de aplicativos Nextcloud. E, como aprendi recentemente, combinar o servidor MCP certo com modelos MoE de última geração pode me permitir controlar estações de trabalho Docker com simples prompts de conversação.

As duas GPUs antigas que salvei fazem mais trabalho de IA do que uma placa nova de US$ 2.000, e não irei atualizar tão cedo.

Eu construí uma configuração de IA nativa a partir de duas GPUs antigas à venda por um preço barato e é melhor do que uma única placa nova

Também é muito fácil de configurar

Embora o Docker tenha um gateway MCP poderoso (com seu aplicativo de desktop que oferece suporte a esse recurso pronto para uso), eu teria que procurar soluções para permitir que ele acessasse o ambiente Docker subjacente. Felizmente, o pacote do servidor Docker MCP do desenvolvedor ckreiling me permite controlar todos os aspectos da configuração do Docker sem exigir qualquer personalização.

Nos primeiros testes, eu queria emparelhar um ambiente Docker local com este servidor MCP. Então criei um novo documento chamado config.json e adicionei o seguinte trecho de código a ele:

{
"mcpServers": {
"mcp-server-docker": {
"command": "uvx",
"args": (
"mcp-server-docker"
)
}
}
}

Então eu corri uvx mcp-proxy –named-server-config config.json –allow-origin “*” –port 8001 –stateless –host 0.0.0.0 comando no terminal para colocar o servidor Docker MCP em funcionamento.

Como eu queria manter todo o pipeline de gerenciamento de contêineres local, emparelhei o Docker MCP com meus LLMs locais. Depois de testemunhar o caos que modelos de parâmetros baixos podem causar ao tentar usá-los em minha instância Pi baseada em Raspberry Pi, decidi usar o extremamente poderoso Qwen3.6-35B-A3B em meu RTX 3080 Ti. Com o descarregamento EM, minha antiga GPU poderia facilmente executá-la a 24 tokens por segundo. E com uma janela de contexto de 100.000 tokens, nada menos. Como a IU da web do lama-server suporta servidores MCP, eu uso –webui-mcp-servidor executando Qwen3.6-35B-A3B antes de usar a URL gerada pelo Docker MCP para conectá-los.

Quanto às ferramentas de gerenciamento, o Docker MCP Server inclui tudo que preciso para gerenciar meus contêineres Docker. Desde a verificação da integridade do contêiner e acesso a logs até enumeração de volumes e modificação de informações de rede, o servidor Docker MCP não oficial pode executar as funções de invocação de ferramenta exigidas pelo meu LLM sem problemas. Como tenho um grande LLM que lida com tarefas inferenciais, ele pode até lidar com instruções complexas e fornecer resultados satisfatórios. Por exemplo, solicitei que ele verificasse todos os volumes e listasse aqueles que estão atualmente órfãos, e o Qwen3.6-35B-A3B conseguiu dividir a consulta em várias chamadas de ferramenta para concluir a tarefa.

Executei LLMs locais usando o iGPU mais barato da Intel e os resultados foram surpreendentemente decentes

Não é como uma GPU dedicada, mas você pode executar alguns LLMs leves com o N100.

Ele pode criar novos contêineres usando prompts simples

E até execute correções automáticas se algo der errado

Até agora, falei apenas sobre a capacidade da combinação de servidores Qwen3.6-35B-A3B + Docker MCP de controlar contêineres existentes. No entanto, esse pipeline Docker nativo controlado por LLM é igualmente eficiente na criação de novos contêineres do zero. Tentei usá-lo para implantar várias ferramentas de contêiner e, após cada tentativa bem-sucedida, comecei a deixar minhas instruções um pouco vagas e deixei meu LLM descobrir os parâmetros necessários.

Comecei pedindo ao meu LLM para implantar uma instância n8n com um diretório local /home/nó/.n8n pasta e 5678 como porta interna e externa. Após algumas chamadas para a ferramenta, o Qwen3.6-35B-A3B ativou com sucesso a ferramenta de automação. Em seguida, mudei as coisas e atribuí um mapeamento de porta 3000:8080 como único parâmetro para a instância do BentoPDF. Novamente, o LLM conseguiu usar o servidor Docker MCP para construir o BentoPDF sem problemas.

Como costumo usar ferramentas FOSS que exigem mais de um contêiner, pedi ao LLM para criar um contêiner Joplin e dei a ele uma nova pasta como diretório para todos os volumes (porque não queria que o lixo bagunçasse as pastas subjacentes do meu PC). Infelizmente, o contêiner quebrou na primeira execução e percebi que o LLM havia adicionado os parâmetros errados ao implantar o contêiner. Mas, como descobri, meu servidor Joplin teve um problema de sincronização de horário que o LLM não só foi capaz de consertar, mas até mesmo corrigiu ajustando o comando de inicialização!

Prompts mal interpretados podem inutilizar minhas montagens de volume e redes

Embora eu esteja realmente impressionado com o desempenho do servidor Docker MCP com Qwen3.6-35B-A3B, eu não consideraria este artigo completo se não repassasse as regras de segurança que usei para a configuração. Dado que os LLMs podem facilmente sair dos trilhos com seu raciocínio, eu não queria que eles interpretassem mal o prompt e estragassem as ferramentas do servidor Docker MCP.

Então eu configurei as ferramentas remove_volume e remove_network para rejeitar solicitações porque elas podem transformar contêineres funcionando perfeitamente em uma bagunça quebrada. Fiquei tentado a definir remove_container para esse modo também, mas algumas tarefas de solução de problemas envolvem limpar a instância antiga e criar uma nova com o mesmo nome, então configurei a interface da web do servidor lhama para pedir minha permissão antes de excluir o contêiner.

Mas com essas regras em vigor, não tenho nada do que reclamar do meu ambiente de gerenciamento Docker com tecnologia LLM. Na verdade, pretendo adicionar os nós remotos a esta configuração no próximo fim de semana.

Link da fonte