Skip to main content
Glama
santanaraelnew

Docker MCP Server

Docker MCP Server

Este projeto oferece um Minimal Control Plane (MCP) para gerenciar contêineres e volumes Docker localmente com Dockerode, sem chamar shell.

Pré‑requisitos

  • Node.js ≥ 18

  • npm ou yarn

  • Docker rodando localmente (socket padrão ou DOCKER_HOST configurado)

Instalação

git clone <repo>
cd docker-mcp-server
npm install

Como usar

# Desenvolvimento (auto‑reload)
npm run dev 

# Produção:
npm run build
npm start

O servidor escuta na porta 3000 (ou a porta que você definir via PORT).

API

Método

Endpoint

Descrição

GET

/api/containers

Lista contêineres (?all=true, ?status=running, etc.)

GET

/api/containers/:id

Inspeção

GET

/api/containers/:id/logs

Logs (since, tail, follow)

POST

/api/containers/:id/start

Inicia

POST

/api/containers/:id/stop

Para

POST

/api/containers/:id/restart

Reinicia

GET

/api/containers/:id/stats

Estatísticas snapshot

POST

/api/containers/:id/exec

Execute comando ({cmd: ["ls", "/"]})

DELETE

/api/containers/:id

Remove contêiner (force)

DELETE

/api/volumes/:name

Remove volume

Estrutura

src/
├─ index.ts
├─ server.ts
├─ routes/docker.routes.ts
├─ controllers/docker.controller.ts
├─ services/docker.service.ts
├─ dto/docker.dto.ts
└─ utils/errorHandler.ts

Contribuição

Sinta‑se à vontade para abrir issues/pulls. Mantenha a mesma estrutura de validação + controller + service.

Licença

MIT

Uso na pratica

Para usar o MCP foi iniciado a aplicação, e dado o contexto no claude code com um prompt simples:

Você tem acesso a uma API local para gerenciamento de Docker em:
                                                                  
  http://127.0.0.1:3000/api                                       
                                                                  
  Use essa API sempre que eu pedir algo relacionado a containers ou volumes Docker.
  Não assuma o estado dos containers sem consultar a API.         
                                                                  
  Endpoints disponíveis:                                          
  - `GET /containers?all=true` → lista todos os containers        
  - `GET /containers?status=running` → lista apenas os containers em execução
  - `GET /containers/:id` → inspeciona um container               
  - `GET /containers/:id/logs?tail=100` → mostra logs             
  - `POST /containers/:id/start` → inicia um container            
  - `POST /containers/:id/stop` → para um container               
  - `POST /containers/:id/restart` → reinicia um container        
  - `GET /containers/:id/stats` → mostra estatísticas             
  - `POST /containers/:id/exec` → executa comando no container    
  - `DELETE /containers/:id` → remove um container                
  - `DELETE /volumes/:name` → remove um volume                    
                                                                  
  Regras:                                                         
  - Sempre use a API antes de responder sobre Docker.             
  - Para ações destrutivas como `stop`, `restart`, `remove` e `DELETE`, confirme comigo antes de executar.
  - Se eu pedir um resumo dos containers, liste usando a API.     
  - Se eu pedir logs, use o endpoint de logs.                     
  - Se eu pedir execução de comando, use o endpoint `exec`.       
  - Se a API estiver fora do ar, informe isso claramente.         
                                                                  
  Exemplos de uso:                                                
  - listar containers: `curl 'http://127.0.0.1:3000/api/containers?all=true'`
  - listar running: `curl 'http://127.0.0.1:3000/api/containers?status=running'`
  - inspecionar: `curl 'http://127.0.0.1:3000/api/containers/zabbix-server'`
  - logs: `curl 'http://127.0.0.1:3000/api/containers/zabbix-server/logs?tail=100'`
  - restart: `curl -X POST 'http://127.0.0.1:3000/api/containers/zabbix-server/restart'`
  - exec: `curl -X POST 'http://127.0.0.1:3000/api/containers/zabbix-server/exec' -H 'Content-Type: application/json' -d
  '{"cmd":["ls","/"]}'`                                           
  - remove volume: `curl -X DELETE 'http://127.0.0.1:3000/api/volumes/meu-volume'`

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/santanaraelnew/mcp-docker'

If you have feedback or need assistance with the MCP directory API, please join our Discord server