Flow - API Extractor & MCP Generator
Sistema completo para extrair endpoints de APIs e gerar servidores MCP automaticamente.
Funcionalidades
- Interface web intuitiva para configurar extrações
- Armazenamento de requisições no banco de dados PostgreSQL
- Processamento automático em background (worker)
- Acompanhamento de status em tempo real
- Histórico de todas as extrações
Pré-requisitos
- Python 3.8+
- PostgreSQL (Supabase)
- Chave da API Perplexity (opcional, configurada no backend)
Instalação
- Clone o repositório ou navegue até a pasta do projeto
- Instale as dependências:
pip install -r requirements.txt- Configure a variável de ambiente do banco de dados:
- (Opcional) Configure a chave da API Perplexity no backend:
export PERPLEXITY_API_KEY='pplx-...'Uso
- Inicie o servidor:
python app.py- Acesse a interface web:
http://localhost:5000- Preencha os campos:
- URL da Documentação da API: URL base da documentação (ex: https://docs.github.com/en/rest) - Nome da Ferramenta MCP: Nome para identificar a ferramenta (ex: GitHub, MyAPI) - URL Base da API: URL base da API (ex: https://api.github.com)
- Clique em "Gerar MCP Server"
- Acompanhe o status em tempo real na interface
Estrutura do Banco de Dados
A tabela api_extractions armazena:
id: ID único da extraçãostart_url: URL da documentaçãotool_name: Nome da ferramentaapi_base_url: URL base da APIstatus: Status (pending, processing, completed, failed)output_path: Caminho do servidor MCP geradoerror_message: Mensagem de erro (se houver)endpoint_count: Número de endpoints encontradoscreated_at: Data de criaçãoupdated_at: Data de atualizaçãoprocessed_at: Data de processamento
Como Funciona
- Frontend: Usuário preenche o formulário e envia
- API: Cria um registro no banco de dados com status "pending"
- Worker: Verifica periodicamente por novas extrações pendentes
- Processamento: Para cada extração pendente, executa o
main.py - Atualização: Atualiza o status no banco de dados
- Frontend: Faz polling para mostrar o status atualizado
Endpoints da API
POST /api/extract: Cria uma nova extraçãoGET /api/extraction/: Obtém status de uma extraçãoGET /api/extractions: Lista todas as extrações (com limite)
Arquivos Principais
app.py: Servidor Flask e rotas da APIdatabase.py: Funções de acesso ao banco de dadosworker.py: Worker que processa extrações em backgroundmain.py: Lógica principal de extração e geração de MCPtemplates/index.html: Interface web
Configuração do Worker
O worker verifica novas extrações a cada 5 segundos (configurável em worker.py).
Para processar múltiplas extrações simultaneamente, cada uma roda em uma thread separada.
