Skip to main content
Glama
avidunixuser

Storage Intelligence MCP

by avidunixuser

Storage Intelligence MCP/A2A エージェント

本番運用に近い読み取り専用の Azure Storage インテリジェンス・パイロットで、Dev、QA、Perf、Prod の 339 サブスクリプションにまたがる 2,500 アカウントの合成エステート、決定的な分析、プライベート Foundry ツール、Entra で保護された Web アプリケーションを備えています。

同じ決定的エージェントは、REST、公式 MCP Streamable HTTP サーバー、A2A v1 JSON-RPC/HTTP+JSON エンドポイントを通じて利用できます。クライアント構成、認証、ディスカバリ、リクエスト例については、MCP および A2A 統合 を参照してください。

ライブ MCP および A2A エンドポイント

スウェーデン中央デプロイメントでは、この Entra で保護されたベース URL を使用します:

https://ca-storage-intel-kxlgam3w.wittyforest-55ec85c1.swedencentral.azurecontainerapps.io

プロトコル

エンドポイント

MCP Streamable HTTP

https://ca-storage-intel-kxlgam3w.wittyforest-55ec85c1.swedencentral.azurecontainerapps.io/mcp/

A2A Agent Card

https://ca-storage-intel-kxlgam3w.wittyforest-55ec85c1.swedencentral.azurecontainerapps.io/.well-known/agent-card.json

A2A JSON-RPC

https://ca-storage-intel-kxlgam3w.wittyforest-55ec85c1.swedencentral.azurecontainerapps.io/a2a

A2A HTTP+JSON

https://ca-storage-intel-kxlgam3w.wittyforest-55ec85c1.swedencentral.azurecontainerapps.io/a2a/rest

外部クライアントは、Web アプリケーションの api://<WEB_AUTH_CLIENT_ID> オーディエンス用の Microsoft Entra トークンを要求し、ベアラートークンとして送信する必要があります。正規の MCP URL として /mcp/ を使用してください。/mcp はマウントされたトランスポートパスにリダイレクトされます。

Related MCP server: azure-compliance-mcp

製品エクスペリエンス

  • PepsiCo ブランドのレスポンシブダッシュボードで、ピン留めされたローカル配信の React アセットを備えています。

  • 右上ヘッダーに永続的な英語/スペイン語の言語切り替えがあり、ハイデラバード、バルセロナ、メキシコ、米国、英国のグローバルに分散したチーム向けです。ナビゲーション、フォーム、ステータス、アクセシビリティラベル、動的カウント、リスク要因、組み込み質問、決定的な回答サマリーは、API 識別子やリソース名を変更せずに選択した言語で表示されます。

  • ストレージアカウント名、テナント ID、管理グループ、サブスクリプション、環境、子会社/事業部門、リージョン、アクセス層による手動パイロットオンボーディング。

  • 認証済みの選択リスト管理により、テナント、管理グループ、サブスクリプション、子会社/事業部門の追加に加え、すべてのリージョンセレクターに顧客向け Azure パブリックリージョンカタログの完全なセットを提供します。

  • 繰り返しの手動入力を避けるための一括 XLSX/CSV オンボーディング。インポートはアトミックに検証され、重複を拒否し、インメモリのパイロットインベントリのみを更新します。

  • 管理者専用のテナントディスカバリで、すべての承認済みサブスクリプションに対して読み取り専用の Azure CLI コマンドを実行し、テナント、管理グループ、子会社/事業部門、環境、ストレージアカウント、リージョン、層、SKU、アクセス/ネットワーク体制、プロジェクトガバナンスタグをインポートします。

  • リンクされたストレージアカウントに、小さな Databricks、Fabric Lakehouse、SAP、Azure Data Factory、SFTP、Application Insights バッジを表示します。合成エステートはこれらの関係を決定的にランダム化します。ディスカバリはネイティブの isSftpEnabled/isHnsEnabled プロパティに加えて ApplicationInsights/AppInsights タグエイリアスを読み取ります。

  • 決定的な容量、コスト、リスク、Databricks、予測、異常、層節約、エビデンス、信頼性、鮮度の調査。

  • リスク集中リストは、Growth、Cost、Freshness、Operations、Databricks、Configuration、Security、Governance のカテゴリを、落ち着いた低彩度のパレットで表示します。Security は SAS/共有キー、パブリックアクセス、プライベートエンドポイントの欠如、NSG/ASG リンク、サービスプリンシパルアクセスの欠如を明示的にスコアリングします。Governance はプロジェクト、事業部門、最終アクセス、廃止タグを使用します。ドーナツ型の円グラフが主要リスクの分布を要約し、スコープされた各アカウントで 20 以上をスコアリングしたものは、ランク付けされた縦スクロール可能なリストに残ります。円グラフのセグメントにホバーすると、リスクの説明、アカウント数、パーセンテージが表示されます。キーボードフォーカスは最大のセグメントを表示します。

  • アクション可能なデータヘルスポスチャタイル: 古いアカウント、ライフサイクル欠落、SAS キー、パブリックアクセス、プライベートエンドポイントなし、サービスプリンシパルなし、GRS/GZRS なし、NSG/ASG リンク済み、廃止プロジェクト に加えて SFTP 有効 と AppInsights データ はボタンです。1 つを選択すると、アクティブなスコープのすべての一致するアカウントが、データヘルスページのタイルのすぐ下のリスクソートされた縦スクロール可能なパネルに即座に読み込まれます。概要は、エステートの容量、コスト、節約、リスク集中、オンボーディングに焦点を当てたままです。以前のスタンドアロンの古いアカウント詳細パネルは、古いアカウントがこの共通のドリルダウンを使用するため削除されました。

  • 優先度の高い発見事項は、Growth と Operations のコンポーネントスコアを説明します。Operations は 0〜100 のスロットリング/レイテンシのサブスコアです。右側の値は、100 点満点の全体的な加重アカウントリスクスコアです。

