Skip to main content
Glama
NIHARDUGADE

Sentinel MCP Data Governance Agent

by NIHARDUGADE

Sentinel MCP データガバナンスエージェント

Sentinelは、Model Context Protocol (MCP) を通じてPostgreSQLデータベースを監査する、小規模な自律型データガバナンスエージェントです。LLMに直接データベースアクセス権を与える代わりに、このプロジェクトでは、スキーマ検査、NULLプロファイリング、異常検知のための専用ツールを備えた制御されたFastMCPブリッジを公開しています。

このデモでは、意図的に汚れた raw_inventory テーブルをシードし、OpenAI搭載のエージェントにMCPツールを通じてそれを検査させ、Markdown形式の監査レポートを LATEST_AUDIT.md に書き出します。

実証内容

  • ReActスタイルの「推論(Reason) -> 行動(Act) -> 観察(Observe)」ワークフローに従うPython MCPクライアント。

  • エージェントとPostgreSQL間のガバナンスブリッジとして機能するFastMCPサーバー。

  • 安全で構造化されたデータベース検査のためのSQLAlchemyベースのツール。

  • 不足しているメールアドレス、負の在庫数、重複するSKUに対するデータ品質チェック。

  • 修復用SQLを含む生成されたデータ健全性監査レポート。

Related MCP server: dbecho

アーキテクチャ

flowchart LR
    U[User question] --> A[Python Agent<br/>MCP Client]
    A -->|tools/list and tools/call| M[FastMCP Server<br/>Sentinel-Bridge]
    M -->|SQLAlchemy queries| DB[(PostgreSQL 16<br/>raw_inventory)]
    DB -->|schema and quality metrics| M
    M -->|structured MCP tool results| A
    A -->|OpenAI analysis or local fallback| R[LATEST_AUDIT.md]

MCPツール

inspect_schema() は、構造監査のためにテーブル名と列定義を返します。

get_data_health_sample() は、行レベルのレビューのために raw_inventory から最新の100行を返します。

check_null_ratios(table_name="raw_inventory") は、すべての列のNULLカウントとパーセンテージを返します。

find_logical_anomalies() は、負の stock_count 値を持つ行と、重複する sku グループを返します。

プロジェクト構成

agent.py              # MCP client and ReAct audit workflow
server.py             # FastMCP server exposing database audit tools
seed_data.py          # Faker-based dirty data generator
docker-compose.yml    # PostgreSQL 16 local database
architecture.md       # Mermaid architecture diagram
.env.example          # Safe environment variable template

セットアップ

要件:

  • Windows 11, macOS, または Linux

  • Docker Desktop

  • uv で管理されたPython

  • APIクォータが利用可能なOpenAI APIキー

ローカル環境ファイルを作成します:

Copy-Item .env.example .env

.env を編集し、プレースホルダーの値を置き換えます。.env はコミットしないでください。

依存関係をインストールします:

uv sync

PostgreSQLを起動します:

docker compose up -d

汚れた在庫テーブルをシードします:

uv run python seed_data.py

MCPサーバーを直接実行します:

uv run python server.py

別のターミナルで、自律型監査エージェントを実行します:

uv run python agent.py

エージェントはレポートを以下に書き出します:

LATEST_AUDIT.md

シードデータの検証

docker exec -it sentinel_postgres psql -U sentinel_user -d sentinel_db -c "SELECT COUNT(*) AS negative_stock_rows FROM raw_inventory WHERE stock_count < 0;"

シード後の期待される結果:

30

セキュリティに関する注意点

  • .env はGitで無視されるため、決してコミットしないでください。

  • .env.example にはプレースホルダーのみが含まれています。

  • LLMは生のデータベース認証情報を直接受け取ることはなく、承認されたMCPツールと対話します。

  • MCPサーバーは、データベース機能が明示的に公開されるポリシー境界です。

  • ログ、スクリーンショット、ターミナル出力、またはチャットに表示されたAPIキーはすべてローテーションしてください。

なぜエージェント内で直接SQLAlchemyを使わずMCPを使うのか?

MCPは、無制限のデータベースアクセスではなく、制約のあるツールインターフェースをLLMに提供します。FastMCPサーバーは許可されたアクションを定義するため、ガバナンスの境界が明確かつ監査可能になります。同じエージェントは、後でデータベース接続を直接書き換えることなく、MCPを通じてカタログ、ポリシーエンジン、データウェアハウス、可観測性システムと相互運用できるようになります。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to interact with PostgreSQL databases through schema intelligence, query execution, and DBA tooling including index analysis and health monitoring. Features configurable access levels and audit logging for secure database operations.
    529 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that gives AI agents direct read-only access to PostgreSQL databases, enabling natural language analytics through tools for schema exploration, querying, trend analysis, and data quality checks.
    11
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A read-only natural-language database agent that exposes PostgreSQL schema-discovery and SELECT tools via MCP, enabling users to query databases in plain English.
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    An MCP server that enables AI agents to securely interact with PostgreSQL databases with least-privilege scopes, PII masking, and human approval for writes.
    4
    -