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を含む生成されたデータ健全性監査レポート。

アーキテクチャ

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を通じてカタログ、ポリシーエンジン、データウェアハウス、可観測性システムと相互運用できるようになります。

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

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/NIHARDUGADE/sentinel-mcp-data-governance-agent'

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