conformidade-pbtr-mcp

conformidade-pbtr-mcp

MCP server for automated compliance analysis of Basic Projects and Terms of Reference against SERPRO's checklist. Send a PDF and get a compliance index, prioritized findings, and reports in multiple formats.

Category
访问服务器

README

conformidade-pbtr-mcp

Análise automatizada de conformidade de Projetos Básicos e Termos de Referência (MCP server, pt-BR).

Testes Licença: MIT Python 3.11+

Servidor MCP que analisa Projetos Básicos (PB) e Termos de Referência (TR) contra o roteiro de análise do SERPRO. Você envia o PDF e diz "conduzir análise de conformidade do PB"; o servidor devolve o índice de conformidade, as pendências priorizadas e os relatórios em DOCX, XLSX, PDF, Markdown e JSON.

Projeto do SERPRO — Serviço Federal de Processamento de Dados.

O que é verificado

Camada Verificação
Checklist normativo 86 regras derivadas do roteiro [TI] de PB/TR — seções 1 a 8, Declarações e Anexos
Numeração saltos (5.1 → 5.3), itens duplicados, subitens órfãos, itens fora de ordem, seções obrigatórias ausentes
Tabelas e valores colunas mínimas, Qtd × Unitário = Total, fechamento do somatório, coerência mensal, valor por extenso × numeral, valor global do texto × tabela
Revisão textual 20 regras determinísticas para erros recorrentes em documentos administrativos, mais a revisão de português feita pelo próprio modelo que chama o MCP

As regras do checklist são condicionais. O servidor infere o contexto da contratação — licitação, contratação direta, inexigibilidade, serviço, bem, consultoria, treinamento, chamados, subscrição, ARP, hardware/câmbio, vigência acima de 60 meses — e aplica só os ramos pertinentes do roteiro. Os demais aparecem como Não aplicável, com a razão explicitada. Sem isso, um PB de hardware receberia dezenas de falsos "não conforme" por não trazer as justificativas obrigatórias de consultoria.

Cinco status, não dois

conforme / não conforme seria insuficiente: vários itens do roteiro pedem juízo humano ("verificar se há coerência entre eles"). O relatório usa:

Status Significado
Conforme indício localizado no documento
Não conforme nenhuma ocorrência localizada
Atenção assunto tratado, mas incompleto — a lista do que falta vem junto
Verificar manualmente indício presente; o mérito exige olho humano
Não aplicável o contexto do documento não aciona a regra

Como a revisão de português funciona

Quem revisa o texto é o modelo que chamou o MCP — ele já está com o documento em contexto, então não faz sentido o servidor abrir uma segunda conversa com outro modelo para reler o mesmo texto. O servidor cuida do que é determinístico e entrega o texto segmentado para o agente ler.

Daí o fluxo em três passos, que o agente encadeia sozinho:

1. analisar_conformidade      → checklist, numeração, tabelas, valores
                                 (+ regras determinísticas de revisão)
2. obter_texto_para_revisao   → o agente lê e revisa o português
3. registrar_revisao_textual  → apontamentos entram e os relatórios saem

Cada apontamento do agente só entra no relatório se o trecho citado existir literalmente no documento. A conferência é feita contra o texto extraído, tolerando diferença de espaçamento e aspas. Se o modelo não consegue apontar onde está o erro, o apontamento é descartado e devolvido em recusados, com o motivo — é o que separa uma revisão útil de uma alucinação num relatório que instrui processo administrativo.

Todo achado cita o item do PB/TR ("item 6.3.1"), não só a página — num documento denso, a página não localiza o trecho para quem vai corrigir. O item é resolvido a partir da citação, e não do que o modelo declara: se ele errar a numeração, vale o que o documento diz.

No relatório, essas sugestões aparecem em seção própria, marcadas como não reprodutíveis, e ficam fora do índice de conformidade. Verificação exata e sugestão de leitura têm pesos diferentes para quem assina o parecer.

Formatos de entrada

Formato Quando usar
.pdf O documento como sai do sistema. É o mais lento: 57 páginas levam dezenas de segundos e centenas de MB.
.docx Rápido e preserva tabelas e numeração.
.md / .txt O mais barato — no PB 872, 17× mais rápido que o PDF com resultado idêntico (98 achados iguais, mesmo índice, mesmos itens citados).

Em Markdown as tabelas precisam do formato de pipes com linha separadora; sem tabela reconhecida, a validação aritmética não roda e o relatório avisa.

Instalação