手動およびスプレッドシートのオンボーディングは、Azure Storage リソースを作成または変更することはありません。

Container Apps の Web ワークロードは、1 vCPU と 2 GiB メモリを備えた常時準備完了の Consumption レプリカを 1 つ使用します。これにより、A2A タスクのルックアップとキャンセルが SDK のプロセスローカルタスクハンドラーと一貫性を保ちます。イングレスはポート 8000 をターゲットにしており、Uvicorn と Dockerfile に一致し、プローブは一時的な負荷に対して 10 秒を許可します。プライベート Function のデプロイメントと Foundry のスモークテストは、Web の起動から意図的に分離されているため、パブリックの Entra で保護された UI がプライベートな依存関係によってブロックされることはありません。アプリケーションバージョン 0.1.0 は変更されていません。

機能ビュー

  • エージェント調査 は、スコープされた決定的ツールを実行し、完全な信頼エンベロープと構造化された結果を表示し、返された各アカウントがフラグ付けされた理由を説明し、エビデンスの引用をすべての一意な返されたアカウントと整合させ、運用/財務/プラットフォームの質問の広範な再利用可能なカタログを提供し、新しい認証済みの質問を将来のセッションのために保存し、セッション内で最新の 8 つの調査を保持します。

  • 節約シミュレータ は、1〜100% の層採用をモデル化し、10/25/50% のベースラインを比較し、上位 20 の候補をランク付けし、取得/保持の注意事項を保持します。

  • 発見事項 は、リスク、堅牢な成長異常、データ鮮度、節約アクションを重大度でソートされた受信トレイに結合します。総発見事項、データ鮮度、成長異常、リスク、節約アクション はクリック可能なサマリータイルです。1 つ選択すると、下のスクロール可能な結果パネルが即座にフィルタリングされます。以前の重複フィルターボタン行は削除されました。

  • データヘルス は、鮮度カバレッジ、コネクタ/ソースステータス、ライフサイクルと想定層のギャップ、スクロール可能な古いアカウントの修復リストを表示します。管理者の場合、表示される 無効 ステータスはボタンです。クリックするとそのコネクタが有効になり、ステータスが 有効 に変わり、クリック可能な 実行 アクションが表示されます。完了したパイロットフィクスチャの実行は、ステータスを 正常 に変更し、同期済み/対象のカウントと最終実行時間を表示します。セキュリティポスターカードは、SAS/共有キー、パブリックアクセス、プライベートエンドポイントの欠如、サービスプリンシパルアクセスの欠如、非 GRS/GZRS レプリケーション、NSG/ASG リンク、廃止されたプロジェクト、最終アクセスタグの欠如、SFTP 有効なエンドポイント、Application Insights にリンクされたストレージを公開します。

  • データヘルスは、合成パイロット、Azure CLI ディスカバリ、Azure Resource Graph、Blob インベントリ、Azure Monitor メトリクス、Cost Management エクスポート、Databricks システムテーブル をグローバルフィルター/リセット行の直後に配置します。

テナント全体の管理者ディスカバリ

管理者は、左ナビゲーションに専用の 管理者 項目を表示します。その テナント全体のストレージアカウント詳細を取得 アクションは、Azure CLI 引数配列(シェルコマンド文字列ではなく)を使用して、認証された ID に表示されるすべての有効なサブスクリプションを列挙し、各サブスクリプションに対して az storage account list を実行します。結果はパイロットインベントリに冪等に取り込まれ、プライベート Cosmos DB の storage-intelligence/storage-accounts コンテナにアップサートされます。

ランタイムを次のように構成します:

変数

目的

デフォルト

ADMIN_ROLE

管理者エンドポイントに必要な Entra アプリロール

