Skip to main content
Glama
alexwoods711

Azure Pricing MCP Server

by alexwoods711
README.md
# Azure Pricing MCP Server πŸ’°

A **Model Context Protocol (MCP)** server that provides AI assistants with real-time access to Azure retail pricing information. Query VM prices, compare costs across regions, estimate monthly bills, and discover available SKUsβ€”all through natural language.

---

## πŸš€ Quick Start

```bash
# Clone and setup
git clone https://github.com/alexwoods711/AzureMCPPricing.git
cd AzureMCPPricing
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt

# Test the server
python -m azure_pricing_mcp
```

Then configure your AI assistant. See [Integrations](#-integrations).

---

## ✨ Features

- **Price Search** - Query Azure prices with flexible filters
- **Price Comparison** - Compare costs across regions or SKUs
- **Cost Estimation** - Calculate monthly/yearly costs
- **Reserved Instances** - Compare RI pricing with break-even analysis
- **Region Recommendations** - Find the cheapest regions for any SKU
- **SKU Discovery** - Fuzzy matching for service names
- **Retirement Warnings** - Alerts for retiring VM SKUs
- **Spot VM Intelligence** - Eviction rates and price history (requires Azure auth)
- **Orphaned Resources** - Detect unused resources with real cost calculation (requires Azure auth)
- **PTU Sizing** - Estimate Provisioned Throughput Units for Azure OpenAI deployments
- **Databricks DBU Pricing** - Search DBU rates, estimate costs, compare workloads
- **GitHub Pricing** - Full GitHub pricing catalog + cost estimation (Plans, Copilot, Actions, Security)

πŸ“– **[Full feature details β†’](docs/FEATURES.md)**

---

## πŸ› οΈ Tools

19 tools available for AI assistants:

- `azure_price_search` - Search retail prices
- `azure_price_compare` - Compare across regions/SKUs
- `azure_ri_pricing` - Reserved Instance pricing
- `azure_cost_estimate` - Usage-based cost estimation
- `azure_region_recommend` - Find cheapest regions
- `azure_discover_skus` / `azure_sku_discovery` - SKU lookup
- `get_customer_discount` - Customer discount information
- `spot_eviction_rates` / `spot_price_history` / `simulate_eviction` - Spot VM tools
- `find_orphaned_resources` - Detect orphaned resources with cost analysis
- `azure_ptu_sizing` - Estimate PTUs for Azure OpenAI deployments
- `azure_network_cost_estimate` - Network cost planner (bandwidth tiers, NAT Gateway, Private Link)
- `databricks_dbu_pricing` / `databricks_cost_estimate` / `databricks_compare_workloads` - Databricks DBU pricing
- `github_pricing` / `github_cost_estimate` - GitHub pricing catalog and cost estimation

πŸ“– **[Tool documentation β†’](docs/TOOLS.md)**

---

## πŸ“‹ Installation

**Docker (Easiest):**
```bash
docker build -t azure-pricing-mcp .
docker run -i azure-pricing-mcp
```

**Python:**
```bash
pip install -r requirements.txt
```

πŸ“– **[Full installation guide β†’](INSTALL.md)**

---

## πŸ”Œ Integrations

Works with any MCP-compatible AI assistant:

- **VS Code** with GitHub Copilot
- **Claude Desktop**

πŸ“– **[Integration setup β†’](docs/INTEGRATIONS.md)**

---

## πŸ“ Project Structure

```
AzureMCPPricing/
β”œβ”€β”€ src/azure_pricing_mcp/    # Main package
β”‚   β”œβ”€β”€ server.py             # MCP server
β”‚   β”œβ”€β”€ handlers.py           # Tool handlers
β”‚   β”œβ”€β”€ client.py             # Azure API client
β”‚   β”œβ”€β”€ config.py             # Pricing data & constants
β”‚   β”œβ”€β”€ tools.py              # Core tool definitions
β”‚   β”œβ”€β”€ formatters.py         # Response formatters
β”‚   β”œβ”€β”€ models.py             # Data models
β”‚   β”œβ”€β”€ services/             # Business logic
β”‚   β”œβ”€β”€ databricks/           # Databricks DBU tools
β”‚   └── github_pricing/       # GitHub pricing tools
β”œβ”€β”€ tests/                    # Test suite (9 files, 236+ tests)
β”œβ”€β”€ docs/                     # Documentation
└── scripts/                  # Setup & debug scripts
```

πŸ“– **[Detailed structure β†’](docs/PROJECT_STRUCTURE.md)**

---

## πŸ”Œ API Reference

This server uses the [Azure Retail Prices API](https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices):

```
https://prices.azure.com/api/retail/prices
```

**No authentication required** - The Azure Retail Prices API is publicly accessible.

---

## 🀝 Contributing

We welcome contributions! See **[CONTRIBUTING.md](CONTRIBUTING.md)** for setup instructions, code style, and PR process.

---

## πŸ“š Documentation

| Document | Description |
|----------|-------------|
| [INSTALL.md](INSTALL.md) | Installation guide |
| [docs/FEATURES.md](docs/FEATURES.md) | Feature details |
| [docs/TOOLS.md](docs/TOOLS.md) | Tool documentation |
| [docs/INTEGRATIONS.md](docs/INTEGRATIONS.md) | VS Code & Claude setup |
| [docs/USAGE_EXAMPLES.md](docs/USAGE_EXAMPLES.md) | Detailed examples |
| [docs/ORPHANED_RESOURCES.md](docs/ORPHANED_RESOURCES.md) | Orphaned resources guide |
| [CHANGELOG.md](CHANGELOG.md) | Version history |

---

## πŸ“„ License

MIT License - see [LICENSE](LICENSE) for details.

---

## πŸ™ Acknowledgments

- [Model Context Protocol](https://modelcontextprotocol.io/)
- [Azure Retail Prices API](https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices)

---