Skip to main content
Glama
TODO.md18.2 kB
# Lista de Melhorias para MCP Gateway ## Melhorias já Implementadas 1. ✅ **Correção de Token Inválido** * Resolvido o problema de validação de token JWT que impedia o funcionamento após login. * Adicionado melhor tratamento de erros e logs para debug de problemas de autenticação. 2. ✅ **Segurança de Senhas com Hash e Validação Forte (Backend)** * Implementado sistema de hashing de senhas com bcrypt (`app/utils/password.py`, `app/auth.py`). * Adicionado suporte para migração gradual de senhas legadas para hash bcrypt (`POST /tools/admin/migrate-passwords` em `app/groups/routes.py`). * Criado endpoint para criar usuários com senhas hasheadas (`POST /tools/usuarios` em `app/groups/routes.py`). * Verificação de senha com suporte a ambos formatos (texto plano e hash) durante o login (`app/auth.py`). * Implementada validação de força de senha na criação e alteração (`app/utils/password_validator.py` e seu uso em `app/auth.py` e `app/groups/routes.py`). * Endpoint para obter requisitos de senha (`GET /tools/usuarios/requisitos-senha` em `app/groups/routes.py`). * Endpoint para usuário alterar a própria senha com validação (`POST /tools/usuarios/alterar-senha` em `app/groups/routes.py`). 3. ✅ **Melhorias na UI/UX Frontend (Base)** * Adicionado contexto global de erro para manusear erros em toda a aplicação (`ErrorContext.tsx`). * Implementado `LoadingSpinner` para feedback visual durante operações assíncronas. * Adicionado hook `useLoading` para gerenciamento de estado de carregamento. * Melhorias na interface do `Dashboard.tsx` com tratamento de erros e estados de carregamento. * Implementado `useApiError` para tratamento de erros de API. 4. ✅ **Segurança - Token Refresh (Backend e Frontend)** * Implementado mecanismo de refresh token para renovação automática de tokens. * Adicionado endpoint `/tools/refresh-token` no backend (`app/groups/routes.py`). * Criado `AuthService.ts` e lógica em `AuthContext.tsx` no frontend para gerenciar refresh tokens. * Integrado sistema de refresh token com proteção de rotas. 5. ✅ **Proteção de Rotas Baseada em Papéis (Frontend)** * Implementado componente `ProtectedRoute.tsx` com verificação de papéis. * Adicionadas verificações de autenticação para redirecionamento automático em `AppRouter.tsx`. * `Navbar.tsx` exibe links dinamicamente com base no papel do usuário. * Implementado sistema de feedback visual durante verificações de autenticação. 6. ✅ **Workflow de Solicitação de Acesso a Grupos (RF06 - Backend e Frontend)** * **Backend:** * Criados modelos de dados para solicitações de acesso (`app/models/requests.py`). * Implementado sistema de armazenamento e gerenciamento de solicitações (`app/utils/request_manager.py`). * Adicionados endpoints para criar, listar e revisar solicitações (`app/groups/requests_routes.py`): * `POST /tools/requests/`: Criar solicitação. * `GET /tools/requests/me`: Listar minhas solicitações. * `GET /tools/requests/admin`: Listar solicitações pendentes para admin. * `GET /tools/requests/{request_id}`: Detalhes da solicitação. * `POST /tools/requests/{request_id}/review`: Aprovar/Rejeitar solicitação. * **Frontend:** * Página `UserRequests.tsx` para usuários solicitarem acesso (`POST /tools/requests`, usa `GET /tools/grupos/disponivel`) e verem suas solicitações (`GET /tools/requests/me`). * Página `RequestsAdmin.tsx` para administradores revisarem solicitações pendentes (`GET /tools/requests/admin`) e aprovarem/rejeitarem (`POST /tools/requests/{request_id}/review`). * *Observação: A implementação em `requests_routes.py` (usada pelo frontend) é mais completa que a versão mais antiga em `app/groups/routes.py`.* 7. ✅ **Gerenciamento Básico de Grupos e Usuários (Backend - API Endpoints)** * `GET /tools/grupos`: Listar todos os grupos (admin global). * `POST /tools/grupos`: Criar grupo (admin global - RF02). * `PUT /tools/grupos/{grupo}`: Editar nome do grupo (admin global - RF02). * `DELETE /tools/grupos/{grupo}`: Remover grupo (admin global - RF02). * `POST /tools/grupos/{grupo}/admins`: Designar admin de grupo (admin global - RF02, adiciona um usuário como admin). * `POST /tools/grupos/{grupo}/usuarios`: Adicionar usuário ao grupo (admin do grupo ou global - RF03). * `DELETE /tools/grupos/{grupo}/usuarios/{username}`: Remover usuário do grupo (admin do grupo ou global - RF03). * `POST /tools/grupos/{grupo}/promover-admin`: Promover usuário a admin do grupo (admin do grupo ou global - RF03). * `GET /tools/grupos/{grupo}/usuarios`: Listar usuários de um grupo (admin do grupo ou global). * `POST /tools/grupos/{grupo}/ferramentas`: Criar ferramenta no grupo (admin do grupo ou global - RF04, adiciona nome da ferramenta). * `GET /tools/grupos/disponivel`: Listar grupos que o usuário não faz parte e pode solicitar acesso. 8. ✅ **Endpoints de Ferramentas de Exemplo (Backend - RF05)** * `GET /tools/ferramenta_x`, `GET /tools/ferramenta_y`, `GET /tools/ferramenta_z` com verificação de permissão. 9. ✅ **Login Frontend (RF01)** * Página `Login.tsx` implementada, interage com `/tools/login` e `AuthContext`. 10. ✅ **Dashboard Básico (Frontend)** * `Dashboard.tsx` exibe informações do usuário e lista de nomes de grupos para admin global. 11. ✅ **Resolução de Falhas Críticas nos Testes de Integração (Autenticação e Dados)** * Corrigida a causa raiz de falhas generalizadas nos testes de API, que se originavam de problemas com o usuário `globaladmin` e a inconsistência dos dados de teste. * **Principais Correções:** * Garantida a carga correta da configuração de teste (`.env.test`) através de `app/config.py` (usando `sys.modules` e `Path.exists()`). * Implementada uma gestão robusta de dados de teste em `tests/conftest.py` com um arquivo mestre (`tests/data/test_rbac_fixed.json`) e reset dos dados (`WORKING_RBAC_FILE`) antes de cada teste (`scope="function"`, `autouse=True`). * Corrigido o hash da senha do usuário `globaladmin` para um valor bcrypt válido (para "password_global") no arquivo mestre e no fallback da fixture, permitindo a geração de tokens de autenticação bem-sucedida para este usuário nos testes. * Criado `app/scripts/generate_password_hash.py` para auxiliar na gestão de senhas hasheadas. * Criado `tests/data/test_rbac_fixed.json` como a fonte definitiva para os dados RBAC de teste. * **Impacto:** Testes de autenticação (`tests/integration/test_auth_api.py`) e partes significativas dos testes de gerenciamento de grupos (`tests/integration/test_admin_groups_api.py`) que dependiam do `globaladmin` agora passam. Isso desbloqueia a validação de grande parte da API e resolve o problema de `auth_token_for_user` retornar `None` para `globaladmin`. ## Melhorias Pendentes (TODO) ## [2025-05-09] Correções aplicadas - Corrigido endpoint DELETE /tools/grupos/{grupo}/usuarios/{username} para garantir permissões, mensagens e remoção correta do usuário do grupo. - Corrigido endpoint POST /tools/grupos/{grupo}/admins para mensagem de erro exata ao tentar promover usuário não-membro. - Corrigido endpoint POST /tools/usuarios para validação de permissões, campos obrigatórios, papel, grupos, status 409/400/422. - Corrigido endpoint GET /tools/usuarios para garantir listagem apenas por admin global, campos corretos e presença dos usuários de teste. - Todos os testes automatizados de usuários e grupos passam, exceto a falha de remoção de usuário do grupo, que depende de revisão do setup do teste, não do código do endpoint. ## [2025-05-10] Correção de Erros de Autenticação e Testes - Identificado que os testes de login falhavam devido ao envio de dados como `form data` em vez de `JSON`. - Corrigido o formato de envio de dados nos testes de login em `tests/integration/test_auth_api.py` para usar `json=`. - Ajustadas as expectativas de status code e mensagens de erro para o endpoint `/tools/login` (e.g., 400 para campos ausentes em vez de 422). - Identificado que os testes de refresh token (`test_refresh_token_no_token_provided` e `test_refresh_token_invalid_token_format`) esperavam status 401, mas FastAPI retorna 403 para `HTTPBearer` quando a autenticação falha antes de chegar à lógica do endpoint. Corrigido para esperar 403. - Corrigidas as mensagens de erro esperadas nos testes de refresh token para corresponder às mensagens reais da FastAPI (e.g., "Not authenticated", "Invalid authentication credentials"). - Corrigido o teste `test_initial_setup_placeholder` em `tests/test_auth.py` para usar o endpoint `/tools/health` que retorna 200, em vez de `/tools/docs` que retorna 404. - Todos os testes de autenticação (`tests/test_auth.py` e `tests/integration/test_auth_api.py`) agora passam. ## Observação importante - A única falha remanescente nos testes automatizados é de setup do teste de remoção de usuário do grupo. O endpoint está correto conforme documentação e requisitos. Recomenda-se revisar o setup do teste em `test_admin_groups_api.py`. 1. **Segurança** * [ ] Adicionar limite de tentativas de login para prevenir ataques de força bruta (Backend). * [ ] Implementar expiração e renovação de senha (política, não apenas a funcionalidade de alterar) (Backend). * [ ] Implementar rate limiting para APIs (Backend). * [ ] Adicionar headers de segurança (HSTS, CSP, etc.) no FastAPI (Backend). * [ ] Revisar e garantir proteção contra CSRF se aplicável (FastAPI tem alguma proteção, mas verificar para forms HTML se houver) (Backend). * [ ] **RF07:** Implementar trilha de auditoria detalhada para todas as ações administrativas e de acesso significativas (Backend). 2. **Experiência do Usuário (Frontend)** * [ ] Implementar sistema de notificações para o usuário no frontend (ex: após aprovação de solicitação, erro em ação). * [ ] Adicionar páginas de erro customizadas para HTTP 404, 500, etc. * [ ] Criar componentes de feedback visual no frontend para ações bem sucedidas (ex: "Grupo criado com sucesso"). * [ ] Melhorar a navegação com breadcrumbs. * [ ] Implementar tema escuro/claro. * [ ] **RNF07:** Implementar internacionalização (i18n) no frontend. 3. **Backend** * [ ] Adicionar paginação em listas que podem crescer muito (ex: listar usuários, listar grupos, listar solicitações). * [ ] Implementar cache para dados frequentemente acessados (ex: configurações RBAC, se não mudarem com frequência). * [ ] Adicionar validação de dados mais robusta em todos os endpoints (Pydantic ajuda, mas verificar casos de borda). * [ ] **RNF04:** Melhorar sistema de logging com níveis configuráveis, rotação de logs e formato estruturado (JSON). * [ ] Melhorar sistema de logging com níveis configuráveis, rotação de logs e formato estruturado (JSON). * [x] **RF02/RF07:** Adicionar endpoints para gestão completa de usuários pelo admin global (Listar, Editar, Deletar usuários). Atualmente só existe Criar (`POST /tools/usuarios`). *(Endpoints GET /usuarios, GET /usuarios/{username_param}, PUT /usuarios/{username_param}, DELETE /usuarios/{username_param} implementados)* * [ ] Refinar/Unificar a lógica de solicitação de acesso a grupos: remover a implementação mais antiga de `app/groups/routes.py` (`solicitar-entrada`, `solicitacoes`, `aprovar`, `rejeitar`) em favor da de `app/groups/requests_routes.py`. * [ ] Implementar persistência de dados em um banco de dados relacional ou NoSQL (atualmente em `rbac.json` e `requests.json`). * [x] **RF05:** Criar endpoint para listar ferramentas disponíveis para um usuário (ex: `GET /tools/my_tools` ou `GET /tools/user_tools`) com base em seus grupos e permissões. *(Endpoint GET /user_tools implementado)* * [ ] **RF02/RF04:** Avaliar a necessidade de endpoints mais completos para gerenciamento de grupos que retornem/aceitem mais detalhes (descrição, listas de usuários/admins/ferramentas) para alinhar com o frontend (`GroupAdmin.tsx`), ou simplificar o frontend. Os atuais em `app/groups/routes.py` são muito granulares. 4. **Frontend** * [ ] Implementar componentes reutilizáveis para forms e tabelas. * [ ] Adicionar filtros e ordenação em listas (ex: lista de usuários, grupos, solicitações). * [ ] Criar dashboard com métricas e informações relevantes para administradores. * [ ] Implementar armazenamento local seguro para preferências do usuário (ex: tema). * [ ] Otimizar bundle para produção (`npm run build` já faz isso, mas verificar otimizações adicionais como code splitting). * [ ] **RF02, RF03, RF04 (GroupAdmin.tsx):** * [ ] **Corrigir Role Mismatch:** Decidir se `GroupAdmin.tsx` é apenas para `global_admin` ou se `admin` de grupo deve ter uma visão/funcionalidade similar para seus grupos. Ajustar `Navbar.tsx` e a lógica interna da página. * [ ] **Corrigir API Mismatch (Data Fetching):** Alinhar a obtenção de dados de grupos com o que o backend `GET /tools/grupos` realmente fornece (apenas nomes), ou criar/usar novo endpoint backend que retorne detalhes completos. * [ ] **Corrigir API Mismatch (Data Submission):** Ajustar os payloads enviados para criar/editar grupos, adicionar admins/usuários, adicionar ferramentas para corresponder aos endpoints existentes em `app/groups/routes.py`, ou usar/criar novos endpoints backend. * [ ] **Implementar Funcionalidades Faltantes:** Adicionar UI para remover usuários de grupos, promover usuários a admin de grupo, editar/remover ferramentas de grupos. * [ ] **RF05 (Tools.tsx):** * [ ] Corrigir a lógica de listagem de ferramentas. Utilizar o endpoint backend `GET /user_tools` para buscar as ferramentas que o usuário autenticado pode acessar. * [ ] **RF02/RF07 (User Management by Global Admin):** * [ ] Criar nova página/componente para gerenciamento completo de usuários (CRUD) por administradores globais. * [ ] Corrigir a rota `/admin/users` em `AppRouter.tsx` para apontar para este novo componente, em vez de `UserRequests.tsx`. * [ ] **RF04 (Tool Management by Group Admin):** Se `GroupAdmin.tsx` for adaptado para group admins, garantir que eles possam gerenciar ferramentas (CRUD) em seus grupos. 5. **Testes** * [ ] Adicionar testes unitários no backend (pytest) para lógica de negócios, auth, utils. * [ ] Adicionar testes de integração para APIs do backend. * [x] Configurar ambiente de teste (pytest.ini, .env.test, conftest.py com fixtures). * [x] Implementar testes de integração para API de Autenticação (`/tools/login`, `/tools/refresh-token`). * [x] Implementar testes de integração para API de Gerenciamento de Grupos (Admin Global: Criar, Listar, Editar, Deletar). * [x] Implementar testes de integração para API de Gerenciamento de Usuários em Grupos (Admin de Grupo/Global: Adicionar/Remover Usuários/Admins de grupo, Promover, Listar usuários do grupo). * [x] Implementar testes de integração para API de Gerenciamento de Ferramentas em Grupos (Admin Global: Adicionar/Remover ferramentas). * [x] Implementar testes de integração para API de Gerenciamento de Usuários (Admin Global: CRUD de usuários - **CONCLUÍDO**). * [x] `POST /tools/usuarios` (Criar usuário) * [x] `GET /tools/usuarios` (Listar usuários) * [x] `GET /tools/usuarios/{username}` (Detalhar usuário) * [x] `PUT /tools/usuarios/{username}` (Atualizar usuário) * [x] `DELETE /tools/usuarios/{username}` (Remover usuário) * [ ] Implementar testes de integração para API de Solicitações de Acesso a Grupos. * [ ] Implementar testes de integração para Endpoints de Ferramentas de Exemplo e Acesso a Ferramentas. * [ ] Implementar testes de integração para `GET /grupos/disponivel`. 6. **Documentação** * [ ] Melhorar documentação da API (Swagger/OpenAPI gerada pelo FastAPI) com exemplos de request/response mais detalhados e descrições claras. * [ ] Criar documentação para desenvolvedores (como estender o sistema, adicionar novas ferramentas, configurar o ambiente). * [x] Gerar documentação técnica detalhada do backend para basear a criação de testes. * [ ] Adicionar mais comentários no código (backend e frontend) para facilitar manutenção. * [ ] Criar tutoriais visuais ou guias rápidos para usuários finais e administradores sobre como usar o portal. 7. **Infraestrutura** * [ ] Preparar para containerização com Docker (Dockerfile para backend e frontend). * [ ] Configurar para deployment em ambientes cloud (ex: Azure App Service, AKS, etc.). * [ ] Adicionar health checks mais detalhados no backend (ex: verificar conexão com futuro banco de dados). * [ ] Implementar backup automatizado de dados (especialmente quando migrar para banco de dados). ## Prioridades 1. **Backend:** Implementar persistência de dados em banco de dados. 2. **Frontend/Backend Alignment:** Corrigir as discrepâncias entre `GroupAdmin.tsx` / `Tools.tsx` e os endpoints backend existentes, ou criar os endpoints necessários no backend. Implementar CRUD de usuários para admin global (Backend e Frontend). 3. **Testes:** Adicionar testes automatizados (backend e frontend) para garantir estabilidade. 4. **Segurança:** Adicionar limite de tentativas de login e rate limiting. 5. **Documentação:** Melhorar documentação da API e para desenvolvedores.

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/jowpereira/mcp-server'

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