Utilizes the Gemini AI service for critical analysis of healthcare system rules and generating detailed, structured explanations of manual validations.
Used in headless mode to extract text and process content from legacy .DOC documents for indexing and retrieval within the RAG system.
Integrates with MinIO/S3-compatible storage to read and query healthcare datasets such as SIGTAP and CNES stored in Parquet format.
Provides tools to read and analyze TypeScript source code from validation critiques, allowing the AI to explain the logic and compare it with official manuals.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Manual RAG — SIH/SUS Query SystemComo devo registrar um atendimento de politraumatizado na AIH?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Manual RAG — Auditoria de Faturamento SIH/SUS
Sistema RAG (Retrieval-Augmented Generation) para auditoria de faturamento hospitalar SIH/SUS com consulta de manuais, portarias, SIGTAP e CNES em linguagem natural.
Funciona como MCP Server para o Claude Code, expondo 43 tools organizadas em 8 módulos: RAG, SIGTAP, CNES, auditoria, auditoria de AIH, inteligência, legacy e health.
v2.1.0 — Busca híbrida (semântica + BM25), DuckDB/DATASUS client, Docker Compose, parent-child chunking.
Instalação rápida
cd scripts/manual-rag
bash setup.shO script cria o venv, instala dependências, indexa os documentos (se existirem em ragData/) e registra o MCP server no Claude Code.
Instalação manual
1. Ambiente e dependências
cd scripts/manual-rag
python3 -m venv .venv
source .venv/bin/activate
pip install -e .2. Alimentar o banco vetorial
Coloque PDFs em ragData/manuais/ e portarias em ragData/portarias/, depois:
python extrair_manual.py --ragdata ragData/
python scripts/indexar_manual.py3. Registrar MCP no Claude Code
# Local (este repo)
claude mcp add manual-sih -- .venv/bin/python mcp_server.py
# Global (qualquer repo)
pip install -e .
claude mcp add --scope user manual-sih -- manual-sih-mcpAbra uma nova sessão do Claude Code — as 43 tools ficam disponíveis automaticamente.
4. SIGTAP e CNES via DATASUS
As tools de SIGTAP e CNES usam DuckDB sobre Parquet armazenado no MinIO. Precisa do container do modulo-processos rodando:
cd modulo-processos && docker compose up -d minioCopie .env.example para .env e ajuste se necessário:
cp .env.example .envVariáveis relevantes:
Variável | Default | Descrição |
|
| Endpoint MinIO/S3 |
|
| Credencial S3 |
|
| Credencial S3 |
|
| Bucket com Parquets SIGTAP/CNES |
|
| Host ChromaDB (para modo Docker) |
|
| Porta ChromaDB |
|
| Host do MCP Server (modo SSE) |
|
| Porta do MCP Server (modo SSE) |
|
| Nível de log |
5. Docker Compose (opcional)
Para rodar o MCP Server e ChromaDB em containers:
docker compose up -dExpõe o MCP Server na porta 8200 e ChromaDB na 8201.
API Key (para /explicar e analisar_critica.py)
export GEMINI_API_KEY="sua-chave"Ou salve em arquivo:
mkdir -p ~/.config/google
echo "sua-chave" > ~/.config/google/api_key
chmod 600 ~/.config/google/api_keyAlimentar o banco
Opção 1: Processar todo o ragData (recomendado)
Processa recursivamente todos os arquivos em ragData/ (PDFs, HTMLs, DOCs, ZIPs):
source .venv/bin/activate
python extrair_manual.py --ragdata ragData/
python scripts/indexar_manual.pyOpção 2: PDFs individuais
# Múltiplos PDFs
python extrair_manual.py manual1.pdf manual2.pdf
# Adicionar sem apagar existentes
python extrair_manual.py --adicionar novo.pdfOpção 3: Auto-detecção
Se nenhum argumento for passado, procura *.pdf no diretório raiz do projeto:
python extrair_manual.pyApós qualquer extração, sempre indexar:
python scripts/indexar_manual.pyA indexação gera embeddings (paraphrase-multilingual-MiniLM-L12-v2) no ChromaDB e um índice BM25 para busca híbrida.
Uso
consulta_manual.py — Consulta interativa
Busca semântica no manual em linguagem natural.
# Modo interativo
python consulta_manual.py
# Consulta direta (uma pergunta)
python consulta_manual.py 'como registrar politraumatizado na AIH'Comandos no modo interativo:
Comando | Ação |
| Busca semântica no manual |
| Explica como a crítica N é validada (usa IA + RAG + código) |
| Modo validação de críticas (busca semântica simples) |
| Lista todas as fontes indexadas com tipo e ano |
| Lista todas as seções do manual |
| Altera quantidade de resultados (padrão: 5) |
| Encerra |
/explicar N — Como funciona a validação de uma crítica
Combina o código TypeScript da crítica + trechos relevantes do manual + Claude para gerar uma explicação didática:
O que a crítica verifica
Passo a passo da validação
Campos envolvidos
Exceções (quando NÃO gera crítica)
Fundamentação no manual (com seção e página)
Após a explicação, abre modo interativo para perguntas de follow-up.
Manual SIH> /explicar 92analisar_critica.py — Agente de Análise Crítica (IA)
Envia o código + trechos do manual para o Claude e recebe um parecer estruturado de conformidade.
# Analisar uma crítica
python analisar_critica.py 92
# Analisar e salvar resultado em data/analises/
python analisar_critica.py 92 --salvar
# Analisar TODAS as críticas
python analisar_critica.py --todas --salvarO parecer inclui:
Resumo da regra
O que o código faz (passo a passo)
O que o manual diz (com seção e página)
Veredicto: CONFORME / PARCIALMENTE CONFORME / NÃO CONFORME
Pontos conformes, lacunas, excessos e riscos
Recomendações concretas
Após a análise, abre modo interativo para perguntas de follow-up com contexto mantido.
Com , gera em data/analises/:
analise_critica_92.json— dados estruturadosanalise_critica_92.md— parecer em markdown
validar_critica.py — Código vs Manual (sem IA)
Mostra o código de uma crítica lado a lado com as seções do manual que a fundamentam.
python validar_critica.py 129Comandos internos: /codigo (ver código completo), /full (ver todas as seções encontradas)
mapear_criticas.py — Referência cruzada em lote
Mapeia automaticamente todas as críticas de processos-criticas para as seções do manual.
python scripts/mapear_criticas.pyGera tabela no terminal e salva data/mapeamento_criticas_manual.json.
extrair_manual.py — Extração de texto
# Processar todo ragData (PDFs, HTMLs, DOCs, ZIPs)
python extrair_manual.py --ragdata ragData/
# PDFs individuais
python extrair_manual.py manual1.pdf manual2.pdf
# Adicionar sem apagar existentes
python extrair_manual.py --adicionar novo.pdfFormatos suportados:
PDF: Manuais SIH/SUS (extração por seções numeradas) ou genérico (por página/parágrafo)
HTML/HTM: Portarias em HTML (encoding windows-1252/latin-1/utf-8)
DOC: Documentos legados (via libreoffice --headless)
ZIP: Extrai e processa recursivamente o conteúdo
Anexos SIGTAP (tabelas de procedimentos) são detectados automaticamente e limitados a 10 páginas.
Gera parent-child chunks em data/chunks.json.
indexar_manual.py — Indexação vetorial + BM25
Gera embeddings e indexa no ChromaDB. Constrói índice BM25 para busca híbrida. Deve ser executado após cada extrair_manual.py.
python scripts/indexar_manual.pyMCP Tools (43)
RAG — Busca no manual (10 tools)
Tool | Descrição |
| Busca semântica no manual SIH/SUS |
| Busca crítica por número |
| Lista críticas com filtro |
| Busca seção por número |
| Verifica se seção existe antes de citá-la |
| Extrai dados de espelho de AIH (texto livre) |
| Lê código TypeScript da crítica |
| Contexto completo: código + manual + mapeamento |
| Fontes indexadas no banco com tipo e ano |
| Seções do manual |
SIGTAP — Procedimentos SUS (13 tools)
Tool | Descrição |
| Procedimento SIGTAP por código (legacy) |
| Busca SIGTAP por nome (legacy) |
| Metadata do SIGTAP carregado |
| Procedimento com todas as tabelas relacionadas |
| Busca CID por nome |
| CID por código |
| CIDs compatíveis com um procedimento |
| Compatibilidades de um procedimento |
| Habilitações exigidas por procedimento |
| Serviços/classificações exigidos |
| Ocupações (CBO) permitidas |
| Tipos de leito compatíveis |
| Incrementos financeiros aplicáveis |
SIGTAP — Hierarquia e regras (3 tools)
Tool | Descrição |
| Grupo/subgrupo/forma de organização |
| Descrição detalhada do procedimento |
| Regras condicionadas do procedimento |
CNES — Estabelecimentos (8 tools)
Tool | Descrição |
| Dados operacionais de um CNES (legacy) |
| Profissionais de um CNES (legacy) |
| Metadata do CNES carregado |
| CNES com leitos, serviços, habilitações e equipes |
| Leitos de um CNES com SUS/não-SUS |
| Serviços/classificações de um CNES |
| Habilitações de um CNES |
| Profissionais com CBO, carga horária, vínculos |
CNES — Profissionais (1 tool)
Tool | Descrição |
| Dados de profissional por CNS/CPF |
Auditoria (3 tools)
Tool | Descrição |
| Valida procedimento vs capacidade do CNES |
| Valida compatibilidade CID x procedimento |
| Perfil completo do CNES para auditoria |
Auditoria de AIH (2 tools)
Tool | Descrição |
| Auditoria completa: procedimento + CID + CNES + profissional |
| Calcula valor da AIH com incrementos |
Inteligência (2 tools)
Tool | Descrição |
| Sugere procedimentos a partir de um CID |
| Compara procedimento entre competências SIGTAP |
Health (2 tools)
Tool | Descrição |
| Status de todos os subsistemas (RAG, DATASUS, etc.) |
| Versão, tools registradas e configuração |
Entry points
Comando | Descrição |
| Consulta interativa (CLI) |
| MCP Server modo stdio (para Claude Code) |
| MCP Server modo SSE (servidor compartilhado) |
Estrutura
scripts/manual-rag/
src/manual_sih_rag/ # Pacote principal
config.py # Configuração centralizada (env vars)
rag/ # Motor RAG
engine.py # Carregar sistema (model + collection)
hybrid_search.py # Busca híbrida semântica + BM25
search_primitives.py # Tokenização e primitivas de busca
aih_parser.py # Parser de espelhos de AIH
hints.py # Hints de busca por tipo
paths.py # Caminhos do projeto
datasus/ # Client DATASUS (DuckDB + S3/MinIO)
client.py # Client principal com connection pool
connection.py # Gerenciamento de conexões DuckDB
cache.py # Cache de queries
metrics.py # Métricas de uso
schemas.py # Schemas de dados
sigtap/ # Namespace SIGTAP (resources + types)
cnes/ # Namespace CNES (resources + types)
tools/ # MCP Tools (43 tools em 8 módulos)
rag_tools.py # 10 tools de busca no manual
sigtap_tools.py # 13 tools SIGTAP completo
cnes_tools.py # 6 tools CNES detalhado
auditoria_tools.py # 3 tools de auditoria
auditoria_aih_tools.py # 2 tools de auditoria de AIH
inteligencia_tools.py # 2 tools de inteligência
legacy_tools.py # 6 tools legacy (SIGTAP/CNES básico)
health_tools.py # 2 tools de health check
criticas/ # Leitura e análise de críticas
extraction/ # Extração multi-formato (PDF, HTML, DOC, ZIP)
validation/ # Validação de respostas
shared/ # Utilitários (log, erros, normalização)
legacy/ # Clients legados (s3, sigtap, cnes)
scripts/
indexar_manual.py # Indexação vetorial + BM25
mapear_criticas.py # Referência cruzada em lote
agente.py # Agente de análise
avaliar_rag.py # Avaliação de qualidade do RAG
ragData/
manuais/ # PDFs dos manuais SIH/SUS e SIA/SUS
portarias/ # Portarias (PDF, HTML, DOC, ZIP)
data/
chunks.json # Chunks extraídos (parent + child)
bm25_index.pkl # Índice BM25 para busca híbrida
secoes.json # Seções detectadas
analises/ # Pareceres do agente
db/ # Banco vetorial ChromaDB
mcp_server.py # MCP Server (43 tools, 8 módulos)
consulta_manual.py # Consulta interativa + /explicar
extrair_manual.py # Extração multi-formato
validar_critica.py # Código vs manual (sem IA)
analisar_critica.py # Agente de análise crítica (com IA)
busca_hibrida.py # Busca híbrida standalone
validar_resposta.py # Validação de respostas
docker-compose.yml # MCP Server + ChromaDB containerizados
Dockerfile # Build do MCP Server
pyproject.toml # Dependências e entry points
setup.sh # Setup automatizadoThis server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.