StorageIntelligence.Admin

DISCOVERY_TENANT_IDS

オプションのカンマ区切りのテナント ID。空の場合は CLI アカウントキャッシュに表示されるすべてのテナント

空

DISCOVERY_USE_MANAGED_IDENTITY

AZURE_CLIENT_ID で az login --identity を実行します

true

DISCOVERY_CRON

初期の 5 フィールドのディスカバリスケジュール

0 */6 * * *

DISCOVERY_SCHEDULE_PATH

永続化された管理者スケジュール構成

data/discovery-schedule.json

DISCOVERY_OUTPUT_PATH

スケジュールされた CLI スナップショットパス

data/discovered-storage-accounts.json

AZURE_CLI_PATH

Azure CLI 実行可能ファイル

az

COSMOS_INVENTORY_ENABLED

手動およびスケジュールされたディスカバリ結果を Cosmos DB に永続化する

false ローカル; true Azure 内

COSMOS_ENDPOINT

プライベート Cosmos DB アカウントエンドポイント

永続化が有効な場合に必須

COSMOS_DATABASE

インベントリデータベース名

storage-intelligence

COSMOS_CONTAINER

ストレージアカウントコンテナ名

storage-accounts

SAVED_QUESTIONS_PATH

Cosmos が無効な場合のアトミックなローカルホスト質問ライブラリファイル

data/saved-agent-questions.json

マネージド ID または自動化プリンシパルには、すべてのターゲットサブスクリプション/テナントで読み取り専用アクセスを付与する必要があります。このプロジェクトは意図的にテナント全体の Reader ロールを割り当てません。クロステナントディスカバリは、ID が各テナントで明示的に承認された後にのみ機能します。

ディスカバリを直接実行します:

.\scripts\run-storage-discovery.ps1

管理者は、ダッシュボードで 5 フィールドの cron 式を直接編集できます。スケジュールは croniter で検証され、原子的に永続化され、再起動後にプロセス内スケジューラによって使用されます。次の実行時間と一般的な UTC cron の例は、ロールゲートされた管理者ビューに表示されます。プロビジョニングは StorageIntelligence.Admin Entra アプリロールを作成し、デプロイするユーザーに割り当てます。各完了したプルは、Cosmos DB のアップサート数を報告します。Cosmos は Web アプリの管理 ID、データベーススコープの組み込み Data Contributor 割り当て、/subscription_id パーティショニングを使用し、アカウントキーは使用しません。

外部の自動化ホストの場合、提供された 6 時間のフォールバック cron をインストールします:

crontab config/storage-discovery.cron

外部スケジュールコマンドはアトミックなJSONスナップショットを書き込みます。アプリ内スケジューラは同じアカウント詳細をCosmos DBにアップサートします。どちらの経路もストレージキーを要求したり、エステートリソースを変更したりしません。

DiscoveryはDatabricks、Fabric Lakehouse、SAP、Azure Data Factory、Application Insightsのタグエイリアスに加え、ネイティブのSFTP/HNS状態を認識します。 また、Project/ProjectName、BusinessUnit、LastAccessedDate、ProjectStatus/ProjectDefunct、UsesSASKeys、ServicePrincipalAccess、NetworkSecurityGroup/NSG、ApplicationSecurityGroup/ASGも読み取ります。Azureリソースのプロパティは、共有キーアクセス、パブリックネットワーク/Blobアクセス、プライベートエンドポイント状態、レプリケーションSKUを提供します。リンクされたアカウントは、専用ダッシュボードセクションにコンパクトでアクセシブルなバッジとともに表示されます。

ナビゲーションフッターには© 2026 PepsiCo. All rights reserved.の後に、小さくアクセシブルなMicrosoft、Azure、および提供されたAzure AI Foundry画像マークが表示されます。Foundry PNGはSHA-256マニフェストとともにsrc/web/static/assetsの下にコミットされています。

スプレッドシート形式

ヘッダー行と以下の列を持つ.xlsxワークブックまたはUTF-8 .csvファイルをアップロードします:

列

例

name

stfinancearchive01

tenant_id

11111111-1111-4111-8111-111111111111

management_group

mg-americas-platform

subscription

platform-prod

environment

Prod

subsidiary

PepsiCo Beverages North America

region

eastus2

tier

Cool

インポーターはファイルあたり最大10,000行または5 MBを受け入れます。storage_account_name、tenant、managementgroup、subscription_name、environment/stage/env、Business unit、azure_region、access_tierなどのフレンドリーなヘッダーエイリアスは自動的に正規化されます。 business_unitはsubsidiaryの互換エイリアスです。すべての階層値はパイロットカタログに存在する必要があります。既知の合成サブスクリプションは、そのテナント、管理グループ、環境、および子会社に対して検証されます。リージョンは完全なAzureパブリックリージョンセレクターの任意のコードを使用でき、ティアは利用可能なアクセスティアを使用する必要があります。

