Skip to main content
Glama
PRD_DOCKER_MCP.md9.49 kB
# Product Requirements Document (PRD) - Docker MCP Server ## 1. Executive Summary ### 1.1 Product Overview Docker MCP Server é um servidor Model Context Protocol (MCP) que permite ao Claude Code gerenciar e controlar containers Docker diretamente através de ferramentas nativas, eliminando a necessidade de comandos bash diretos. ### 1.2 Vision Statement Fornecer uma integração perfeita e segura entre Claude Code e Docker, permitindo gerenciamento completo de containers, imagens, volumes e stacks Docker Compose através do protocolo MCP. ### 1.3 Success Metrics - Tempo de resposta < 2 segundos para operações básicas - 99.9% de disponibilidade do servidor - Zero falhas de segurança relacionadas ao acesso Docker - Suporte a 100% das operações Docker essenciais ## 2. Product Requirements ### 2.1 Functional Requirements #### 2.1.1 Container Management - **FR-001**: Criar containers Docker com configurações customizadas - **FR-002**: Listar todos os containers com informações detalhadas - **FR-003**: Iniciar/parar/reiniciar containers - **FR-004**: Remover containers (com opção force) - **FR-005**: Visualizar logs de containers com filtros - **FR-006**: Executar comandos dentro de containers - **FR-007**: Obter estatísticas de uso de recursos #### 2.1.2 Image Management - **FR-008**: Listar imagens disponíveis localmente - **FR-009**: Baixar imagens do Docker Hub - **FR-010**: Remover imagens (com opção force) - **FR-011**: Construir imagens a partir de Dockerfile #### 2.1.3 Volume Management - **FR-012**: Listar volumes Docker - **FR-013**: Criar volumes nomeados - **FR-014**: Remover volumes - **FR-015**: Inspecionar detalhes de volumes #### 2.1.4 Docker Compose Support - **FR-016**: Deploy de stacks usando docker-compose.yml - **FR-017**: Parar e remover stacks completas - **FR-018**: Visualizar status de serviços Compose - **FR-019**: Obter logs agregados de projetos Compose #### 2.1.5 Network Management - **FR-020**: Listar redes Docker - **FR-021**: Criar redes customizadas - **FR-022**: Conectar/desconectar containers de redes ### 2.2 Non-Functional Requirements #### 2.2.1 Performance - **NFR-001**: Resposta em < 2s para operações síncronas - **NFR-002**: Suporte a operações assíncronas para tarefas longas - **NFR-003**: Capacidade de gerenciar 100+ containers simultaneamente #### 2.2.2 Security - **NFR-004**: Comunicação via Unix socket seguro - **NFR-005**: Validação de entrada para prevenir injection - **NFR-006**: Isolamento de contexto entre operações - **NFR-007**: Sem exposição de credenciais ou secrets #### 2.2.3 Reliability - **NFR-008**: 99.9% uptime - **NFR-009**: Graceful shutdown com cleanup - **NFR-010**: Recuperação automática de erros transitórios - **NFR-011**: Logging detalhado de erros #### 2.2.4 Usability - **NFR-012**: Mensagens de erro claras e acionáveis - **NFR-013**: Documentação inline para todas as ferramentas - **NFR-014**: Exemplos de uso para cada funcionalidade ## 3. Technical Architecture ### 3.1 System Components ``` ┌─────────────────┐ │ Claude Code │ └────────┬────────┘ │ MCP Protocol (JSON-RPC) ┌────────▼────────┐ │ Docker MCP │ │ Server │ │ (Container) │ └────────┬────────┘ │ Unix Socket ┌────────▼────────┐ │ Docker Daemon │ └─────────────────┘ ``` ### 3.2 Technology Stack - **Language**: Python 3.11 - **Framework**: MCP SDK - **Container Runtime**: Docker - **Protocol**: JSON-RPC over stdio - **Dependencies**: docker-py, mcp, pydantic ### 3.3 Deployment Architecture - Executado como container Docker - Acesso ao Docker daemon via socket mounting - Isolamento de rede (sem portas expostas) - Stateless design ## 4. User Stories ### 4.1 Developer Workflows **US-001**: Como desenvolvedor, quero criar e gerenciar containers para testar aplicações ``` GIVEN um projeto que precisa de ambiente Docker WHEN solicito criação de container via Claude THEN o container é criado com configurações especificadas ``` **US-002**: Como desenvolvedor, quero visualizar logs para debug ``` GIVEN containers em execução WHEN solicito logs com filtros THEN recebo logs formatados e filtrados ``` **US-003**: Como desenvolvedor, quero deployar stacks complexas ``` GIVEN um arquivo docker-compose.yml WHEN solicito deploy da stack THEN todos os serviços são iniciados corretamente ``` ### 4.2 DevOps Workflows **US-004**: Como DevOps, quero monitorar recursos dos containers ``` GIVEN containers em produção WHEN solicito estatísticas THEN recebo métricas de CPU, memória e rede ``` **US-005**: Como DevOps, quero gerenciar volumes de dados ``` GIVEN necessidade de persistência de dados WHEN crio/gerencio volumes THEN dados são mantidos entre restarts ``` ## 5. API Specifications ### 5.1 Available Tools #### Container Operations ```typescript interface CreateContainerParams { image: string; name?: string; ports?: Record<string, string>; environment?: Record<string, string>; volumes?: string[]; network?: string; } interface ContainerLogsParams { container_name: string; tail?: number; follow?: boolean; timestamps?: boolean; since?: string; until?: string; } ``` #### Compose Operations ```typescript interface DeployComposeParams { compose_yaml?: string; compose_file?: string; project_name: string; environment?: Record<string, string>; } interface ComposeDownParams { project_name: string; remove_volumes?: boolean; remove_images?: boolean; } ``` ### 5.2 Response Formats #### Success Response ```json { "type": "text", "text": "Operation successful: <details>" } ``` #### Error Response ```json { "type": "text", "text": "Error: <error_message> | Context: <details>" } ``` ## 6. Testing Strategy ### 6.1 Unit Tests - Teste de cada handler individualmente - Mock do Docker client - Validação de parsing de argumentos - Teste de formatação de respostas ### 6.2 Integration Tests - Teste com Docker daemon real - Ciclo completo de criação/destruição - Teste de operações Compose - Teste de tratamento de erros ### 6.3 End-to-End Tests - Teste via Claude Code - Workflows completos de usuário - Teste de performance sob carga - Teste de recuperação de falhas ## 7. Security Considerations ### 7.1 Access Control - Execução com privilégios mínimos necessários - Sem acesso à rede externa do host - Isolamento via container ### 7.2 Input Validation - Sanitização de todos os inputs - Prevenção de command injection - Validação de tipos via Pydantic ### 7.3 Secret Management - Sem armazenamento de credenciais - Variáveis de ambiente isoladas - Sem logging de informações sensíveis ## 8. Monitoring & Observability ### 8.1 Metrics - Latência de operações - Taxa de sucesso/erro - Uso de recursos do servidor - Contagem de operações por tipo ### 8.2 Logging - Logs estruturados em JSON - Níveis: DEBUG, INFO, WARNING, ERROR - Correlação de requisições - Rotação automática de logs ### 8.3 Health Checks - Endpoint de health check - Verificação de conectividade Docker - Status de recursos disponíveis ## 9. Maintenance & Support ### 9.1 Version Strategy - Semantic versioning (MAJOR.MINOR.PATCH) - Changelog detalhado - Backward compatibility garantida em MINOR updates ### 9.2 Update Process 1. Build de nova imagem 2. Tag com versão 3. Update gradual com rollback capability 4. Validação pós-deploy ### 9.3 Support Channels - GitHub Issues para bugs - Documentação online - Exemplos de uso - FAQ atualizado ## 10. Future Enhancements ### 10.1 Roadmap Q1 2025 - [ ] Suporte a Docker Swarm - [ ] Integração com registries privados - [ ] Backup/restore de volumes - [ ] Templates de deployment ### 10.2 Roadmap Q2 2025 - [ ] Kubernetes support (via Docker Desktop) - [ ] Advanced networking features - [ ] Performance profiling tools - [ ] Visual container inspection ## 11. Appendix ### 11.1 Error Codes - `DKR-001`: Connection to Docker failed - `DKR-002`: Container not found - `DKR-003`: Image not found - `DKR-004`: Invalid configuration - `DKR-005`: Permission denied - `DKR-006`: Resource limit exceeded ### 11.2 Configuration Examples #### Basic Container ```json { "image": "nginx:latest", "name": "web-server", "ports": {"80": "8080"} } ``` #### Complex Stack ```yaml version: '3.8' services: app: image: node:18 environment: - NODE_ENV=production volumes: - ./app:/usr/src/app networks: - app-network db: image: postgres:15 environment: - POSTGRES_PASSWORD=secret volumes: - db-data:/var/lib/postgresql/data networks: - app-network volumes: db-data: networks: app-network: driver: bridge ``` ### 11.3 Troubleshooting Guide #### Connection Issues 1. Verificar Docker daemon status 2. Confirmar socket mounting correto 3. Validar permissões de acesso 4. Revisar logs do container MCP #### Performance Issues 1. Verificar recursos disponíveis 2. Otimizar queries de listagem 3. Implementar paginação 4. Cache de operações frequentes --- **Document Version**: 1.0.0 **Last Updated**: 2025-08-28 **Status**: Active **Owner**: DevOps Team **Reviewers**: Claude Code Team

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/diegofornalha/docker-mcp-py'

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