AI-powered PM and DRI assistant for Azure networking services — built on VS Code + GitHub Copilot Chat with 14 MCP servers for live data access to Kusto, Geneva/MDM, ICM, Azure DevOps, Grafana, and competitive intelligence.
Use it for Azure Front Door, Application Gateway, Load Balancer, VPN Gateway, ExpressRoute, Azure Firewall, Private Link, Virtual Network, NAT Gateway, DNS, Traffic Manager, Bastion, DDoS, WAF, Virtual WAN, Network Watcher, and other Azure networking services with Kusto and MDM telemetry.
The repository ships two Copilot agents, @pmagent and @dri. Each agent reads markdown skills on demand from .github/skills/ and routes requests to the right MCP servers for Kusto, MDM, ICM, Azure DevOps, documentation, and report generation.
These skills are available to both PM and DRI workflows.
| Skill | Description |
|---|---|
kusto-queries |
Kusto query patterns, schema checks, and cluster/database routing |
mdm-queries |
Geneva/MDM metric query patterns and account reference |
metric-visualization |
Metric chart rendering with Grafana links |
code-search |
Azure DevOps code search across Azure Networking repositories |
wiki-search |
Azure DevOps wiki lookup for TSGs, playbooks, and operational docs |
Use @pmagent for product planning, fleet analytics, customer reporting, executive updates, competitive analysis, and customer-ready artifacts.
| Skill | Description |
|---|---|
fleet-sampling |
Statistically rigorous fleet distribution analysis with sampling methodology and confidence bands |
fleet-trends |
Period-over-period comparisons for growth, decline, region shifts, SKU migration, and churn |
customer-report |
Named-customer Azure Networking usage, traffic profile, feature adoption, risk, and recommendation reports |
customer-comms |
Customer-facing PIRs, incident notifications, maintenance notices, and escalation responses |
wbr |
Weekly Business Review covering fleet health, incidents, trends, SLI, deployments, and action items |
exec-brief |
One-page executive summaries with headline metric, implication, and recommendation |
prd |
Data-backed Product Requirements Documents grounded in fleet impact and market context |
analysis |
Competitive and strategic analysis, including feature gaps, comparison matrices, pricing/TCO, and market research |
diagnostic |
DRI-equivalent triage, investigation, mitigation guidance, and RCA from the PM agent |
feature-priority |
Weighted feature prioritization from community signal, competitive gap, fleet impact, and customer demand |
churn-analysis |
Multi-signal churn risk scoring across Azure networking services and subscriptions |
newsletter |
Periodic Azure Networking updates for leadership, engineering, and field teams |
report-generation |
Markdown-to-docx, pptx, and HTML report generation using the existing investigation scripts |
portal-mock |
Azure portal blade mockups matching Fluent UI design language |
customer-scenario-builder |
Customer scenario synthesis from emails, chats, slides, and briefs with PowerPoint or email output |
rca-template |
Structured RCA document format reused by PM and DRI outputs |
Use @dri for on-call incident response across Azure networking services.
| Skill | Description |
|---|---|
incident-triage |
Queue prioritization by severity, impact, age, SLA risk, and escalation pressure |
incident-analysis |
Metrics-first incident investigation workflow with MDM, Kusto, timeline, and evidence capture |
mitigation-playbook |
Mitigation guidance, operational playbooks, approval boundaries, and risk notes |
rca-template |
Structured RCA document format for root cause, timeline, contributing factors, and prevention items |
Every data-backed answer should include the exact Kusto/MDM queries used, sample sizes, and confidence bands where applicable.
- VS Code with GitHub Copilot Chat extension
- Copilot subscription (Business or Enterprise)
- Azure CLI authenticated (
az login) for Kusto/MDM/ICM access - uv/uvx installed (Astral) for ADX, fetch, AWS docs, GCP docs, and Grafana MCP servers
git clone https://github.com/anshuv-mfst/PM-AIDE-Agent.git
cd pm-aide-agent
code .Windows (PowerShell):
.\scripts\install-mcp-servers.ps1Linux/macOS:
chmod +x scripts/install-mcp-servers.sh
./scripts/install-mcp-servers.shHTTP-based servers (ICM, Microsoft Docs) are cloud-hosted — no local install needed.
az loginMCP servers don't auto-start. Start them manually:
Ctrl+Shift+P→ MCP: List Servers- Click Start on each server (at minimum:
adx,mdm,icm)
You can also open
.vscode/mcp.jsonand click the ▶ Start button above each server.
- Open GitHub Copilot Chat (
Ctrl+Shift+I) - Type
@pmagentfollowed by your request:
@pmagent create PRD for mTLS passthrough
@pmagent competitive analysis Azure Front Door vs CloudFront — here are docs: https://docs.aws.amazon.com/...
@pmagent customer report for T-Mobile
@pmagent what % of Azure Front Door profiles serve less than 25 RPS?
@pmagent generate WBR
@pmagent exec summary for VP
@pmagent draft PIR for incident 795708404
@pmagent investigate incident 795708404
@pmagent mock the portal blade for mTLS passthrough settings
@pmagent create PRD for HTTP/3, compare with [URL1] [URL2], use this template [URL3]
The agent reads skills on demand from .github/skills/ and routes queries to the appropriate MCP servers automatically.
You can provide your own templates or reference material:
@pmagent create PRD for mTLS passthrough using this template: ./my-prd-template.md
@pmagent compare Azure Load Balancer with AWS NLB — use these docs:
https://docs.aws.amazon.com/elasticloadbalancing/
https://cloud.google.com/load-balancing/docs
@pmagent draft PIR using this format: https://internal.wiki/pir-template
@pmagent create PRD for HTTP/3, compare with these competitors [URL1] [URL2], use template [URL3]
The agent will:
- Fetch URLs — retrieve content from provided links
- Extract structure — use custom templates instead of defaults
- Incorporate data — weave competitor/reference info into the output
- Ground in fleet data — always add Kusto/MDM evidence for quantified impact
Configured in .vscode/mcp.json:
| Server | Purpose |
|---|---|
adx |
Kusto queries (logs, fleet inventory) |
mdm |
Geneva/MDM metrics (TotalRequests, CPU, connections, charts) |
appgw |
Bundled example service-specific MCP tools for Application Gateway |
icm |
ICM incident management |
grafana |
Grafana dashboard links and metric visualization |
enghub |
Engineering Hub integration |
workiq |
WorkIQ integration |
azure-devops-mcp |
Code search, wiki search, work items |
azure |
Azure resource search and documentation |
microsoftdocs |
Microsoft Learn documentation search |
fetch |
General web page fetching |
github |
GitHub API access (requires GITHUB_TOKEN env var) |
aws-docs |
AWS documentation search — competitive analysis (no credentials needed) |
gcp-docs |
GCP documentation search — competitive analysis (no credentials needed) |
.github/
├── agents/
│ ├── pmagent.agent.md # PM agent definition
│ └── dri.agent.md # DRI on-call incident response agent
├── skills/ # Domain knowledge (read on-demand by agent)
│ ├── fleet-sampling/ # Statistical fleet distribution analysis
│ ├── fleet-trends/ # MoM / region / SKU comparisons
│ ├── customer-report/ # Named-customer usage reports
│ ├── customer-comms/ # PIR, notifications, escalation responses
│ ├── customer-scenario-builder/ # Scenario synthesis from emails/chats/slides
│ ├── wbr/ # Weekly Business Review
│ ├── exec-brief/ # One-page exec summaries
│ ├── prd/ # Product Requirements Documents
│ ├── analysis/ # Competitive & strategic analysis
│ ├── diagnostic/ # Incident triage, investigation, mitigation, RCA
│ ├── feature-priority/ # Feature prioritization using weighted scoring
│ ├── newsletter/ # Monthly/periodic Azure Networking updates
│ ├── report-generation/ # docx / pptx / html output
│ ├── rca-template/ # RCA document structure
│ ├── kusto-queries/ # Kusto query patterns + cluster reference
│ ├── mdm-queries/ # Geneva/MDM metric query patterns
│ ├── metric-visualization/ # Chart rendering + Grafana integration
│ ├── churn-analysis/ # Cross-service churn risk scoring
│ ├── portal-mock/ # Azure portal blade mockups (Fluent UI)
│ ├── code-search/ # Azure DevOps code search
│ ├── wiki-search/ # TSG / playbook wiki lookup
│ ├── incident-triage/ # DRI queue triage skill
│ ├── incident-analysis/ # DRI investigation skill
│ ├── mitigation-playbook/ # DRI mitigation guidance
│ ├── docx-writer/ # Word writer utility skill
│ ├── ppt-creator/ # PowerPoint writer utility skill
│ ├── xlsx-writer/ # Excel writer utility skill
│ ├── chart-creator/ # Chart image generation utility skill
│ └── adaptive-cards/ # Adaptive Card artifact generation
└── copilot-instructions.md # Global agent instructions
.vscode/
└── mcp.json # MCP server configuration (14 servers)
dashboards/
├── churn-risk-dashboard.html # Customer Churn Risk Dashboard (React SPA)
├── func/ # Azure Functions for dashboard data pipeline
├── infra/ # Bicep for Azure Container Apps deployment
└── azure.yaml # azd deployment config
investigations/
├── *.md # Investigation outputs (RPS methodology, customer reports, etc.)
└── generate_*.py # Report generators (docx, pptx, html)
The PM Aide Agent is designed for Azure networking services broadly. Service coverage is driven by markdown skills, Kusto routing, MDM account mappings, and optional service-specific MCP tools.
Step 1 — Update Kusto cluster/database routing:
Edit .github/skills/kusto-queries/CLUSTER_REFERENCE.md to add your service's Kusto clusters and tables.
## VPN Gateway
- **Cluster:** `https://yourcluster.kusto.windows.net`
- **Database:** `VpnGatewayManager`
- **Key tables:** `VpnGatewaysExtendedLatestProd`, `VpnTunnelEvents`Step 2 — Update MDM account/namespace routing:
Edit .github/skills/mdm-queries/ACCOUNT_REFERENCE.md to add your service's Geneva accounts.
## VPN Gateway
- **Account:** `VpnGWT`
- **Namespace:** `Shoebox`
- **Key metrics:** `TunnelBandwidth`, `TunnelEgressBytes`, `TunnelIngressBytes`Step 3 — Create service-specific skills:
Add new skill folders under .github/skills/ with a SKILL.md describing the query patterns, telemetry sources, and domain knowledge for your service.
.github/skills/
├── vpn-fleet-sampling/ # VPN Gateway fleet distribution
├── vnet-topology/ # VNet connectivity and peering analysis
├── expressroute-health/ # ExpressRoute circuit health and metrics
└── lb-fleet-trends/ # Load Balancer fleet trends
Step 4 — Register skills in the agent definition:
Add your new skills to .github/agents/pmagent.agent.md:
## Task N: VPN Fleet Distribution
> **READ**: `.github/skills/vpn-fleet-sampling/SKILL.md`
Use to analyze VPN Gateway fleet RPS/bandwidth distribution using hash sampling.Step 5 — Add MCP servers (if needed):
If your service has a dedicated MCP server, add it to .vscode/mcp.json. Otherwise, the existing adx and mdm servers work for Azure networking services with Kusto/MDM access.
| Service | Kusto Data | MDM Metrics | Ready to Extend |
|---|---|---|---|
| VPN Gateway | VpnGatewayManager | VpnGWT/Shoebox | Yes |
| Virtual Network | VNetManager | VNetMetrics | Yes |
| ExpressRoute | ExpressRouteManager | ErGWT/Shoebox | Yes |
| Load Balancer | LBManager | LBGWT/Shoebox | Yes |
| Azure Firewall | AzFWManager | AzFW/Shoebox | Yes |
| Front Door | FrontDoorManager | FdGWT/Shoebox | Yes |
| Private Link | PrivateLinkManager | PLMetrics | Yes |
| Any Azure networking service with Kusto + MDM | ✓ | ✓ | ✓ |
Key insight: The agent's skills are just markdown files with query patterns and domain knowledge. Most service onboarding is skill and routing work; dedicated MCP code is optional.
The repo also ships a dri agent (.github/agents/dri.agent.md) for on-call incident triage, investigation, and mitigation. Select dri from the agent dropdown when you need real-time incident response instead of PM analytics.
The following 14 MCP servers are configured in .vscode/mcp.json:
| Server | Purpose | Type | Requires |
|---|---|---|---|
| mdm | Geneva/MDM metric queries | stdio (dnx) |
.NET SDK + DNX |
| appgw | Bundled Application Gateway MCP tools used as one service-specific example | stdio (dotnet run) |
.NET SDK |
| adx | Kusto queries against hybridnetworking cluster | stdio (uvx) |
Python + uv |
| icm | Incident management (IcM) integration | HTTP | None (cloud-hosted) |
| grafana | Grafana dashboard links and metric visualization | stdio (uvx) |
Python + uv |
| enghub | Engineering Hub (eng.ms docs) | stdio (npx) |
Node.js 18+ + gh CLI |
| workiq | Microsoft 365 Copilot / Work IQ | stdio (npx) |
Node.js 18+ |
| azure-devops | Azure DevOps integration (code search, wiki, work items) | stdio (npx) |
Node.js 18+ |
| azure | Azure resource management | stdio (dnx) |
.NET SDK + DNX |
| microsoftdocs | Microsoft Learn documentation search | HTTP | None (cloud-hosted) |
| fetch | General web page fetching | stdio (uvx) |
Python + uv |
| github | GitHub API access (issues, PRs, repos) | stdio (npx) |
Node.js 18+ + GITHUB_TOKEN |
| aws-docs | AWS documentation search — competitive analysis | stdio (uvx) |
Python + uv |
| gcp-docs | GCP documentation search — competitive analysis | stdio (uvx) |
Python + uv |
If the installation scripts don't work for your environment, you can install the dependencies manually.
| Dependency | Required For | Install |
|---|---|---|
| Node.js 18+ | WorkIQ, Azure DevOps, EngHub, GitHub | nodejs.org |
| uv | ADX (Kusto), fetch, Grafana, AWS docs, GCP docs | powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" |
| .NET SDK 8+ | Azure MCP, MDM MCP | dot.net/download |
| DNX | Azure MCP, MDM MCP | dotnet tool install -g Microsoft.DotNet.Tools.Dnx |
# MDM (Geneva Metrics) - requires .NET SDK + DNX
dnx SdnPubSub-GenevaMCP --prerelease --interactive --yes \
--source https://msazure.pkgs.visualstudio.com/One/_packaging/networking-madari-Consumption/nuget/v3/index.json
# ADX (Kusto) - requires uv
uvx microsoft-fabric-rti-mcp --stdio
# WorkIQ - auto-downloads via npx
npx -y @microsoft/workiq mcp
# Azure DevOps - auto-downloads via npx
npx -y @azure-devops/mcp@latest
# Azure MCP - requires .NET SDK + DNX
dnx Azure.Mcp@2.0.0-beta.13 -- server startThese servers are cloud-hosted and require no local installation:
- ICM:
https://icm-mcp-prod.azure-api.net/v1/ - Microsoft Docs:
https://learn.microsoft.com/api/mcp
# Fetch (web page fetching) - requires uv
uvx mcp-server-fetch
# GitHub - requires Node.js + GITHUB_TOKEN env var
npx -y @modelcontextprotocol/server-github
# AWS Documentation - competitive analysis (no AWS credentials needed)
uvx awslabs.aws-documentation-mcp-server@latest
# GCP Documentation - competitive analysis (no GCP credentials needed)
uvx cloud-run-mcp -- docs
# Grafana - requires uv
uvx mcp-grafana
# EngHub - requires Node.js + gh CLI
npx -y enghub-mcp
⚠️ Important: Choose the right agent in Copilot Chat before running commands:
- Use @pmagent for product management analytics, strategy, reports, and scenario outputs.
- Use @dri for incident triage, investigation, mitigation guidance, and RCA.
triage the queue
or use the slash command:
/triage
The agent will:
- Fetch active incidents from ICM
- Score by severity, impact, age, and SLA risk
- Present prioritized queue with recommendations
investigate 123456
or use the slash command:
/investigate 123456
The agent will:
- Extract identifiers from incident
- Query relevant telemetry sources (metrics first, then logs)
- Build chronological timeline
- Save findings to
investigations/123456.md
how do I mitigate 123456?
or use the slash command:
/mitigate 123456
The agent will:
- Identify the failure pattern
- Present mitigation options with risk levels
generate RCA for 123456
or use the slash command:
/rca 123456
The agent will generate a structured RCA document in Markdown format.
See CONTRIBUTING.md for guidelines on:
- Adding new failure patterns
- Adding Kusto tables/functions
- Updating database routing
- Testing changes
- Add more kusto queries to enhance the incident analysis
- Use ADO wiki search to augment mitigation steps, augmenting any TSGs added to ICM
- Use ADO code search MCP to add more context using deployment version and logs
- Refactor into a distributable executable (via Copilot SDK) or standalone web interface, or Teams bot