バージョン管理された合成カタログには正確に339のサブスクリプションが含まれています。各サブスクリプションには、決定論的なUUID、テナント、管理グループ、子会社、およびDev、QA、Perf、Prodのいずれかがあります。339すべての名前がグローバルサブスクリプションセレクターに表示されます。

調査質問ライブラリ

GET /api/questionsは組み込みおよび保存済みの質問カタログを返します。 POST /api/questionsは新しい3〜500文字の質問を受け付け、空白を正規化し、大文字小文字を区別しない重複を拒否し、共有ライブラリを100件のカスタム質問に制限します。Azureはカスタム質問を、既存のプライベートCosmosコンテナの__agent_questions__パーティションの下にsaved-agent-questionドキュメントとして保存します。Localhostは上記のアトミックJSONパスを使用します。質問を保存しても、それが実行されたりAzureリソースが変更されたりすることはありません。

ローカル実行

Python 3.13が必要です。Node.jsとnpmは使用されません。

python -m venv .venv
.\.venv\Scripts\python -m pip install -e ".[test]"
$env:AUTH_DISABLED = "true"
.\.venv\Scripts\python -m uvicorn web.app:app --host 127.0.0.1 --port 8000

http://127.0.0.1:8000を開きます。受け入れテストを実行するには:

.\.venv\Scripts\python -m pytest

言語設定はブラウザのlocalStorageのstorage-intelligence-languageの下に保存されます。英語(en)がデフォルトです。スペイン語(es)はドキュメントの言語とタイトルを更新します。組み込みのスペイン語質問は、API送信前に英語の決定論的意図に正規化され、バックエンドは新しく作成された質問に対して一般的なスペイン語の意図フレーズも認識します。

アーキテクチャ

  • src/storage_intelligence: 合成ジェネレーター、コネクタ、分析、クエリルーター。

  • src/protocols/service.py: プロトコルに依存しない読み取り専用エージェントファサード。

  • src/protocols/mcp_server.py: MCPツール、リソース、プロンプト、HTTPマウント、stdioエントリポイント。

  • src/protocols/a2a_server.py: A2Aエージェントカード、JSON-RPC/RESTルート、タスク実行、アーティファクト。

  • src/protocols/README.md: コードに隣接するMCP/A2Aエンドポイント、認証、使用法リファレンス。

  • src/web: FastAPIおよびベンダー提供のReact 18.3.1ブラウザUI。

  • src/function_app.py: プライベートOpenAPIツールと永続的なファンアウト/ファンインコレクション。

  • src/agent: Foundry命令、OpenAPIコントラクト、デプロイ/呼び出しスクリプト、評価。

  • infra/foundry: 公式テンプレート19ベースラインと未変更のサポートモジュール。

  • infra/functions-base: 保存された公式Flex Consumptionベースモジュール。

  • infra: 構成されたワークロードBicepおよびAZDパラメータ。

製品仕様、アーキテクチャ、およびプロトコル統合を参照してください。

Azureワークフロー

承認済みの.azure/deployment-plan.mdが信頼できる情報源です。デプロイでは以下を使用します:

azd env new storage-intel-pilot
azd env set AZURE_LOCATION swedencentral
azd env set AZURE_SUBSCRIPTION_ID c82406dd-f84c-42df-9586-c6f02abda6df
azd provision --preview --no-prompt
azd provision --no-prompt
azd deploy --no-prompt

デプロイスクリプトは、シークレットレスなEntraアプリケーション登録を作成または再利用し、Container Apps Easy AuthのIDトークン発行を有効にし、WebイメージとFunctionsパッケージをデプロイしてから、Foundryプロンプトエージェントバージョンを作成します。Easy Authは、アプリケーションクライアントIDとそのapi://識別子URIの両方をトークンオーディエンスとして受け入れます。 本番コネクタは、明示的なフラグと最小特権ロールが構成されない限り無効のままです。

コストに関する注意事項

プライベートFoundry Standardには、固定費のAI Search StandardとPremium ACRが必要です。Cosmos DB、モニタリング取り込み、モデルトークン、プライベートエンドポイント、Container Appsは使用量ベースのコストを追加します。パイロットは合成データを使用することで、エステートAPIおよびDatabricksクエリ料金を回避します。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes core Azure services as read-mostly tools any MCP client can call, including Blob Storage, Key Vault, Service Bus, and Resource Manager.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A read-only MCP server for exploring on-premises, multi-instance Microsoft SQL Server estates from AI clients, with read-only enforcement and Windows authentication support.
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server for inspecting AWS resources, detecting misconfigurations, and estimating costs across EC2, S3, and IAM, enabling agents to safely query and analyze cloud infrastructure.
    -