Add Start-FinOpsMultitool cmdlet — interactive GUI for tenant-wide FinOps scanning#2155
Add Start-FinOpsMultitool cmdlet — interactive GUI for tenant-wide FinOps scanning#2155z-larsen wants to merge 29 commits into
Conversation
… GUI Adds the Azure FinOps Multitool as a new PowerShell cmdlet in the FinOps toolkit. The Multitool is a WPF-based GUI that scans an Azure tenant for cost optimization, governance, and FinOps insights including cost trends, orphaned resources, idle VMs, tag hygiene, reservation/savings plan utilization, AHB opportunities, budgets, anomaly alerts, and policy compliance. - Public/Start-FinOpsMultitool.ps1: thin launcher cmdlet with comment-based help - Private/FinOpsMultitool/: full implementation (24 scanner modules, WPF GUI, Power BI template) - Tests/Unit/Start-FinOpsMultitool.Tests.ps1: Pester unit tests Windows-only (requires WPF support).
|
@microsoft-github-policy-service agree company="Microsoft" |
|
@z-larsen This is exciting! I don't know much about the tool, but would love to learn more. Can you join us at the contributor sync next Wednesday to share? |
|
Thanks, Michael! Would love to join. |
…info - Add contract-aware cost access warning banner (EA/MCA/CSP) on Overview tab - Add contract-specific billing tab messages when billing access unavailable - Add MG hierarchy unavailable info node in tree view with role guidance - Fix tag cost queries: use TagKey grouping type (not Tag/Dimension) - Add batched TagKey+TagValue query attempt with per-tag fallback - Clear skipSubs between batched and per-tag strategies - Add throttle pacing (2s every 2 queries) to avoid 429s - Add EA/MCA cost access detection in Get-CostData - Add runspace pool for API call parallelization
…mming across all tags
Add 11 FinOps-adjacent agent skills that route through the finops-multitool MCP server: power-bi-finops, cost-allocation, azure-policy-governance, unit-economics, finops-reporting, azure-workbooks-finops, forecasting-budgeting, anomaly-investigation, focus-data-quality, sustainability-carbon, and rate-optimization-portfolio. Add a skill-ecosystem hub table to the finops-multitool skill and include the MCP server, tests, and mcp.json config.
…istory throttle fix, Power BI template Rotate 'Crunching numbers/Fetching numbers/Organizing costs' during 429 backoff in REST and Resource Graph retries. Budget History reuses Cost Trend per-sub monthly data to avoid redundant throttled Cost Management queries. Includes accumulated multitool module updates and the New-PowerBITemplate generator.
|
@@z-larsen, I noticed you said you would update the changelog in a future PR, but this PR is going into the dev branch. All dev branch PRs must have changelog entries to be ready for the next release. Either update the PR to target a feature branch or add a changelog entry to this PR. |
|
@@z-larsen, I noticed you said you would update documentation in a future PR, but this PR is going into the dev branch. All dev branch PRs must have applicable documentation updated to be ready for the next release. Either update the PR to target a feature branch or update the documentation in this PR. |
🛠️ Description
Adds the Azure FinOps Multitool to the
FinOps toolkit. Discussed with @MSBrett, who suggested contributing the tool into the official
toolkit.
The Multitool scans an Azure tenant for cost optimization, governance, and FinOps insights —
cost trends, orphaned resources, idle VMs, tag hygiene, reservation/savings-plan utilization,
AHB opportunities, budgets, anomaly alerts, and policy compliance. All scans are read-only
(Reader / Cost Management Reader) and ground their findings in the customer's live resource state.
This PR delivers three interfaces over one shared scanner engine, so the same scan logic is
reused everywhere:
Start-FinOpsMultitool(WPF)Invoke-FinOpsMultitoolStart-McpServer.ps1Shared scanner modules (
modules/)24 modular scanners (one per category): orphaned resources, idle VMs, storage tier advice, AHB,
tag inventory/recommendations, policy inventory/recommendations, cost data/trend/by-tag,
resource costs, reservation advice, commitment utilization, savings realized, budget status,
anomaly alerts, Advisor optimization advice, billing structure, contract info, tenant hierarchy.
When a FinOps Hub is present, tag and cost-by-tag scans read pre-exported FOCUS data from Hub
storage instead of the Cost Management API (faster, no throttling).
MCP server + agent skills
Start-McpServer.ps1exposes the scanners as 21 read-only MCP tools (20scan_*plusrun_full_scan) over the2024-11-05MCP protocol via stdio..vscode/mcp.jsonregisters theserver for VS Code, and
Test-McpServer.ps1provides protocol-level unit tests.A companion agent-skill ecosystem (
src/templates/agent-skills/) teaches AI agents to usethe server proactively and to route findings into the wider FinOps practice. The
finops-multitoolskill acts as the hub, handing off to 11 FinOps-adjacent skills:power-bi-finops,cost-allocation,azure-policy-governance,unit-economics,finops-reporting,azure-workbooks-finops,forecasting-budgeting,anomaly-investigation,focus-data-quality,sustainability-carbon, andrate-optimization-portfolio.Files added / changed
src/powershell/Public/Start-FinOpsMultitool.ps1src/powershell/Private/FinOpsMultitool/Start-FinOpsMultitool.ps1src/powershell/Private/FinOpsMultitool/Invoke-FinOpsMultitool.ps1+FinOpsMultitool.psm1src/powershell/Private/FinOpsMultitool/Start-McpServer.ps1src/powershell/Private/FinOpsMultitool/Test-McpServer.ps1src/powershell/Private/FinOpsMultitool/modules/src/powershell/Private/FinOpsMultitool/gui/src/templates/agent-skills/finops-multitool/src/templates/agent-skills/{power-bi-finops, cost-allocation, …}/.vscode/mcp.jsonsrc/powershell/Tests/Unit/Start-FinOpsMultitool.Tests.ps1📷 Screenshots
Screenshots of the GUI and TUI are in the public repo README.
📋 Checklist
🔬 How did you test this change?
📦 Deploy to test?
🙋♀️ Do any of the following that apply?
📑 Did you update
docs/changelog.md?📖 Did you update documentation?