Skip to main content
Glama
avidunixuser

Storage Intelligence MCP

by avidunixuser

Agente MCP/A2A de Storage Intelligence

Piloto de inteligencia de Azure Storage de solo lectura, de tipo productivo, con un conjunto sintético de 2500 cuentas distribuidas en 339 suscripciones en los entornos Dev, QA, Perf y Prod, análisis deterministas, herramientas privadas de Foundry y una aplicación web protegida con Entra.

El mismo agente determinista está disponible a través de REST, un servidor MCP Streamable HTTP oficial y los endpoints A2A v1 JSON-RPC/HTTP+JSON. Consulte Integración MCP y A2A para la configuración del cliente, autenticación, descubrimiento y ejemplos de solicitudes.

Endpoints MCP y A2A en vivo

La implementación de Suecia Central usa esta URL base protegida por Entra:

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

Protocolo

Endpoint

MCP Streamable HTTP

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

Tarjeta de agente A2A

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

Los clientes externos deben solicitar un token de Microsoft Entra para la audiencia api://<WEB_AUTH_CLIENT_ID> de la aplicación web y enviarlo como token de portador. Use /mcp/ como URL MCP canónica; /mcp redirige a la ruta de transporte montada.

Related MCP server: azure-compliance-mcp

Experiencia de producto

  • Panel receptivo con la marca PepsiCo con activos React anclados y servidos localmente.

  • Conmutador persistente de idioma inglés/español en el encabezado superior derecho para equipos distribuidos globalmente en Hyderabad, Barcelona, México, EE. UU. y el Reino Unido. La navegación, los formularios, los estados, las etiquetas de accesibilidad, los recuentos dinámicos, los factores de riesgo, las preguntas integradas y los resúmenes de respuestas deterministas se muestran en el idioma seleccionado sin cambiar los identificadores de API ni los nombres de recursos.

  • Incorporación manual de pilotos por nombre de cuenta de almacenamiento, identificador de inquilino, grupo de administración, suscripción, entorno, subsidiaria/unidad de negocio, región y nivel de acceso.

  • Gestión autenticada de listas de selección para agregar inquilinos, grupos de administración, suscripciones, subsidiarias/unidades de negocio, además del catálogo completo de regiones públicas de Azure orientado al cliente en cada selector de región.

  • Incorporación masiva XLSX/CSV para evitar la entrada manual repetitiva. Las importaciones se validan atómicamente, rechazan duplicados y actualizan solo el inventario piloto en memoria.

  • Descubrimiento de inquilinos solo para administradores que ejecuta comandos de Azure CLI de solo lectura en todas las suscripciones autorizadas e importa inquilino, grupo de administración, subsidiaria/unidad de negocio, entorno, cuenta de almacenamiento, región, nivel, SKU, postura de acceso/red y etiquetas de gobernanza de proyectos.

  • Pequeñas insignias de Databricks, Fabric Lakehouse, SAP, Azure Data Factory, SFTP y Application Insights en cuentas de almacenamiento vinculadas. El conjunto sintético aleatoriza de forma determinista estas relaciones; el descubrimiento lee las propiedades nativas isSftpEnabled/isHnsEnabled además de los alias de etiqueta ApplicationInsights/AppInsights.

  • Investigaciones deterministas de capacidad, costo, riesgo, Databricks, pronóstico, anomalías, ahorro de nivel, evidencia, confianza y frescura.

  • Las listas de concentración de riesgo incluyen las categorías Crecimiento, Costo, Frescura, Operaciones, Databricks, Configuración, Seguridad y Gobernanza con una paleta de baja saturación. Seguridad puntúa explícitamente claves SAS/compartidas, acceso público, puntos de conexión privados faltantes, vínculos NSG/ASG y acceso de entidad de servicio faltante. Gobernanza usa etiquetas de proyecto, unidad de negocio, último acceso y obsoletas. Un gráfico circular de dona resume la distribución de riesgo dominante, mientras que cada cuenta con alcance que puntúa al menos 20 permanece en la lista clasificada y desplazable verticalmente. Al pasar el cursor sobre un segmento del gráfico se muestra la descripción del riesgo, el número de cuentas y el porcentaje; el foco del teclado muestra el segmento más grande.

  • Mosaicos de postura de salud de datos procesables: Cuentas obsoletas, Falta ciclo de vida, Clave SAS, Acceso público, Sin punto de conexión privado, Sin entidad de servicio, Sin GRS/GZRS, NSG/ASG vinculado y Proyectos obsoletos además de SFTP habilitado y Datos de AppInsights son botones. Seleccionar uno carga inmediatamente cada cuenta coincidente para el ámbito activo en un panel clasificado por riesgo y desplazable verticalmente justo debajo de los mosaicos en la página de Salud de datos. La descripción general permanece centrada en la capacidad del conjunto, el costo, los ahorros, la concentración de riesgo y la incorporación. El panel de detalles de cuentas obsoletas independiente anterior se elimina porque Cuentas obsoletas ahora usa este desglose común.

  • Los hallazgos prioritarios explican las puntuaciones de los componentes de Crecimiento y Operaciones. Operaciones es la subpuntuación de limitación/latencia de 0 a 100; el valor del lado derecho es la puntuación de riesgo general ponderada de la cuenta sobre 100.

