Agente de IA para análise de logs TOTVS Protheus, construído com arquitetura modular usando LangGraph, FastAPI, Angular e o protocolo MCP (Model Context Protocol).
O projeto é composto por três componentes principais:
- Framework: FastAPI com orquestração LangGraph
- Porta: 8000
- Responsabilidades:
- Autenticação JWT com PostgreSQL
- Workflows de análise de logs (initial analysis, deep dive, chat)
- Integração com provedores LLM (OpenAI, Google, Anthropic)
- Documentação: api/README.md
- Framework: FastMCP (sobre FastAPI)
- Porta: 8002
- Responsabilidades:
- Ferramentas MCP para busca de logs (Elasticsearch)
- RAG com ChromaDB para contexto histórico
- Detecção de anomalias em séries temporais
- Documentação: mcp-server/README.md
- Framework: Angular 18 standalone + NGINX
- Porta: 8080 (desenvolvimento), 80 (produção)
- Responsabilidades:
- Interface web para exploração de logs
- Chat conversacional com IA
- Design System TOTVS
- Documentação: ui/README.md
- PostgreSQL: Banco de dados para autenticação (porta 5433)
- ChromaDB: Banco vetorial para RAG (porta 8001)
- Elasticsearch: Fonte de dados de logs (externo)
flowchart LR
subgraph UI
A[Frontend Angular Browser]
end
subgraph API
APIRoutes[FastAPI API 8000 - Auth Metrics Users]
end
subgraph MCP
Tools[MCP Server MCP 8002 - FastMCP Tools: search_logs RAG anomalies]
end
subgraph Data
ES[(Elasticsearch)]
CH[(ChromaDB)]
PG[(PostgreSQL)]
end
A -->|HTTP| APIRoutes
A -->|HTTP| Tools
APIRoutes <-->|JWT| A
Tools <-->|JWT or Service Token| A
Tools -->|Query| ES
Tools -->|RAG| CH
APIRoutes -->|Users/Auth| PG
- Docker & Docker Compose (recomendado)
- Ou: Python 3.11+, Node.js 20+, PostgreSQL 16, ChromaDB
- Opcional: kubectl, Helm 3, Tilt (para Kubernetes)
# Clone o repositório
git clone <repo-url>
cd argus-mcp-agent
# Copie o arquivo de configuração
cp .env.example .env
# Edite o .env com suas credenciais
# - Chaves de API (OPENAI_API_KEY, GOOGLE_API_KEY, ANTHROPIC_API_KEY)
# - Credenciais do Elasticsearch (ES_HOST, ES_USER, ES_PASSWORD)
# - Configurações de banco de dados (se necessário)Consulte docs/ENV-VARIABLES.md para detalhes completos das variáveis de ambiente.
O projeto inclui um Makefile completo para facilitar o desenvolvimento:
# Ver todos os comandos disponíveis
make help
# Setup inicial (cria .env e venv)
make setup
# Desenvolvimento com Docker Compose
make dev
# Build e push de imagens para GCP
make docker-releaseA maneira mais simples de executar o projeto completo:
# Subir todos os serviços (postgres, chromadb, api, mcp-server, ui)
docker-compose up
# Ou com rebuild
docker-compose up --build
# Parar os serviços
docker-compose downAcessar a aplicação:
- UI: http://localhost:8080
- API: http://localhost:8000
- MCP Server: http://localhost:8002
# Com suporte a debugging e hot-reload
docker-compose -f docker-compose.dev.yml upPara desenvolvimento individual de cada componente:
cd api
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000 --reloadcd mcp-server
pip install -r requirements.txt
uvicorn tools.server:app --host 0.0.0.0 --port 8002 --reloadcd ui
npm install
npm start # ou ng serve
# Acesse http://localhost:4200Para desenvolvimento em ambiente Kubernetes local:
tilt up
# Acesse a Tilt UI em http://localhost:10350# Development
helm install argus-dev ./helm/argus-agent \
--namespace argus-dev \
--create-namespace \
--values k8s/dev/values.yaml
# Production
helm install argus-prod ./helm/argus-agent \
--namespace argus-production \
--create-namespace \
--values k8s/prod/values.yaml# Login no GCP Artifact Registry
make docker-login
# Build e push com tags latest + timestamp
make docker-release
# Ou manualmente
make docker-build
make docker-pushConsulte a documentação completa de deployment para mais detalhes.
flowchart TB
subgraph Namespace[argus]
subgraph Deployments
API[Deployment: argus-api<br/>Pods x N]
MCP[Deployment: argus-mcp-server<br/>Pods x N]
UI[Deployment: argus-ui<br/>Pod x 1]
CHD[Deployment: chromadb]
PGD[Deployment: postgres]
end
SVC_API[Service: api 8000]
SVC_MCP[Service: mcp 8002]
SVC_UI[Service: ui 80]
Ingress[Ingress NGINX]
end
UI --> SVC_UI --> Ingress
API --> SVC_API --> Ingress
MCP --> SVC_MCP --> Ingress
MCP --> CHD
MCP --> ES[(Elastic externo)]
API --> PGD
argus-mcp-agent/
├── api/ # FastAPI + LangGraph (porta 8000)
│ ├── app/ # Código da aplicação
│ │ ├── agent/ # Workflows LangGraph
│ │ ├── api/ # Rotas da API
│ │ └── auth/ # Lógica de autenticação
│ ├── config/ # Arquivos de configuração
│ ├── prompts/ # Templates de prompts
│ ├── Dockerfile # Imagem de produção
│ └── requirements.txt # Dependências Python
│
├── mcp-server/ # FastMCP Server (porta 8002)
│ ├── tools/ # Implementação das ferramentas MCP
│ │ ├── server.py # Servidor principal
│ │ ├── auth.py # Autenticação
│ │ └── rag_manager.py # ChromaDB RAG
│ ├── Dockerfile
│ └── requirements.txt
│
├── ui/ # Angular 18 + NGINX (porta 8080)
│ ├── src/
│ │ ├── app/
│ │ │ ├── core/ # Auth, guards, interceptors
│ │ │ ├── features/ # Log Explorer, Login
│ │ │ └── shared/ # Componentes reutilizáveis
│ │ └── styles/ # TOTVS Design System
│ ├── nginx.conf
│ ├── Dockerfile
│ └── package.json
│
├── helm/ # Helm charts para Kubernetes
│ └── argus-agent/
│
├── k8s/ # Manifestos Kubernetes
│ ├── base/ # Configuração base
│ ├── dev/ # Ambiente de desenvolvimento
│ ├── staging/ # Ambiente de staging
│ └── prod/ # Ambiente de produção
│
├── docs/ # Documentação completa
├── scripts/ # Scripts de automação
├── docker-compose.yml # Ambiente de desenvolvimento local
├── docker-compose.dev.yml # Desenvolvimento com debugging
├── Makefile # Comandos de build/deploy
└── Tiltfile # Configuração Tilt para K8s dev
O projeto inclui um Makefile completo com diversos comandos úteis:
make help # Mostra todos os comandos disponíveis
make setup # Setup inicial (cria .env e venv)
make dev # Sobe ambiente de desenvolvimento
make dev-build # Build e sobe com docker-compose
make dev-down # Para o ambiente
make dev-logs # Ver logs do desenvolvimentomake docker-login # Login no GCP Artifact Registry
make docker-build # Build das 3 imagens (api, mcp-server, ui)
make docker-push # Push para GCP registry
make docker-release # Login + build + push (latest + timestamp)make helm-lint # Lint do Helm chart
make helm-template # Gera manifestos K8s
make helm-install-dev # Instala no namespace dev
make helm-upgrade-dev # Atualiza deployment dev
make k8s-dev-deploy # Deploy direto com kubectlmake tilt-up # Inicia Tilt
make tilt-down # Para Tiltmake test # Executa testes
make test-cov # Testes com cobertura
make lint # Linting
make clean # Limpa artifacts de buildO MCP Server pode ser acessado remotamente via HTTP com autenticação JWT.
Endpoint sandbox: https://argus.sandbox.tcloud-devops.cloudtotvs.com.br/mcp/
Ferramentas disponíveis:
search_logs- Busca logs no Elasticsearchretrieve_historical_context- Contexto histórico via RAGsave_analysis_summary- Persiste análises no RAGdetect_timeseries_anomalies- Detecção de anomalias
Para detalhes completos, consulte:
# 1. Login e obtenção do token
TOKEN=$(curl -s -X POST https://argus.sandbox.tcloud-devops.cloudtotvs.com.br/api/auth/login \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"<senha>"}' | jq -r .access_token)
# 2. Buscar logs
curl -X POST https://argus.sandbox.tcloud-devops.cloudtotvs.com.br/mcp/tools/search_logs \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"index":"logs_prod_app","window":"1h"}'