Skip to main content
Glama
dstreefkerk

ms-sentinel-mcp-server

by dstreefkerk
kql_examples.py3.9 kB
""" FILE: resources/kql_examples.py DESCRIPTION: Provides KQL examples resource for the MCP server. """ from mcp.server.fastmcp import FastMCP def register_resources(mcp: FastMCP): """Register KQL examples resources with the MCP server.""" @mcp.resource("sentinel://reference/kql/examples") def get_kql_examples() -> str: """Provides practical KQL query examples for Azure Monitor""" return """# Practical KQL Query Examples ## Security Examples ### Successful Logons ``` SecurityEvent | where TimeGenerated > ago(1h) | where EventID == 4624 | where AccountType =~ "user" | count ``` ### Failed Logons ``` SecurityEvent | where TimeGenerated > ago(1h) | where EventID == 4625 | where AccountType =~ "user" | count ``` ### Cloud Shell Activity ``` AzureActivity | where ResourceGroup startswith "CLOUD-SHELL" | where ResourceProviderValue == "MICROSOFT.STORAGE" | where ActivityStatusValue == "Start" | summarize count() by TimeGenerated, ResourceGroup, Caller, CallerIpAddress, ActivityStatusValue | extend AccountCustomEntity = Caller | extend IPCustomEntity = CallerIpAddress ``` ## Performance Examples ### Free Disk Space ``` Perf | where CounterName == "Free Megabytes" | where InstanceName matches regex "^[A-Z]:$" | extend FreeGB = CounterValue / 1024 | project Computer, CounterName, FreeGB ``` ### Find all computers reporting performance data ``` Perf | distinct Computer ``` ## Advanced Queries ### Login and Logout Correlation ``` let login = SecurityEvent | where TimeGenerated > ago(1h) | where EventID == '4624' | project Account, TargetLogonId, loginTime = TimeGenerated; let logout = SecurityEvent | where TimeGenerated > ago(1h) | where EventID == '4634' | project Account, TargetLogonId, logoutTime = TimeGenerated; login | join kind=leftouter logout on TargetLogonId | project Account, loginTime, logoutTime ``` ### Using Watchlists ``` let watchlist = (_GetWatchlist('FeodoTracker') | project DstIP); Heartbeat | where ComputerIP in (watchlist) ``` ### Visualising data with charts ``` SecurityEvent | where TimeGenerated > ago(7d) | summarize count() by bin(TimeGenerated, 1d) | render barchart ``` ## For more comprehensive KQL learning, refer to Rod Trent's "Must Learn KQL" series. """ @mcp.resource("sentinel://reference/kql/examples/security") def get_security_examples() -> str: """Provides security-focused KQL query examples""" return """# Security-Focused KQL Query Examples ## Account Activity Monitoring ### Successful Logons by Account ``` SecurityEvent | where EventID == 4624 | where TimeGenerated > ago(24h) | summarize count() by Account, Computer | sort by count_ desc ``` ### Failed Logon Attempts (Possible Brute Force) ``` SecurityEvent | where EventID == 4625 | where TimeGenerated > ago(24h) | summarize count() by Account, Computer, IpAddress | sort by count_ desc ``` ### New Process Creation ``` SecurityEvent | where EventID == 4688 | where TimeGenerated > ago(24h) | project TimeGenerated, Computer, Account, NewProcessName, CommandLine ``` ## Azure Activity Monitoring ### Admin Operations ``` AzureActivity | where OperationName contains "Microsoft.Authorization/roleAssignments" | where TimeGenerated > ago(7d) | project TimeGenerated, Caller, CallerIpAddress, OperationName, ResourceGroup ``` ### Security Group Changes ``` AzureActivity | where ResourceProvider == "Microsoft.Network" and ResourceType == "networkSecurityGroups" | where TimeGenerated > ago(7d) | project TimeGenerated, Caller, CallerIpAddress, OperationName, ResourceGroup ``` ## Microsoft Sentinel Specific ### Incidents Created ``` SecurityIncident | where TimeGenerated > ago(7d) | summarize count() by Title, Severity | sort by count_ desc ``` ### Alert Activity ``` SecurityAlert | where TimeGenerated > ago(7d) | summarize count() by AlertName, AlertSeverity | sort by count_ desc ``` """

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/dstreefkerk/ms-sentinel-mcp-server'

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