Skip to main content
Glama

SENTINEL AGENT — エージェント型運用アプリビルダー

Foundryスタイルの運用オントロジーのためのAIコマンドレイヤー:MCPを介して接続し、実際のクエリデータで自然言語の質問に回答し、人間が承認したアクションを提案し、オンデマンドで運用ダッシュボードを生成するLLMエージェント — 自己構築型のPalantir AIPスタイル運用ツール。

系譜: このプロジェクトは、私がLocari(私のリードジェンSaaS — 本番稼働中、プライベートリポジトリ)向けに構築したAI サイト生成エージェントを、「LLMがウェブサイトを生成する」から「LLMがガバナンス付きでエンタープライズオントロジー上で運用する」へと進化させたものです。同じエージェントループのDNAを持ちながら、すべての機能が型付けされ、ホワイトリスト化され、プレビュー可能で、人間の承認を必要とし、監査されます。このエージェントはPACIFIC SENTINEL(プロジェクト1)と連携し、そのFastAPIオントロジーを直接消費できます。

完全デモ: Q&A、承認済みアクション、生成されたダッシュボード

3プロンプトデモ

すべてを実行(オフライン、APIキー不要):

.venv/bin/python scripts/demo.py

または、Webアプリに次のように入力します:

#

プロンプト

表示内容

1

Which units are critically low on water?

エージェントはオントロジースキーマに基づき、フィルタリングクエリを実行し、テーブルで回答します。すべてのツール呼び出しが右パネルにライブストリーミングされます。

2

Send 500 water from DEP-1 to UNIT-1

エージェントは提案します。プレビューカードに変更前後の状態と制約チェックが表示されます。あなたが承認して実行をクリックするまで何も変わりません。その後、補給所の在庫を再質問して状態変化を確認し、GET /auditで証跡を確認できます。

3

Build me a dashboard for the depots

エージェントはライブデータをクエリし、JSONダッシュボード仕様を公開します。キャンバスに統計タイル、テーブル、棒グラフが表示されます。

Q&A

アクションプレビュー

実行済み

ダッシュボード

Related MCP server: Vela MCP Server

MCPとは何か、そしてこれがPalantir AIPをどのように模倣しているか

MCP(Model Context Protocol) は、LLMに外部システム上の型付けされ、発見可能で、制限されたツールサーフェスを提供するオープンプロトコルです。サーバーはツール(名前 + 説明 + JSON Schema)を公開し、任意のクライアント(エージェント、IDE、チャットアプリ)が接続し、それらをリストし、呼び出します。プロトコルの境界がガバナンスの境界です。モデルはサーバーが公開するものだけを実行できます。

このプロジェクトはPalantirのAIPアーキテクチャのミニチュア版です:

このプロジェクト

Palantir AIP / Foundry相当

オントロジーバックエンド(StubOntology、HttpOntology → Project 1のFastAPI)— 型付けされたオブジェクト(SupplyDepot、DeployedUnit、ForwardOperatingBase)

Foundryオントロジー:生データ上のセマンティックオブジェクト、すべてのダウンストリームサーフェスで消費される単一のハブ

MCP読み取りツール(list_object_types、query_objects)

AIPエージェントがグラウンディングに使用するオントロジーAPI / オブジェクトクエリ

propose_action → 制約チェック付きプレビュー → 人間の承認 → execute_action

AIPアクションタイプ(提出基準 + 人間承認ワークフロー)— 書き込みはガバナンスされ、検証された操作であり、生のテーブル編集ではない

オペレーターキーによる承認ゲート + シングルユーストークン + エージェントツールホワイトリスト

エージェントの能力と人間の権限を分離するAIPの仕組み

すべての提案/承認/実行/拒否の追記専用監査ログ

AIP評価・監査証跡

publish_dashboard JSON仕様 → 固定Reactレンダラー

オントロジーデータ上に構築されたWorkshopスタイルの運用アプリ(宣言的設定、任意のコードではない)

エージェントループ(Claude + MCPツール + イベントストリーム)

AIP Agent Studio(ツールアクセス + ストリーム推論を持つエージェント)

ヒューマン・イン・ザ・ループの仕組み

 user ──ask──▶ Agent (LLM)                 MCP server                FastAPI (operator)
                │  propose_action(...) ──▶ validate params
                │                          run constraint checks
                │                          build before/after PREVIEW   (no mutation)
                │ ◀── proposal + action_id ─┘
 UI shows preview card ──── human clicks Approve ──▶ approve_action(operator_key)
                                                     └─ mints SINGLE-USE token
                                                   execute_action(token)
                                                     ├─ re-validates vs CURRENT state
                                                     ├─ applies the change
                                                     └─ audit log: proposed→approved→executed

