e-SUS PEC MCP Server
Provides read-only access to the e-SUS APS/PEC Data Warehouse stored in PostgreSQL, enabling clinical auditing, patient care tracking, and monitoring of primary health care indicators through specialized MCP tools.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
e-SUS PEC MCP Server
===================================================================================
███████╗ ███████╗██╗ ██╗███████╗ ██████╗ ███████╗ ██████╗ ███╗ ███╗ ██████╗██████╗
██╔════╝ ██╔════╝██║ ██║██╔════╝ ██╔══██╗██╔════╝██╔════╝ ████╗ ████║██╔════╝██╔══██╗
█████╗ █████╗███████╗██║ ██║███████╗ ██████╔╝█████╗ ██║ ██╔████╔██║██║ ██████╔╝
██╔══╝ ╚════╝╚════██║██║ ██║╚════██║ ██╔═══╝ ██╔══╝ ██║ ██║╚██╔╝██║██║ ██╔═══╝
███████╗ ███████║╚██████╔╝███████║ ██║ ███████╗╚██████╗ ██║ ╚═╝ ██║╚██████╗██║
╚══════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚═╝
===================================================================================Servidor Model Context Protocol (MCP) de alta performance, auditoria clínica e inteligência em saúde pública para o Data Warehouse do e-SUS APS / PEC (PostgreSQL).
Sumário
Related MCP server: cnes-mcp-test
Visão Geral
O e-SUS PEC MCP Server é uma infraestrutura de integração padronizada baseada na especificação do Model Context Protocol (MCP), desenvolvida para conectar sistemas e ferramentas analíticas diretamente à base de dados relacional e ao Data Warehouse do Prontuário Eletrônico do Cidadão (PEC) do Ministério da Saúde.
O projeto permite extração clínica, rastreamento de linhas de cuidado, auditoria de cofinanciamento da Atenção Primária à Saúde (APS) e monitoramento nominal de indicadores com garantia de leitura estrita (READ ONLY) e blindagem total de dados pessoais sensíveis (LGPD).
Stack Tecnológica
Componente | Tecnologia | Detalhes |
Linguagem | Python 3.10+ | Compatível com runtimes 3.10, 3.11, 3.12 e 3.13 |
Framework MCP | FastMCP ( | Suporte a transportes |
Banco de Dados | PostgreSQL 9.6 a 16 (validado no 9.6 e no 16 com o PEC 5.5.28) | Sessão somente leitura, |
Driver Relacional |
| Cursors otimizados com |
Data Warehouse | Star Schema e-SUS APS | Tabelas fato ( |
Gerenciador de Pacotes |
| Builds determinísticos e resolução ágil de dependências |
Qualidade & Auditoria |
| Varreduras sintéticas de PII em runtime e checagem léxica no SQL |
Arquitetura do Sistema
flowchart TD
subgraph CLIENTS["Clientes MCP & Camada Analítica"]
CLI["CLI / Desktop MCP Client"]
DASH["Dashboards & Serviços Analíticos"]
end
subgraph SERVER["Servidor FastMCP (pec-mcp-server)"]
TRANSPORT["Transport Layer (stdio / HTTP Streamable)"]
SECURITY["Filtros de Segurança & LGPD"]
TOOLS["24 Ferramentas Especializadas"]
MODELS["Contratos Tipados (TypedDict)"]
end
subgraph DW["PostgreSQL — e-SUS PEC (Read-Only)"]
TRANSACTION["Sessão Segura: readonly=on, timeout=30s"]
FAT["Tabelas Fato (tb_fat_*)"]
DIM["Tabelas Dimensão (tb_dim_*)"]
CORE["Tabelas Clínicas (tb_cidadao, tb_prontuario)"]
end
CLI --> TRANSPORT
DASH --> TRANSPORT
TRANSPORT --> SECURITY
SECURITY --> TOOLS
TOOLS --> MODELS
TOOLS --> TRANSACTION
TRANSACTION --> FAT
TRANSACTION --> DIM
TRANSACTION --> CORESegurança e Blindagem LGPD
O servidor opera sob o princípio da minimização absoluta de dados (Lei Geral de Proteção de Dados - Lei nº 13.709/2018):
Ausência Total de Colunas Proibidas no SQL: A suíte de testes estática (AST) impede que qualquer consulta utilize ou selecione colunas de identificação civil direta:
nu_cpf,nu_cns,no_mae,nu_telefone,nu_celular,no_logradouro,nu_numero_logradouro,no_bairro,ds_email,nu_cep.
Anonimização de Nomes em Tempo Real: Nenhum nome completo de paciente é retornado. A função
to_initials()converte nomes em iniciais tratadas (ex.: "Maria da Silva Santos" $\rightarrow$ "MSS"), descartando preposições e preservando a confidencialidade.Cálculo de Idade sem Exposição de Nascimento: A data exata de nascimento nunca é exposta na saída pública. A função
compute_age_display()deriva representações textuais amigáveis (ex.: "41 anos", "6 meses", "15 dias"), calculadas no servidor.Mascaramento de Códigos Identificadores:
Procedimentos SIGTAP: Mascarados no padrão oficial
XX.XX.XX.XXX-Xpara prevenir falso-positivo com números de contato.Equipes INE: Formatadas com delimitador
XXXXXXX-XXX.
Tetos Rígidos de Paginação: Todas as consultas de lista têm teto de paginação forçado (200, ou 500 em prescrições e visitas), inclusive quando o
limitenão é informado.Máscara em Texto Livre: CPF, CNS, telefone e e-mail digitados em campos de texto livre (SOAP, observações de problemas, recomendações e posologia de receitas) saem substituídos por
[CPF removido],[telefone removido]etc. Nomes próprios no texto livre não têm padrão detectável e continuam aparecendo: trate esses campos como dado sensível.Sessão Somente Leitura com Timeout: A conexão abre com
default_transaction_read_only = onestatement_timeout(30 s por padrão,PEC_DB_STATEMENT_TIMEOUT_MS). Mesmo assim, use um usuário do PostgreSQL que só tenhaSELECT.
Catálogo de Ferramentas (24 Tools)
1. Identificação e Demografia
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Busca paciente de forma segura por identificador, iniciais, sexo ou faixa etária. |
|
|
| Retorna o quantitativo agregado de pacientes segundo filtros clínicos e demográficos. | Filtros demográficos e/ou códigos CID/CIAP |
|
| Lista as unidades para parametrizar filtros. Por padrão, só as ativas da APS (tipos CNES 01, 02, 32, 40, 71, 72 e 74). |
|
|
2. Condições Crônicas e Diagnósticos
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Consulta condições ativas e diagnósticos (CID-10 e CIAP-2) registrados nos prontuários. |
| Lista de |
| Mapeia tabelas de referência de termos clínicos para códigos padronizados CID-10 e CIAP-2. |
| Lista de códigos e descrições oficiais |
3. Atendimentos Clínicos e Prescrições
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Histórico clínico com notas SOAP (Subjetivo, Objetivo, Avaliação e Plano), CBO e profissional. |
| Notas SOAP estruturadas, data/hora e profissional |
| Histórico farmacológico com posologia, concentração, via, duração, uso contínuo e status. |
| Doses, vigência, status de renovação ou interrupção |
4. Medições e Sinais Vitais
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Série temporal de peso, altura e IMC calculados, unificando PEC e visitas domiciliares. |
|
|
| Histórico de pressão arterial decomposta em sistólica (PAS) e diastólica (PAD). |
|
|
| Histórico de glicemia capilar (HGT em mg/dL) com momento da aferição (jejum, pós-prandial). |
|
|
| Resultados laboratoriais históricos de hemoglobina glicada para monitoramento de diabetes. |
|
|
5. Imunização e Procedimentos SIGTAP
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Histórico vacinal do Data Warehouse ( |
|
|
| Procedimentos individuais e ambulatoriais unificados com formatação SIGTAP oficial. |
| Código SIGTAP formatado, quantidade, profissional e contexto |
6. Ciclos de Vida e Busca Ativa
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Monitoramento de gestações ativas, idade gestacional em semanas/dias, DPP e estratificação de risco. |
| Iniciais, DPP, semanas gestacionais, tipo e risco |
| Registro de visitas domiciliares dos Agentes Comunitários de Saúde (motivo, desfecho e ações). |
| Desfecho da visita, acompanhamentos e aferições |
| Contagem de busca ativa para hipertensos, diabéticos ou gestantes sem consulta recente. |
| Quantitativo total de pacientes elegíveis |
| Lista nominal anonimizada de pacientes elegíveis para busca ativa e agendamento preventivo. |
| Iniciais, idade textual, sexo, data da última consulta |
7. Saúde Bucal (eSB / Indicadores B1–B6)
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Consultas odontológicas individuais, condutas de tratamento concluído (B2) e primeira consulta (B1). |
| Dados do atendimento, fornecimento de insumos e vigilância |
| Procedimentos em cadeira odontológica: exodontias (B3), preventivos (B4) e restaurações TRA/ART (B6). |
| Quantidade, flags de classificação e dados profissionais |
| Condições e diagnósticos bucais (CID-10 e CIAP-2) avaliados nos atendimentos de saúde bucal. |
| CID, CIAP, situação clínica e profissional responsável |
8. Atividades Coletivas e eMulti (Indicadores M1–M2)
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Ações coletivas, reuniões de equipe e grupos com filtro de Discussão de Caso / PTS (M2). |
| Temas de reunião, saúde, práticas coletivas e participantes |
| Participações individuais anônimas em grupos de saúde, tabagismo e avaliação nutricional. |
| Métricas antropométricas e evolução no grupo |
| Condutores da atividade para validação de ações conjuntas e matriciamento (28 CBOs eMulti). |
| Profissional, CBO, flag |
9. Programa Saúde na Escola (PSE)
Ferramenta | Descrição | Principais Parâmetros | Saída |
| Ações de saúde escolar cruzadas com escolas cadastradas (código INEP) e temas prioritários. |
| Escola INEP, equipe, participantes e flags temáticas |
Instalação e Pré-requisitos
Pré-requisitos
Python: versão 3.10 ou superior.
Banco de Dados: instância acessível do PostgreSQL contendo o schema do e-SUS PEC (produção, réplica de leitura ou staging de testes).
Instalação via uv (Recomendado)
# Criar o ambiente virtual isolado
uv venv .venv
# Ativar o ambiente virtual
# No Linux/macOS:
source .venv/bin/activate
# No Windows:
.venv\Scripts\activate
# Instalar em modo editável com dependências
uv pip install -e .Instalação via pip tradicional
python -m venv .venv
.venv\Scripts\activate
pip install -e .Configuração de Ambiente
Crie um arquivo .env na raiz do projeto a partir do modelo fornecido:
cp .env.example .envConfigure uma string de conexão unificada em PEC_DB_DSN ou as variáveis individuais:
# Configuração Unificada de DSN (Prioritária)
PEC_DB_DSN=postgresql://usuario_leitura:senha_segura@127.0.0.1:5432/esus_db?sslmode=prefer
# Ou Parâmetros Individuais:
PEC_DB_HOST=127.0.0.1
PEC_DB_PORT=5432
PEC_DB_NAME=esus_db
PEC_DB_USER=usuario_leitura
PEC_DB_PASSWORD=senha_segura
PEC_DB_SSLMODE=prefer
# Timeout por consulta, em milissegundos (padrão 30000)
PEC_DB_STATEMENT_TIMEOUT_MS=30000
# Configuração do Transporte MCP (padrão: stdio)
MCP_TRANSPORT=stdio
MCP_HTTP_HOST=127.0.0.1
MCP_HTTP_PORT=5174Execução do Servidor
1. Modo Padrão via Stdio (Para Clientes MCP Locais e IDEs)
# Executando via entrypoint instalado
pec-mcp
# Ou via módulo Python
python -m pec_mcp.server2. Modo HTTP Streamable (Para Serviços Remotos e Redes Locais)
Defina MCP_TRANSPORT=streamable-http no arquivo .env ou via linha de comando:
# Executando servidor HTTP MCP
MCP_TRANSPORT=streamable-http pec-mcpO endpoint estará disponível em http://127.0.0.1:5174/mcp.
Atenção: o modo HTTP não tem autenticação. Mantenha
MCP_HTTP_HOST=127.0.0.1. Expor em0.0.0.0deixa qualquer máquina da rede consultar dados clínicos; se precisar de acesso remoto, coloque um proxy com autenticação e TLS na frente.
Integração com Clientes MCP
Para integrar com qualquer cliente compatível com MCP, adicione a configuração no arquivo de configuração do seu cliente:
{
"mcpServers": {
"esus-pec": {
"command": "uv",
"args": [
"--directory",
"D:\\caminho\\para\\esus-pec-mcp",
"run",
"python",
"-m",
"pec_mcp.server"
],
"env": {
"PEC_DB_DSN": "postgresql://usuario_leitura:senha_segura@127.0.0.1:5432/esus_db",
"MCP_TRANSPORT": "stdio"
}
}
}
}Testes e Garantia de Qualidade
O projeto possui uma infraestrutura de testes automatizados com cobertura rigorosa:
# Executar suíte completa de testes
uv run pytestValidar as SQLs contra o seu banco
Os testes unitários não abrem banco. Para conferir que todas as consultas batem com o schema da sua versão do PEC, rode:
PEC_DB_DSN="postgresql://usuario_leitura:senha@127.0.0.1:5432/esus" uv run python scripts/validar_sql_explain.pyO script roda só EXPLAIN: o PostgreSQL confere tabelas, colunas e tipos, mas não executa a consulta nem devolve linhas. Rode de novo a cada atualização do PEC.
Mecanismos de Proteção Testados
Teste T1 (
test_no_pii_in_tool_outputs.py): Injeta em memória linhas sintéticas carregadas propositalmente com CPFs, CNSs, telefones, endereços e nomes civis em todas as ferramentas registradas. O teste valida que nenhum dado sensível sobrevive à serialização final.Teste T2 (
test_projected_columns.py): Audita a árvore sintática abstrata (AST) do código-fonte em tempo de compilação, assegurando que nenhuma consulta SQL faça referência a colunas de dados civis protegidos.Contratos e Limites (
test_tool_output_keys.pyetest_limit_caps.py): Assegura previsibilidade das chaves retornadas e conformidade dos tetos máximos de paginação.
Limitações conhecidas
As tools de condições, medições do PEC, gestantes e busca ativa leem as tabelas do prontuário (tb_problema, tb_medicao, tb_pre_natal). Em municípios que registram o atendimento clínico em outro sistema e enviam só fichas CDS ao PEC, essas tabelas ficam vazias e as tools devolvem zero. As tools baseadas no Data Warehouse (tb_fat_*: vacinas, visitas, saúde bucal, atividades coletivas, PSE, procedimentos) funcionam nos dois cenários.
Contribuindo
Regras de privacidade e checklist para novas tools em CONTRIBUTING.md. Histórico de versões em CHANGELOG.md.
Licença
Distribuído sob a Licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
This server cannot be deployed
Maintenance
Related MCP Connectors
Reporting and queries over Astrea (Aurum), Brazilian legal-practice software: cases per client, cale
Governed SQL access to your databases: redaction, query review and an audit log.
Query 40 databases from Claude, ChatGPT, or Cursor — on any device. Read-only, encrypted, audited.
Safe, read-only Postgres and MySQL access for AI agents. Audit log + column-level controls.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides secure read-only SQL access to PostgreSQL and ClickHouse databases with built-in safety features like read-only enforcement, timeouts, and managed result files.241 PyPIMIT
- FlicenseNot gradedqualityDmaintenanceRead-only MCP server for querying Brazilian CNES health establishment data in PostgreSQL, enabling AI-assisted database exploration and analysis.-
- AlicenseAqualityCmaintenanceMCP server for secure read-only PostgreSQL queries with automatic PII masking, pseudonymization, and strict SQL guards to enforce data privacy compliance.3MIT
- AlicenseAqualityCmaintenanceEnables read-only PostgreSQL interaction with enforced SQL security policies, including query validation, row limits, and timeouts.4MIT