Skip to main content
Glama
charlesmmorais

conformidade-pbtr-mcp

conformidade-pbtr-mcp

基本プロジェクトと参考仕様書のコンプライアンス自動分析(MCPサーバー、pt-BR)。

Testes Licença: MIT Python 3.11+

SERPROの分析手順に基づいて基本プロジェクト(PB)と参考仕様書(TR)を分析するMCPサーバーです。PDFを送信して*「PBのコンプライアンス分析を実施」*と指示すると、サーバーはコンプライアンス指数、優先順位付けされた未解決事項、およびDOCX、XLSX、PDF、Markdown、JSON形式のレポートを返します。

SERPRO — 連邦データ処理サービスのプロジェクトです。

検証内容

検証内容

規範チェックリスト

PB/TRの[TI]手順から導出された86のルール — セクション1〜8、宣言、付属書

番号付け

欠番(5.1 → 5.3)、重複項目、孤立したサブ項目、順序外れの項目、必須セクションの欠落

表と値

最小列数、Qtd × Unitário = Total、合計の整合、月次整合性、金額の文字表記×数字表記、本文の総額×表の総額

テキストレビュー

行政文書で頻発するエラーに対する20の決定論的ルールに加え、MCPを呼び出すモデル自身によるポルトガル語レビュー

チェックリストのルールは条件付きです。サーバーは調達の文脈(入札、直接調達、入札不要、サービス、物品、コンサルティング、研修、コール、サブスクリプション、ARP、ハードウェア/為替、60か月を超える契約期間)を推測し、手順の該当する分岐のみを適用します。その他の項目は該当なしとして、その理由とともに表示されます。これがないと、ハードウェアのPBは、コンサルティングに必須の正当化理由が含まれていないために、数十件の誤った「不適合」を受けることになります。

5つのステータス、2つではない

conforme(適合)/ não conforme(不適合)だけでは不十分です。手順の多くの項目は人間の判断を必要とします(「それらの間に整合性があるか確認する」など)。レポートでは以下を使用します:

ステータス

意味

適合

文書内に根拠が確認された

不適合

該当する記述が確認されなかった

注意

主題は扱われているが不完全 — 不足している項目のリストが付属

手動確認が必要

根拠は存在するが、実質的な判断には人間の目が必要

該当なし

文書の文脈がルールを発動しない

Related MCP server: Tri-Tender Pricing MCP

ポルトガル語レビューの仕組み

テキストをレビューするのはMCPを呼び出したモデルです。モデルはすでに文書をコンテキストに持っているため、サーバーが別のモデルとの2回目の会話を開いて同じテキストを再読させるのは意味がありません。サーバーは決定論的な部分を処理し、エージェントが読むためのセグメント化されたテキストを提供します。

そのため、エージェントが単独で連鎖させる3ステップのフローがあります:

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

エージェントの各指摘は、引用された箇所が文書内に文字通り存在する場合にのみレポートに含まれます。 照合は抽出されたテキストに対して行われ、スペースと引用符の違いは許容されます。モデルがエラーの場所を特定できない場合、その指摘は破棄され、理由とともにrecusados(却下)に返されます。これは、行政手続きを指示するレポートにおいて、有用なレビューと幻覚を区別するものです。

すべての指摘は、ページだけでなくPB/TRの項目(「項目6.3.1」)を引用します。情報量の多い文書では、ページ番号だけでは修正担当者が該当箇所を特定できないためです。項目はモデルが宣言した内容ではなく、引用から解決されます。モデルが番号を間違えた場合、文書に記載されている内容が優先されます。

レポートでは、これらの提案は専用セクションに表示され、再現不可能としてマークされ、コンプライアンス指数の対象外となります。正確な検証と読解提案は、意見書に署名する人にとって異なる重みを持ちます。

インストール

唯一の要件:Python 3.11+。Javaや外部サービスの依存関係はありません。

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 .

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"
      }
    }
  }
}