Requisito único: Python 3.11+. Não há dependência de Java nem de serviço externo.

git clone https://github.com/charlesmmorais/conformidade-pbtr-mcp.git
cd conformidade-pbtr-mcp
python -m venv .venv && source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -e .

Registro no Claude Desktop / Claude Code (claude_desktop_config.json):

{
  "mcpServers": {
    "conformidade-pbtr": {
      "command": "/caminho/para/conformidade-pbtr-mcp/.venv/bin/conformidade-pbtr",
      "env": {
        "CONFORMIDADE_PBTR_SAIDA": "/caminho/onde/gravar/os/relatorios"
      }
    }
  }
}

Deploy hospedado (Fly.io)

O servidor fala stdio localmente e HTTP quando hospedado. O repositório traz Dockerfile e fly.toml prontos:

fly launch --no-deploy --copy-config
fly deploy
curl https://<sua-app>.fly.dev/health

No modo hospedado o cliente não compartilha disco com o servidor: o PDF sobe em conteudo_base64 e os relatórios voltam embutidos na resposta. Leia docs/DEPLOY.md antes do primeiro deploy — em especial a seção sobre exposição do endpoint. A imagem tem ~250 MB e roda em 512 MB.

Tools expostas

Fluxo principal:

Tool Uso
analisar_conformidade passo 1 — verificações determinísticas
obter_texto_para_revisao passo 2 — devolve o texto segmentado para o agente revisar
registrar_revisao_textual passo 3 — recebe os apontamentos e emite os relatórios

Auxiliares:

Tool Uso
verificar_numeracao só a numeração hierárquica
validar_tabelas só tabelas, aritmética e valores
revisar_ortografia regras determinísticas + texto segmentado
extrair_estrutura diagnóstico da extração (detecta PDF digitalizado)
consultar_checklist consulta as regras, por seção, tag ou severidade
gerar_relatorio re-renderiza uma análise da sessão em outro formato

Prompt conduzir_analise_conformidade: roteiro de condução da análise pelo agente, incluindo a ordem de apresentação dos achados e a instrução de não afirmar conformidade sem que a análise a tenha classificado como tal.

Uso direto (sem MCP)

from conformidade_pbtr import analisar
from conformidade_pbtr.relatorios import gerar_docx

rel = analisar("PB_123_2026.pdf", tipo="PB")
print(rel.resumo.indice_conformidade)
gerar_docx(rel, "Relatorio_Conformidade.docx")

Índice de conformidade

Média ponderada por severidade (crítico 4, alto 3, médio 2) sobre os itens avaliáveis automaticamente. Itens Não aplicável, Verificar manualmente, os apontamentos de revisão textual e as sugestões do agente ficam fora do cálculo, para não distorcer a nota.

Faixa Leitura
≥ 90 Apto — ajustes pontuais
≥ 75 Apto com ressalvas
≥ 50 Requer revisão substantiva
< 50 Não apto — reformulação necessária

Checklist plugável

Todo o conhecimento normativo está em recursos/checklist_roteiro_ti.yaml — o motor não conhece norma alguma. Para acompanhar uma revisão do roteiro, edite o YAML e suba a versao em metadata; o nome e a versão do checklist usado ficam gravados em cada relatório, o que torna a análise auditável no tempo.

O projeto hoje atende ao SERPRO. Dar suporte a outro órgão é acrescentar um YAML em recursos/ e apontar CONFORMIDADE_PBTR_CHECKLIST para ele — nenhuma alteração de código. O formato está em docs/CHECKLIST.md.

Limites conhecidos

  • Aba Itens — a conferência entre a Aba Itens do sistema e as quantidades do PB não é possível a partir do PDF. O item sai sempre como Verificar manualmente.
  • PDF digitalizado — sem camada de texto não há análise. extrair_estrutura sinaliza o caso; aplique OCR antes.
  • Anexos — verifica-se se o documento cita os anexos, não se os arquivos existem no processo.
  • Presença ≠ adequação — o motor confirma que o assunto foi tratado; o mérito da justificativa continua sendo do parecerista.

Documentação

Desenvolvimento

pip install -e ".[dev]"
pytest -q          # testes sobre um PB sintético com erros plantados
ruff check .

O PB de teste é gerado por exemplos/gerar_pb_teste.py, com erros propositais de numeração, aritmética, valor por extenso e português — é o que garante que cada validador continua pegando o que deveria.

Licença

MIT — Copyright (c) 2026 SERPRO.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选