Skip to main content
Glama

MCP Gateway

by jowpereira
README.md9.92 kB
# MCP Gateway – API & Portal de Autoatendimento Este repositório contém o MCP Gateway, uma solução corporativa para expor, gerenciar e consumir ferramentas (APIs internas) de forma segura, escalável e auditável, com autenticação RBAC e portal de autoatendimento. *(Atualizado em 2025-05-10 para refletir o estado atual do projeto)* --- ## Sumário - [Visão Geral](#visão-geral) - [Estrutura de Pastas](#estrutura-de-pastas) - [Como Rodar (Desenvolvimento)](#como-rodar-desenvolvimento) - [Funcionalidades Principais](#funcionalidades-principais) - [Exemplo de Estrutura RBAC](#exemplo-de-estrutura-rbac) - [Segurança](#segurança) - [Documentação da API](#documentação-da-api) - [Requisitos do Sistema](#requisitos-do-sistema) - [Documentação Completa](#documentação-completa) - [Boas Práticas e Observações](#boas-práticas-e-observações) --- ## Visão Geral O MCP Gateway é composto por: - **Backend:** FastAPI (Python) responsável pela lógica de negócio, autenticação (JWT), autorização (RBAC), e exposição de APIs RESTful. Atualmente, persiste dados em arquivos JSON, com planos de migração para um banco de dados mais robusto. - **Frontend:** React (Vite + TypeScript) como portal de autoatendimento, consumindo as APIs do backend. O build de produção do frontend é servido estaticamente pelo backend FastAPI. --- ## Estrutura de Pastas ```text mcp-server/ ├── app/ # Código-fonte do Backend FastAPI │ ├── main.py # Ponto de entrada da aplicação FastAPI │ ├── config.py # Configurações da aplicação │ ├── auth.py # Lógica de autenticação, JWT, hashing │ ├── utils/ # Utilitários (RBAC, validadores, gerenciadores) │ ├── models/ # Modelos Pydantic (schemas de dados) │ │ ├── __init__.py │ │ └── requests.py # Modelos para solicitações de acesso │ ├── groups/ # Módulo para rotas relacionadas a grupos e usuários │ │ ├── __init__.py │ │ ├── routes.py # Rotas principais (usuários, grupos, ferramentas) │ │ ├── requests_routes.py # Rotas para solicitações de acesso a grupos │ │ └── tools.py # Utilitários de permissão (legado ou específico) │ └── scripts/ # Scripts utilitários (ex: gerar hash de senha) ├── data/ # Dados persistentes (temporário, para desenvolvimento) │ ├── rbac.json # Configurações de usuários, grupos, papéis, ferramentas │ └── requests.json # Dados das solicitações de acesso a grupos ├── docs/ # Documentação do projeto ├── frontend/ # Código-fonte do Portal Frontend React (Vite) │ ├── src/ # Código-fonte React/TypeScript │ ├── public/ # Arquivos públicos para o frontend │ ├── dist/ # Build de produção do frontend (servido pelo FastAPI) │ ├── package.json # Dependências e scripts do frontend │ └── README.md # Documentação específica do frontend ├── tests/ # Testes automatizados (Pytest) │ ├── conftest.py # Configurações e fixtures globais para testes │ ├── integration/ # Testes de integração da API │ └── data/ # Arquivos de dados para os testes ├── requirements.txt # Dependências Python do backend ├── pytest.ini # Configuração do Pytest └── README.md # Este documento (visão geral do projeto) ``` --- ## Como Rodar (Desenvolvimento) ### 1. Backend (FastAPI) No diretório raiz `mcp-server/`: ```powershell # Crie e ative um ambiente virtual (recomendado) python -m venv venv .\venv\Scripts\activate # Windows # source venv/bin/activate # Linux/macOS # Instale as dependências pip install -r requirements.txt # Rode o servidor de desenvolvimento uvicorn app.main:app --reload ``` O backend estará disponível em `http://localhost:8000`. ### 2. Frontend (React) Em um novo terminal, navegue até o diretório `frontend/`: ```powershell cd frontend # Instale as dependências npm install # Rode o servidor de desenvolvimento do frontend npm run dev ``` O frontend estará disponível em `http://localhost:5173` (ou outra porta, se a 5173 estiver ocupada) e fará requisições para o backend em `http://localhost:8000`. ### 3. Build do Frontend para Produção Para gerar a versão de produção do frontend que será servida pelo FastAPI: ```powershell cd frontend npm run build ``` Os arquivos estáticos serão gerados em `frontend/dist/`. O backend FastAPI já está configurado para servir esses arquivos quando não estiver em modo de desenvolvimento Vite. --- ## Funcionalidades Principais - **Autenticação e Autorização:** - Login de usuários com JWT (suportando papéis: `user`, `admin`, `global_admin`). - Refresh token para manutenção da sessão. - Controle de Acesso Baseado em Papéis (RBAC) para proteger endpoints e funcionalidades. - **Gerenciamento de Usuários (por Admin Global):** - CRUD completo de usuários (criar, listar, detalhar, atualizar, deletar). - Migração de senhas legadas para formato hasheado. - Definição de requisitos de senha e funcionalidade para alteração de senha pelo próprio usuário. - **Gerenciamento de Grupos:** - **Admin Global:** CRUD de grupos, designação de administradores de grupo. - **Admin de Grupo (ou Global):** Adicionar/remover usuários de seus grupos, promover membros a admin do grupo. - **Gerenciamento de Ferramentas:** - **Admin de Grupo (ou Global):** Associar/desassociar ferramentas a grupos. - Usuários podem visualizar e acessar as ferramentas para as quais seus grupos concedem permissão. - **Workflow de Solicitação de Acesso a Grupos (RF06):** - Usuários podem solicitar acesso a grupos. - Administradores (de grupo ou globais) podem revisar (aprovar/rejeitar) essas solicitações. - **Portal Frontend:** - Interface para login, dashboard, visualização de ferramentas, solicitação de acesso a grupos e administração de solicitações. - Navegação e componentes dinâmicos baseados no papel do usuário. - **API Backend:** - Endpoints RESTful para todas as funcionalidades mencionadas. - Documentação automática da API via Swagger UI (`/docs`) e ReDoc (`/redoc`). - Healthcheck (`/tools/health`). --- ## Exemplo de Estrutura RBAC Consulte o arquivo `data/rbac.json` para um exemplo da estrutura de dados que define usuários, senhas (hasheadas ou legadas para migração), papéis, grupos, membros de grupos, administradores de grupos e ferramentas associadas a grupos. --- ## Segurança - Autenticação baseada em JWT. - Controle de Acesso Baseado em Papéis (RBAC) em todos os endpoints sensíveis. - Hashing de senhas com bcrypt. - Validação de força de senha. - CORS configurado para desenvolvimento. - Planejamento para headers de segurança adicionais (HSTS, CSP), rate limiting, e trilha de auditoria detalhada (ver `docs/SEGURANCA.md` e `docs/TODO.md`). --- ## Documentação da API A documentação interativa e detalhada da API está disponível automaticamente através do FastAPI: - **Swagger UI:** [http://localhost:8000/docs](http://localhost:8000/docs) - **ReDoc:** [http://localhost:8000/redoc](http://localhost:8000/redoc) > **Nota:** Um resumo dos endpoints também está disponível em [`docs/API.md`](docs/API.md), mas a documentação gerada automaticamente é a fonte mais precisa e completa. A documentação técnica detalhada do backend, incluindo modelos e fluxos, pode ser encontrada em [`docs/BACKEND_DOCUMENTATION.md`](docs/BACKEND_DOCUMENTATION.md). --- ## Requisitos do Sistema Consulte o arquivo [`docs/REQUISITOS.md`](docs/REQUISITOS.md) para uma lista detalhada de requisitos funcionais, não-funcionais, de negócio e operacionais, incluindo o status de implementação de muitos deles. --- ## Documentação Completa A documentação detalhada do projeto está centralizada na pasta [`docs/`](docs/): - [`docs/REQUISITOS.md`](docs/REQUISITOS.md): Requisitos do sistema - [`docs/API.md`](docs/API.md): Resumo dos endpoints da API - [`docs/BACKEND_DOCUMENTATION.md`](docs/BACKEND_DOCUMENTATION.md): Documentação técnica detalhada do Backend - [`docs/ARQUITETURA.md`](docs/ARQUITETURA.md): Arquitetura técnica do sistema - [`docs/SEGURANCA.md`](docs/SEGURANCA.md): Práticas e considerações de segurança - [`docs/GOVERNANCA.md`](docs/GOVERNANCA.md): Governança, papéis e responsabilidades - [`docs/OPERACIONAL.md`](docs/OPERACIONAL.md): Operação, monitoramento e troubleshooting - [`docs/CHANGELOG.md`](docs/CHANGELOG.md): Histórico de versões e mudanças - [`docs/TODO.md`](docs/TODO.md): Lista de melhorias e pendências - [`frontend/README.md`](frontend/README.md): Documentação específica do Frontend --- ## Boas Práticas e Observações - Mantenha as dependências atualizadas (`requirements.txt` para o backend, `package.json` para o frontend). - Utilize ambientes virtuais Python para isolar as dependências do backend. - Sempre gere o build de produção do frontend (`npm run build`) antes de realizar o deploy da aplicação integrada. - Consulte a documentação específica de cada módulo/pasta para informações mais detalhadas. - Utilize o sistema de issues do repositório para rastrear bugs, solicitar features e discutir melhorias. - Contribuições são bem-vindas! Siga as diretrizes de contribuição (se houver) e utilize Pull Requests para propor mudanças. --- *Este documento deve ser revisado e atualizado periodicamente para refletir o estado atual e a evolução do projeto.*

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