La incorporación manual y por hoja de cálculo nunca crea ni cambia recursos de Azure Storage.

La carga de trabajo web de Container Apps usa una réplica de Consumo siempre lista con 1 vCPU y 2 GiB de memoria. Esto mantiene la búsqueda y cancelación de tareas A2A coherentes con el controlador de tareas local del proceso del SDK. La entrada apunta al puerto 8000, que coincide con Uvicorn y el Dockerfile, y las sondas permiten 10 segundos para carga transitoria. La implementación de funciones privadas y las pruebas de humo de Foundry están deliberadamente desacopladas del inicio web para que la interfaz de usuario pública protegida por Entra no pueda ser bloqueada por una dependencia privada. La versión de la aplicación 0.1.0 permanece sin cambios.

Vistas funcionales

  • Investigación de agente ejecuta herramientas deterministas con ámbito, muestra el sobre de confianza completo y el resultado estructurado, explica por qué se marcó cada cuenta devuelta, mantiene las citas de evidencia alineadas con todas las cuentas únicas devueltas, ofrece un amplio catálogo reutilizable de preguntas operativas/financieras/de plataforma, guarda nuevas preguntas autenticadas para futuras sesiones y conserva las últimas ocho investigaciones en la sesión.

  • Simulador de ahorro modela la adopción de niveles del 1 al 100 %, compara líneas base del 10/25/50 %, clasifica los 20 principales candidatos y conserva las advertencias de recuperación/retención.

  • Hallazgos combina riesgo, anomalías de crecimiento sólidas, frescura de datos y acciones de ahorro en una bandeja de entrada ordenada por gravedad. Hallazgos totales, Frescura de datos, Anomalía de crecimiento, Riesgo y Acción de ahorro son mosaicos de resumen en los que se puede hacer clic; seleccionar uno filtra inmediatamente el panel de resultados desplazable a continuación. Se elimina la fila anterior de botones de filtro duplicados.

  • Salud de datos muestra cobertura de frescura, estado del conector/fuente, brechas de ciclo de vida y nivel asumido, y una lista de corrección de cuentas obsoletas desplazable. Para los administradores, el estado visible Deshabilitado es un botón: al hacer clic se habilita ese conector, cambia el estado a Habilitado y revela una acción Ejecutar en la que se puede hacer clic. Una ejecución de dispositivo de prueba piloto completada cambia el estado a Saludable y muestra recuentos sincronizados/elegibles y la hora de la última ejecución. Las tarjetas de postura de seguridad exponen claves SAS/compartidas, acceso público, puntos de conexión privados faltantes, acceso de entidad de servicio faltante, replicación no GRS/GZRS, vínculos NSG/ASG, proyectos obsoletos, etiquetas de último acceso faltantes, puntos de conexión habilitados para SFTP y almacenamiento vinculado a Application Insights.

  • Salud de datos coloca Piloto sintético, Descubrimiento de Azure CLI, Azure Resource Graph, Inventario de blobs, Métricas de Azure Monitor, exportaciones de Cost Management y tablas del sistema de Databricks inmediatamente después de la fila de filtros/restablecimiento globales.

Descubrimiento administrativo en todo el inquilino

Los administradores ven un elemento Admin dedicado en la navegación izquierda. Su acción Extraer detalles de cuentas de almacenamiento en todo el inquilino usa matrices de argumentos de Azure CLI (nunca una cadena de comando de shell) para enumerar cada suscripción habilitada visible para la identidad autenticada y ejecutar az storage account list para cada suscripción. Los resultados se ingieren de forma idempotente en el inventario piloto y se insertan o actualizan en el contenedor privado de Cosmos DB storage-intelligence/storage-accounts.

Configure el tiempo de ejecución con:

Variable

Propósito

Predeterminado

ADMIN_ROLE

Rol de aplicación de Entra requerido por los endpoints de administración

