Sentinel MCP Entity Enrichment on Demand
Exposed via a Teams message-action or request trigger, the flow takes an IP, user, host, or hash, asks the Sentinel MCP (Preview) for related signals, recent activity, and risk context, and returns a concise enrichment card to the analyst. Gives on-demand entity context without writing KQL.
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 gives security analysts on-demand entity context without writing KQL. It is triggered by an HTTP request (from a Teams message-action, a Power Automate button, or any caller) carrying a single indicator - an IP, user, host, or file hash. The flow opens a Microsoft Sentinel MCP (Preview) session, calls the configured enrichment tool, which generates and runs the underlying KQL, and returns a concise enrichment card to the analyst's Teams channel. Every lookup is written to a Dataverse audit table for governance.
Why it matters: Ad-hoc indicator lookups interrupt investigations and not every analyst writes KQL. A one-click enrichment over Sentinel data keeps analysts in flow while logging every query and requester for audit.
Build status: Built and verified - Flow Checker 0 errors / 0 warnings. Ships in the Off state (demo). Going live requires only connection authorization and env-var configuration.
Use Case
An analyst is triaging an alert and wants quick, conversational enrichment of an indicator (e.g. "what do we know about 10.0.4.7 in the last 14 days?"). They invoke the flow from Teams (or a button), pass the indicator, and get a formatted context card back plus a governed audit trail - no KQL required.
Flow Architecture
manual
Request (HTTP)Receives { entity, entityType, requestedBy }. entity is required.
Initialize variables
Initialize VariableCorrelation id, entity, entity type, requester, MCP tool name, lookback days, Teams group/channel ids, protocol version, session id
Initialize Mcp Session
Sentinel MCP (Preview) invokemcpdataexplorationJSON-RPC initialize handshake; opens an MCP session and captures Mcp-Session-Id
Enrich Entity Via Mcp
Sentinel MCP (Preview) invokemcpdataexplorationJSON-RPC tools/call; runs the enrichment tool for the entity (NL -> KQL -> results)
Compose Enrichment Card
ComposeBuilds the HTML context card (entity, requester, lookback, correlation id, MCP findings)
Reply To Teams
Teams PostMessageToConversationPosts the card to the analyst's channel
Log Enrichment
Dataverse CreateRecordWrites the audit row (entity, type, requester, correlation id, timestamp, raw result)
Respond To Caller
Response (HTTP)Returns 200 + the correlation id to the caller
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_SentinelMcpToolName | String | entity-enrichment | Name of the Sentinel MCP (Preview) tool invoked via tools/call. |
| flowlibs_LookbackDays | String | 14 | Activity lookback window (days) passed to the MCP tool. |
| flowlibs_LookupLogTable | String | flowlibs_enrichlogs | Entity-set name of the Dataverse audit table. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Target Teams team (group) id for the reply. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Target Teams channel id for the reply. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Microsoft Sentinel MCP (Preview) | shared_sentinelmcp | invokemcpdataexploration |
| Microsoft Teams | shared_teams | PostMessageToConversation |
| Microsoft Dataverse | shared_commondataserviceforapps | CreateRecord |
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.
- Watchlist add
- Branch after enrichment to add high-risk entities to a Sentinel watchlist via the MCP knowledge-objects endpoint.
- Threat-intel join
- Combine the MCP findings with an external TI feed before composing the card.
- Suggested containment
- Have the MCP (or an LLM step) propose containment actions and surface them as adaptive-card buttons.
- Entity-type routing
- Switch the MCP tool/arguments by entityType (IP vs. user vs. hash) for richer, type-specific lookups.
- RBAC + cost guard
- Restrict who can enrich which entities and reject expensive/long-window scans.
- Adaptive card reply
- Swap the HTML card for a Teams adaptive card with structured fields.
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.01Entity (from request)
Indicator value from the request body
EXPR.02Entity type (default IP)
Defaults to IP when not supplied
EXPR.03MCP initialize body
queryRequest body for the handshake
EXPR.04Capture session id
Captures the session id from the handshake header
EXPR.05MCP tools/call body
tools/call body with header Mcp-Session-Id
EXPR.06Read MCP result
Normalizes the untyped MCP result 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.