ホステッドデプロイ(Fly.io)

サーバーはローカルではstdio、ホスト時にはHTTPで通信します。リポジトリにはDockerfilefly.tomlが用意されています:

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

ホストモードでは、クライアントはサーバーとディスクを共有しません。PDFはconteudo_base64でアップロードされ、レポートはレスポンスに埋め込まれて返されます。最初のデプロイの前にdocs/DEPLOY.mdを読んでください。特にエンドポイントの公開に関するセクションを確認してください。イメージは約250 MBで、512 MBで動作します。

公開ツール

メインフロー:

ツール

用途

analisar_conformidade

ステップ1 — 決定論的検証

obter_texto_para_revisao

ステップ2 — エージェントがレビューするためのセグメント化されたテキストを返す

registrar_revisao_textual

ステップ3 — 指摘を受け取り、レポートを発行する

補助ツール:

ツール

用途

verificar_numeracao

階層番号付けのみ

validar_tabelas

表、算術、値のみ

revisar_ortografia

決定論的ルール + セグメント化されたテキスト

extrair_estrutura

抽出の診断(スキャンされたPDFを検出)

consultar_checklist

セクション、タグ、または重大度別にルールを照会

gerar_relatorio

セッションの分析を別の形式で再レンダリング

プロンプトconduzir_analise_conformidade:エージェントによる分析の実施手順。指摘の提示順序と、分析が適合として分類していない限り適合を主張しないという指示を含みます。

直接使用(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")

コンプライアンス指数

自動評価可能な項目に対する重大度別の加重平均(重大4、高3、中2)。該当なし手動確認が必要の項目、テキストレビューの指摘、エージェントの提案は、スコアを歪めないように計算から除外されます。

範囲

解釈

≥ 90

適合 — 部分的な調整

≥ 75

条件付き適合

≥ 50

実質的な見直しが必要

< 50

不適合 — 再構成が必要

プラグ可能なチェックリスト

すべての規範的知識はrecursos/checklist_roteiro_ti.yamlにあります。エンジンは規範を一切認識していません。手順の改訂に対応するには、YAMLを編集してmetadataversaoを上げてください。使用されたチェックリストの名前とバージョンは各レポートに記録され、分析を時間的に監査可能にします。

現在、このプロジェクトはSERPROに対応しています。他の機関をサポートするには、recursos/にYAMLを追加し、CONFORMIDADE_PBTR_CHECKLISTをそのYAMLにポイントするだけです。コードの変更は不要です。形式はdocs/CHECKLIST.mdに記載されています。

既知の制限

  • 項目タブ — システムの項目タブとPBの数量の照合はPDFからは不可能です。項目は常に手動確認が必要として出力されます。

  • スキャンされたPDF — テキストレイヤーがない場合は分析できません。extrair_estruturaがそのケースを通知します。事前にOCRを適用してください。

  • 付属書 — 文書が付属書を引用しているかどうかを確認します。プロセス内にファイルが存在するかどうかは確認しません。

  • 存在 ≠ 妥当性 — エンジンは主題が扱われたことを確認します。正当化の実質的な判断は引き続き意見書作成者の責任です。

ドキュメント

開発

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

テスト用PBはexemplos/gerar_pb_teste.pyによって生成され、番号付け、算術、金額の表記、ポルトガル語の意図的なエラーが含まれています。これにより、各バリデータが検出すべきものを引き続き検出することが保証されます。

ライセンス

MIT — Copyright (c) 2026 SERPRO.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides comprehensive PDF processing capabilities including text extraction, image extraction, table detection, annotation extraction, metadata retrieval, page rendering, and document structure analysis.
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server designed to automate tender and RFQ pricing by extracting requirements from documents and building structured pricing models. It enables users to calculate final costs, compare market rates, and generate styled HTML pricing reports for PDF export.

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/charlesmmorais/conformidade-pbtr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server