StorageIntelligence.Admin

DISCOVERY_TENANT_IDS

Lista opcional de identificadores de inquilino separados por comas; vacío significa todos los inquilinos visibles en la caché de la cuenta CLI

vacío

DISCOVERY_USE_MANAGED_IDENTITY

Ejecutar az login --identity con AZURE_CLIENT_ID

true

DISCOVERY_CRON

Programa de descubrimiento inicial de cinco campos

0 */6 * * *

DISCOVERY_SCHEDULE_PATH

Ruta de configuración de programa de administración persistida

data/discovery-schedule.json

DISCOVERY_OUTPUT_PATH

Ruta de instantánea de CLI programada

data/discovered-storage-accounts.json

AZURE_CLI_PATH

Ejecutable de Azure CLI

az

COSMOS_INVENTORY_ENABLED

Persistir los resultados de descubrimiento manuales y programados en Cosmos DB

false localmente; true en Azure

COSMOS_ENDPOINT

Punto de conexión de cuenta de Cosmos DB privada

requerido cuando la persistencia está habilitada

COSMOS_DATABASE

Nombre de la base de datos de inventario

storage-intelligence

COSMOS_CONTAINER

Nombre del contenedor de cuentas de almacenamiento

storage-accounts

SAVED_QUESTIONS_PATH

Archivo de biblioteca de preguntas local atómico cuando Cosmos está deshabilitado

data/saved-agent-questions.json

A la identidad administrada o a la entidad de servicio de automatización se le debe otorgar acceso de solo lectura en cada suscripción/inquilino de destino. Este proyecto deliberadamente no asigna roles Reader en todo el inquilino. El descubrimiento entre inquilinos solo funciona después de que la identidad esté explícitamente autorizada en cada inquilino.

Ejecute el descubrimiento directamente:

.\scripts\run-storage-discovery.ps1

Los administradores pueden editar la expresión cron de cinco campos directamente en el panel. El programa se valida con croniter, se persiste atómicamente y lo usa el programador en proceso después del reinicio. La próxima hora de ejecución y ejemplos comunes de cron UTC se muestran en la vista de administración restringida por rol. El aprovisionamiento crea el rol de aplicación de Entra StorageIntelligence.Admin y lo asigna al usuario que implementa. Cada extracción completada informa el número de inserciones o actualizaciones de Cosmos DB. Cosmos usa la identidad administrada de la aplicación web, una asignación integrada de Colaborador de datos con ámbito de base de datos, particionamiento /subscription_id y sin claves de cuenta.

Para un host de automatización externo, instale el cron de respaldo de seis horas suministrado:

crontab config/storage-discovery.cron

El comando programado externo escribe una instantánea JSON atómica. El programador integrado en la aplicación actualiza los mismos datos de la cuenta en Cosmos DB. Ninguna de las dos vías solicita claves de almacenamiento ni modifica recursos del entorno.

Discovery reconoce Databricks, Fabric Lakehouse, SAP, Azure Data Factory y alias de etiquetas de Application Insights, además del estado nativo SFTP/HNS. También lee Project/ProjectName, BusinessUnit, LastAccessedDate, ProjectStatus/ProjectDefunct, UsesSASKeys, ServicePrincipalAccess, NetworkSecurityGroup/NSG y ApplicationSecurityGroup/ASG. Las propiedades de los recursos de Azure proporcionan acceso con clave compartida, acceso público de red/blob, estado del punto de conexión privado y SKU de replicación. Las cuentas vinculadas aparecen en una sección dedicada del panel con insignias compactas accesibles.

El pie de navegación muestra © 2026 PepsiCo. All rights reserved. seguido de las marcas de imagen pequeñas y accesibles de Microsoft, Azure y la imagen proporcionada de Azure AI Foundry. El PNG de Foundry está incluido en src/web/static/assets con un manifiesto SHA-256.

Formato de hoja de cálculo

Cargue un libro de trabajo .xlsx o un archivo .csv UTF-8 con una fila de encabezado y estas columnas:

Columna

Ejemplo

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

El importador acepta hasta 10 000 filas o 5 MB por archivo. Los alias de encabezado descriptivos, como storage_account_name, tenant, managementgroup, subscription_name, environment/stage/env, Business unit, azure_region y access_tier, se normalizan automáticamente. business_unit es un alias de compatibilidad para subsidiary. Cada valor de jerarquía debe existir en el catálogo piloto; las suscripciones sintéticas conocidas se validan con su inquilino, grupo de administración, entorno y subsidiaria. Las regiones pueden usar cualquier código del selector completo de regiones públicas de Azure; los niveles deben usar un nivel de acceso disponible.

