mcp-docker-server

marcelofmatos/mcp-docker-server

3.2

If you are the rightful owner of mcp-docker-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

The Docker Model Context Protocol (MCP) Server enables AI systems like Claude to manage Docker containers securely and intuitively using the MCP protocol.

Tools
5
Resources
0
Prompts
0

🐳 Docker MCP Server

Docker Node.js MCP Claude

Docker Model Context Protocol (MCP) Server - Permite que IAs como Claude gerenciem containers Docker através do protocolo MCP de forma segura e intuitiva.

🌟 Features

  • 🔧 Gerenciamento completo de containers: Start, stop, restart, logs, estatísticas
  • 📦 Controle de imagens: Pull, remove, verificar atualizações
  • 🐳 Docker Compose: Deploy e remoção de stacks via YAML
  • 🌐 Múltiplos servidores: Conectar a vários Docker hosts simultâneamente
  • 🔒 Segurança: Socket Unix local ou TCP com TLS
  • 📊 Monitoramento: Logs estruturados e métricas em tempo real
  • ⚡ Integração Claude: Pronto para uso com Claude Code/Desktop

🚀 Quick Start

# 1. Navegar para o diretório
cd /home/marcelo/docker/mcp-docker-server

# 2. Instalar dependências
npm install

# 3. Configurar ambiente (opcional)
cp config/.env.example .env

# 4. Iniciar servidor
npm start

📋 Prerequisites

  • Node.js >= 18.0.0
  • Docker Engine funcionando
  • Usuário no grupo docker
  • Claude Code ou Claude Desktop

🛠️ Available Tools

CategoryToolsDescription
Containerslist_containers, start_container, stop_container, restart_containerGerenciamento completo de containers
Imageslist_images, pull_image, remove_image, check_updatesControle de imagens Docker
Composerun_docker_compose, remove_docker_composeDeploy via YAML inline
Networks/Volumeslist_networks, list_volumesVisualização de recursos
Serverslist_docker_servers, add_docker_serverMulti-host management

🔌 Claude Integration

Método 1: Configuração de projeto

Criar .claude/mcp.json:

{
  "servers": {
    "docker-local": {
      "type": "stdio",
      "command": "node",
      "args": ["src/index.js"],
      "env": {
        "DOCKER_SOCKET": "/var/run/docker.sock"
      },
      "description": "Local Docker management via MCP"
    }
  }
}

Método 2: Claude Desktop global

Ver exemplos em config/claude-desktop-sample.json.

📖 Examples

Listar containers via Claude

"Liste todos os containers Docker ativos e parados"

Deploy Docker Compose via Claude

"Deploy este Docker Compose:

version: '3.8'
services:
  redis:
    image: redis:alpine
    ports:
      - '6379:6379'"

Gerenciar container específico

"Reinicie o container 'nginx-proxy' e mostre os logs recentes"

📁 Project Structure

mcp-docker-server/
├── src/
│   └── index.js              # Servidor principal
├── scripts/
│   ├── start-server.sh       # Script de inicialização
│   └── stop-server.sh        # Script de parada
├── config/
│   ├── .env.example          # Configuração de ambiente
│   ├── claude-desktop-sample.json
│   └── env.sample.sh
├── docs/
│   └── SETUP.md             # Documentação completa
├── logs/                    # Logs de execução
├── .claude/
│   └── mcp.json            # Configuração MCP do projeto
└── package.json

⚙️ Configuration

Socket Unix (Padrão)

DOCKER_SOCKET=/var/run/docker.sock

Docker remoto

DOCKER_HOST=192.168.1.10
DOCKER_PORT=2375
DOCKER_PROTOCOL=http

Múltiplos servidores

DOCKER_SERVERS=local:socket:/var/run/docker.sock,prod:prod-docker:2376:https

🐛 Troubleshooting

Erro de permissão

sudo usermod -aG docker $USER
newgrp docker

Dependências

rm -rf node_modules package-lock.json
npm install

Debug

export LOG_LEVEL=debug
npm start

📊 Monitoring

# Logs em tempo real
tail -f logs/server-*.log

# Status básico
timeout 5s npm start < /dev/null

🚨 Security Notes

⚠️ IMPORTANTE: O acesso ao socket Docker concede privilégios equivalentes ao root. Use apenas em ambientes confiáveis.

  • Socket local: Preferir quando possível
  • TCP remoto: Sempre usar TLS em produção
  • Firewall: Limitar acesso às portas Docker
  • Containers: Revisar imagens antes de executar

📚 Documentation

  • 📖 - Guia completo de instalação e configuração
  • 🔧 - Solução de problemas comuns
  • 🔌 - Integração com Claude
  • 🛠️ - Lista completa de ferramentas

📝 License

MIT License - Ver arquivo para detalhes.

🤝 Contributing

  1. Fork o projeto
  2. Criar feature branch (git checkout -b feature/nova-funcionalidade)
  3. Commit as mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push to branch (git push origin feature/nova-funcionalidade)
  5. Abrir Pull Request

⭐ Support

Gostou do projeto? Deixe uma estrela ⭐

Encontrou algum problema? Abra uma issue 🐛


Criado por: Marcelo Matos
Baseado em: mcp-docker por FlorentB974