Projeto IA.med Licença Apache-2.0 100% local

protocolos-pcdt-mcp

Servidor MCP para consultar os PCDTs vigentes do Ministério da Saúde e resumir a conduta para um contexto clínico, com um modelo de linguagem que roda na sua própria máquina.

Antes de usar, leia

  • Não é fonte oficial do Ministério da Saúde nem da Conitec.
  • Não substitui o julgamento clínico nem a leitura do protocolo completo.
  • O resumo é gerado por LLM e pode conter erro. Por isso vem sempre com a citação literal do trecho de origem e o link para o PDF oficial, que devem ser conferidos.
  • PCDTs são revisados periodicamente. O projeto tenta marcar versões substituídas, mas confirme a vigência na fonte.

O problema

Por que este projeto existe

PDFs longos e revisados

Os PCDTs são documentos extensos do Ministério da Saúde/Conitec, revisados periodicamente. A versão que vale hoje pode ter substituído outra.

Achar o trecho do caso dá trabalho

Encontrar a parte que responde a um contexto clínico específico (uma gestante, uma contraindicação) exige ler o protocolo inteiro.

Um agente local não alcança sozinho

Um modelo de linguagem na sua máquina não consegue listar os PCDTs vigentes, baixar o PDF certo e recortar a conduta. Falta essa camada.

Como funciona

Do PDF do protocolo à conduta direcionada

  1. 01

    Coleta

    Lista os PCDTs vigentes da Conitec e baixa os PDFs com cache, poucos por execução para não sobrecarregar o portal.

  2. 02

    Extração

    Converte cada PDF em texto segmentado por seção.

  3. 03

    Armazenamento

    Guarda tudo localmente em DuckDB, com busca textual pela condição e pelo conteúdo.

  4. 04

    Resumo direcionado

    Um LLM local recorta do protocolo a parte que responde ao contexto clínico, sempre com a citação literal do trecho.

  5. 05

    Ferramentas MCP

    Expõe a consulta e o resumo como tools, que o modelo local chama.

A citação literal é conferida, não só pedida: o código verifica se ela existe inteira e contígua no protocolo e devolve citacao_confere. Conferir a citação elimina a alucinação de fonte, mas não o erro de interpretação, por isso o link do PDF vem em toda resposta.

As ferramentas

Duas tools MCP expostas ao modelo

Toda resposta traz o link do PDF oficial, e o resumo vem com a citação literal do trecho de origem. Os campos abaixo são os do projeto.

consultar_protocolo

PCDT para uma doença ou condição. Busca pelo nome; se não achar, procura no texto, porque uma condição pode ser tratada dentro do PCDT de outra.

consultar_protocolo(doenca_ou_condicao: str)
{
  "termo": "asma",
  "total": 1,
  "resultados": [
    {
      "identificador": "asma",
      "condicao": "Asma",
      "status": "Aprovado",
      "portaria": "Portaria SECTICS/MS ...",
      "url_pdf": "https://www.gov.br/conitec/.../pcdt_asma.pdf",
      "vigente": true,
      "secoes_disponiveis": ["diagnostico", "tratamento", "monitoramento"],
      "texto_completo_disponivel": true
    }
  ]
}
Exemplo do formato de retorno

resumir_conduta

Recorta a parte do protocolo que responde ao contexto, com a citação literal e o campo citacao_confere, que diz se a citação existe mesmo no texto.

resumir_conduta(pcdt_id: str, contexto_clinico: str)
{
  "identificador": "asma",
  "condicao": "Asma",
  "contexto_clinico": "paciente gestante",
  "resumo": {
    "resumo": "... conduta recortada do protocolo para o contexto ...",
    "secao_origem": "Tratamento",
    "citacao_literal": "... trecho literal extraído do PDF ...",
    "citacao_confere": true,
    "fracao_citacao_verificada": 1.0
  },
  "url_pdf": "https://www.gov.br/conitec/.../pcdt_asma.pdf",
  "aviso": "Ajuda de leitura gerada por LLM local; confira a citação e abra o PDF."
}
Formato do retorno. O resumo e a citação literal são produzidos em tempo de execução a partir do PDF real; não há exemplo fabricado aqui.

Como rodar

Roda na sua máquina

Não é um serviço hospedado. Você clona o repositório, aponta para o seu modelo local, coleta os PCDTs da Conitec e o servidor MCP roda ali, no seu computador.

# 1. clonar o repositório
git clone https://github.com/fabianofilho/protocolos-pcdt-mcp.git
cd protocolos-pcdt-mcp

# 2. instalar as dependências
uv sync

# 3. configurar o ambiente (apontar o .env para o seu LLM local)
cp .env.example .env
uv run pcdt-cli llm                 # confirma que o LLM local responde

# 4. coletar os protocolos
uv run pcdt-cli sync --max-pdfs 5   # teste rápido
uv run pcdt-cli sync                # coleta (20 PDFs por execução)

# 5. subir o servidor MCP (stdio) e conectar ao seu cliente
uv run protocolos-pcdt-mcp
Confira os comandos e opções no README do projeto.

Tudo acontece localmente: a coleta baixa poucos PDFs por execução para respeitar o portal, e o resumo é gerado pelo seu LLM local. Nenhum dado seu é enviado a terceiros por esta ferramenta.