El catálogo sintético con versiones contiene exactamente 339 suscripciones. Cada suscripción tiene un UUID determinista, inquilino, grupo de administración, subsidiaria y uno de Dev, QA, Perf o Prod. Los 339 nombres aparecen en el selector global de suscripciones.

Biblioteca de preguntas de investigación

GET /api/questions devuelve el catálogo de preguntas integradas y guardadas. POST /api/questions acepta una pregunta nueva de 3 a 500 caracteres, normaliza los espacios en blanco, rechaza duplicados sin distinguir mayúsculas y limita la biblioteca compartida a 100 preguntas personalizadas. Azure almacena las preguntas personalizadas como documentos saved-agent-question en el contenedor privado de Cosmos existente bajo la partición __agent_questions__. Localhost usa la ruta JSON atómica anterior. Guardar una pregunta no la ejecuta ni muta un recurso de Azure.

Ejecución local

Se requiere Python 3.13. No se utilizan Node.js ni 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

Abra http://127.0.0.1:8000. Ejecute las pruebas de aceptación con:

.\.venv\Scripts\python -m pytest

La preferencia de idioma se almacena en localStorage bajo storage-intelligence-language. El inglés (en) es el predeterminado; el español (es) actualiza el idioma y el título del documento. Las preguntas integradas en español se canonizan de nuevo a su intención determinista en inglés antes del envío a la API, mientras que el backend también reconoce frases comunes de intención en español para preguntas recién creadas.

Arquitectura

  • src/storage_intelligence: generador sintético, conectores, análisis, enrutador de consultas.

  • src/protocols/service.py: fachada de agente de solo lectura sin dependencia de protocolo.

  • src/protocols/mcp_server.py: herramientas MCP, recurso, prompt, montaje HTTP y punto de entrada stdio.

  • src/protocols/a2a_server.py: tarjeta de agente A2A, rutas JSON-RPC/REST, ejecutor de tareas y artefactos.

  • src/protocols/README.md: referencia de endpoints MCP/A2A adyacente al código, autenticación y artefactos.

  • src/web: FastAPI y UI de React 18.3.1 incluida.

  • src/function_app.py: API privada de OpenAPI y recopilación durable fan-out/fan-in.

  • src/agent: agente de Azure AI Foundry, configuración de OpenAPI y scripts de implementación/invocación.

  • src/agent/tooling: prompts de herramientas, manejadores de herramientas y verificación de resultados.

  • infra/foundry: módulos de plantilla oficiales 19.1 y 19.2 (sin modificar).

  • infra/functions-base: módulos base oficiales de Functions.

  • infra: Bicep de carga de trabajo compuesta y plantilla de implementación de GitHub Actions.

Consulte la especificación del producto, la arquitectura y la integración de protocolos.

Flujo de trabajo de Azure

.\scripts\run-storage-discovery.ps1

El plan de implementación crea o reutiliza recursos de Azure. El subcomando create emite el estado de implementación intermedio en ~/.azure/gxp1/... para pasar la comprobación de tenencia a los pasos de confirmación. Requiere un principalType de Application para federación de credenciales y rechaza cuentas de almacenamiento reutilizadas con firewall habilitado o sin SAS. Los nombres de implementaciones se basan en el host de Git local, la rama y la fecha de confirmación. Si falta AZURE_CREDENTIALS, se activa la autenticación de Azure CLI con inicio de sesión interactivo. El generador sintético se puede invocar manualmente con --all y una salida determinista, y --commit incluye las instantáneas en las acciones de implementación.

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

Los scripts de implementación crean o reutilizan registros de aplicaciones sin claves, habilitan la emisión de tokens de ID para la autenticación de Container Apps, implementan el paquete de Functions y de la interfaz web, y luego crean la versión del agente de Foundry. Los conectores de producción permanecen deshabilitados a menos que se configuren sus indicadores explícitos y los roles de seguridad correspondientes.

Advertencias de costos

Foundry Standard privado requiere AI Search Standard de costo fijo y ACR Premium. Cosmos DB, el monitoreo de telemetría, los tokens de modelo, los puntos de conexión privados y Container Apps agregan costos basados en uso. El piloto evita los cargos de consulta de la API del entorno y de Databricks mediante el uso de datos sintéticos.

F
license - not found
Not graded
quality - not tested
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

  • A
    license
    Not graded
    quality
    C
    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
    C
    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.

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/avidunixuser/Storage-Intelligence-MCP'

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