Sentinel MCP Daily Security Posture Report
Each morning the flow asks the Sentinel MCP (Preview) for a posture rollup - open incidents by severity, mean time to acknowledge, top tactics, noisy rules - stores the metrics in Dataverse, refreshes a Power BI dashboard, and emails leadership a summary. Automates SOC posture reporting from Sentinel.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow automates daily SOC posture reporting from Microsoft Sentinel using the Sentinel MCP (Preview) connector. Each morning at 07:00 it opens an MCP session, asks the Sentinel MCP server for a security posture rollup (open incidents by severity, mean time to acknowledge, top MITRE tactics, noisy analytics rules), writes the metrics as a new row in a Dataverse trend table, refreshes the Power BI dashboard dataset, and emails leadership a formatted summary.
Why it matters: Posture reporting is normally manual and inconsistent. An MCP-driven rollup gives leadership a reliable, repeatable daily security picture and a Dataverse-backed trend history that powers a Power BI dashboard.
Flow ID: CF-707 - Status: Built (ships Off) - Solution: FlowLibs - Sentinel MCP Daily Security Posture Report
Use Case
Security leadership (CISO, IT admins) wants a consistent daily posture report and a trend dashboard without an analyst manually pulling numbers from Sentinel each morning. This flow delivers a scheduled rollup, a durable metric history in Dataverse, an auto-refreshed Power BI dashboard, and a summary email - all from a single scheduled flow.
Flow Architecture
Daily_0700
Recurrence (Day / 07:00)Daily report cadence
Initialize variables
Initialize VariableCorrelation id, MCP protocol version, session id, tool name, workspace id, Power BI workspace/dataset ids, leadership email, posture table name
Initialize_Mcp_Session
Sentinel MCP (Preview) invokemcpdataexplorationJSON-RPC initialize handshake; opens an MCP session and captures Mcp-Session-Id
Invoke_Mcp_Posture_Rollup
Sentinel MCP (Preview) invokemcpdataexplorationtools/call to the posture/metrics tool for the rollup
Store_Posture_Snapshot
Dataverse CreateRecordWrites the day's metrics as a new posture snapshot row
Refresh_PowerBI_Dataset
Power BI RefreshDatasetRefreshes the posture dashboard dataset
Email_Leadership_Summary
Office 365 Outlook SendEmailV2Emails leadership a formatted posture summary
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_SecPostureTable | String | flowlibs_secpostures | Entity-set name of the posture snapshot table |
| flowlibs_SentinelMcpToolName | String | run_hunting_query | Sentinel MCP tool invoked for the rollup |
| flowlibs_LogAnalyticsWorkspaceId | String | 00000000-0000-0000-0000-000000000000 | Sentinel / Log Analytics workspace id |
| flowlibs_PowerBIWorkspaceId | String | REPLACE_WITH_PBI_WORKSPACE_ID | Power BI workspace (group) id |
| flowlibs_PowerBIDatasetId | String | REPLACE_WITH_PBI_DATASET_ID | Power BI dataset to refresh |
| flowlibs_LeadershipEmail | String | ciso@contoso.com | Posture summary recipient |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Sentinel MCP (Preview) | shared_sentinelmcp | invokemcpdataexploration |
| Microsoft Dataverse | shared_commondataserviceforapps | CreateRecord |
| Power BI | shared_powerbi | RefreshDataset |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- SLA tracking
- Add MTTR/MTTA target columns and a Condition to flag breaches before the email.
- Noisy-rule tuning
- Extend the posture question to list specific rules to review, and break them onto their own dashboard tile.
- Per-team breakdown
- Parameterize the MCP question by analyst group and store a team column.
- Cadence
- Change the Daily_0700 recurrence (e.g. twice daily, or weekday-only via a weekDays schedule).
- Severity thresholds
- Add an Initialize Variable for a high-severity alert threshold and escalate via Teams when exceeded.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Correlation id
Minted in the first action, stamped on the row and email
EXPR.02MCP session capture
Captures the session id from the handshake header
EXPR.03MCP initialize body
queryRequest body for the initialize handshake
EXPR.04MCP tools/call body
queryRequest body for the posture rollup
EXPR.05Snapshot name
Snapshot row name
EXPR.06Metric read (with fallback)
Reads an untyped metric with a fallback
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.