3つの実施レイヤーがエージェントを提案のみに制限します:

  1. ホワイトリスト — approve_action / reject_action / execute_action はLLMのツールリストから削除されます。エージェントループは与えられていないツールへの呼び出しを拒否します。

  2. 能力ゲート — 承認には、オーケストレーションサーバーのプロセス内にのみ存在するOPERATOR_KEYが必要です(MCPサブプロセス環境に注入されます)。LLMコンテキストにそれが含まれることは決してないため、エージェントは原理的に承認トークンを生成できません。

  3. トークンメカニズム — トークンはシングルユース(secrets.compare_digest、初回使用で消費)であり、実行は現在の状態に対してすべての制約を再検証するため、古い承認で補給所を超過引き出しすることはできません。

同じ哲学がダッシュボードにも適用されます。エージェントは厳密に検証されたJSON仕様(extra="forbid"、3つのウィジェットタイプ、制限付きサイズ)を出力し、固定のReactコンポーネントが解釈します。HTML、JSX、実行可能コードは決して使用されません。

アーキテクチャ

 React 18 + Vite + TS + Tailwind          FastAPI (port 8100)              MCP server (stdio subprocess)
 ┌──────────────┬───────────────┐   WS    ┌──────────────────────┐  MCP    ┌─────────────────────────┐
 │ Chat panel   │ Actions cards │ ◀─────▶ │ /ws  agent events    │ ◀─────▶ │ 9 tools over ontology   │
 │ (markdown)   │ Live trace    │  HTTP   │ /actions/{id}/approve│  stdio  │ ┌─ StubOntology (dflt)  │
 │              │ Dashboard     │ ◀─────▶ │ /actions/{id}/reject │         │ └─ HttpOntology ──▶ Project 1
 │              │ canvas        │         │ /audit  /health      │         │    (pacific-sentinel)
 └──────────────┴───────────────┘         │ OpsAgent loop + LLM  │         └─────────────────────────┘
                                          │ (Claude ⟷ MockLLM)  │
                                          └──────────────────────┘

実行方法

# Backend
python3.11 -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest                  # 60 tests, fully offline
.venv/bin/python scripts/demo.py            # scripted 3-prompt demo (mock LLM)
.venv/bin/python scripts/smoke_mcp.py       # raw MCP stdio smoke run

# CLI
.venv/bin/python -m ops_agent.cli --llm mock "Which units are critically low on water?"

# Web app: API on :8100, frontend on :5174
LLM_MODE=mock .venv/bin/python -m uvicorn ops_agent.server:app --port 8100
cd frontend && npm install && npm run dev   # open http://localhost:5174
npm test                                    # 8 Vitest component tests

# Real LLM (claude-opus-4-8; key read from env, never hardcoded)
export ANTHROPIC_API_KEY=sk-ant-...
.venv/bin/python -m ops_agent.cli "Which units are critically low on water?"

# Against Project 1's live ontology instead of the stub
ONTOLOGY_BACKEND=http ONTOLOGY_API_URL=http://localhost:8000 ...

LLMモード — LLM_MODE=auto(デフォルト:ANTHROPIC_API_KEYが設定されていればライブ、それ以外はモック)/ mock / live。MockLLMはツール呼び出しモデル(グラウンディングクエリ→フィルタリングクエリ→回答、アクション解析、ダッシュボード構築)のように動作するため、テストやデモを含むすべてのフローがオフラインで決定論的に実行されます。

マイルストーン

  • M1 MCPサーバー:交換可能なバックエンド上の読み取り専用オントロジーツール + テスト

  • M2 エージェントループ:MCP上のLLMツール呼び出し、ホワイトリスト、監査イベント、CLI

  • M3 FastAPI WebSocketストリーミング + Reactチャット/トレースUI

  • M4 提案 → 人間承認(オペレーターキー + シングルユーストークン)→ 実行 → 監査

  • M5 ダッシュボード仕様生成(安全なJSON)+ Reactレンダラー(recharts)

  • M6 デモスクリプト、スクリーンショット、このREADME

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables engineers and plant managers to interact with manufacturing systems using natural language, providing machine health analysis, KPI dashboards, predictive maintenance, and automated workflow execution via MCP.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables governed, agent-agnostic data exploration by allowing users to ask natural language questions through MCP-compatible agents, executing safe, permission-scoped queries against data sources and returning interactive charts.
    8 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables natural language querying of SQL databases and REST APIs through the MCP protocol, grounded in a semantic layer.
    165 npm
    1
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that enables natural-language SQL queries across multiple databases (ClickHouse, Teradata, PostgreSQL, MySQL, SQL Server, DB2, Oracle, MongoDB) with dialect-correct SQL generation, PII masking, and security-by-construction controls.
    MIT