Skip to main content
Glama
msftnadavbh

Azure Pricing MCP Server

by msftnadavbh

Azure Pricing MCP Server πŸ’°

Python 3.10+ MCP License: MIT Tests

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

# Clone and setup
git clone https://github.com/msftnadavbh/AzurePricingMCP.git
cd AzurePricingMCP
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.


Related MCP server: azure-pricing-mcp

✨ 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 β†’


πŸ› οΈ 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 β†’


πŸ“‹ Installation

Docker (Easiest):

docker build -t azure-pricing-mcp .
docker run -i azure-pricing-mcp

Python:

pip install -r requirements.txt

πŸ“– Full installation guide β†’


πŸ”Œ Integrations

Works with any MCP-compatible AI assistant:

  • VS Code with GitHub Copilot

  • Claude Desktop

πŸ“– Integration setup β†’


πŸ“ Project Structure

AzurePricingMCP/
β”œβ”€β”€ 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 β†’


πŸ”Œ API Reference

This server uses the Azure Retail Prices API:

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 for setup instructions, code style, and PR process.


πŸ“š Documentation

Document

Description

INSTALL.md

Installation guide

docs/FEATURES.md

Feature details

docs/TOOLS.md

Tool documentation

docs/INTEGRATIONS.md

VS Code & Claude setup

docs/USAGE_EXAMPLES.md

Detailed examples

docs/ORPHANED_RESOURCES.md

Orphaned resources guide

CHANGELOG.md

Version history


πŸ“„ License

MIT License - see LICENSE for details.


πŸ™ Acknowledgments


πŸ“¬ Support


Available Tools

13 tools
azure_cost_estimateC

Estimate Azure costs based on usage patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesAzure service name
sku_nameYesSKU name
regionYesAzure region
hours_per_monthNoExpected hours of usage per month (default: 730 for full month)
currency_codeNoCurrency code (default: USD)USD
discount_percentageNoDiscount percentage to apply to prices (e.g., 10 for 10% discount). If not specified and show_with_discount is false, no discount is applied. If show_with_discount is true, defaults to 10%.
show_with_discountNoSet to true to apply a discount; uses default 10% unless discount_percentage is explicitly specified.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Estimate' implies a read-only calculation, the description doesn't address important behavioral aspects like whether this requires authentication, what format the estimate returns, whether it's real-time or cached data, rate limits, or error conditions. The description is too minimal for a tool with 7 parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at just 7 words with zero wasted language. It's front-loaded with the core purpose and uses efficient phrasing. Every word earns its place, making it easy to parse while conveying the essential function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns (cost breakdown, total amount, comparison data), doesn't address authentication requirements, and provides no context about data sources or calculation methodology. The minimal description leaves too many operational questions unanswered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides no parameter-specific information beyond the generic 'based on usage patterns'. However, with 100% schema description coverage, all 7 parameters are well-documented in the schema itself with clear descriptions and defaults. The description adds no value beyond what's already in the structured schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Estimate Azure costs based on usage patterns', which includes a specific verb ('Estimate') and resource ('Azure costs'). However, it doesn't explicitly differentiate this cost estimation tool from sibling tools like azure_price_compare or azure_ri_pricing, which also deal with Azure pricing calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools focused on Azure pricing (azure_price_compare, azure_ri_pricing, azure_sku_discovery, etc.), there's no indication of when this specific cost estimation approach is preferred or what distinguishes it from other pricing-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_discover_skusC

Discover available SKUs for a specific Azure service

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesAzure service name
regionNoAzure region (optional)
price_typeNoPrice type (default: 'Consumption')Consumption
limitNoMaximum number of SKUs to return (default: 100)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool discovers SKUs but doesn't mention whether this is a read-only operation, if it requires authentication, rate limits, or what the output format looks like. For a tool with 4 parameters and no output schema, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that gets straight to the point without any wasted words. It's appropriately sized for the tool's complexity and front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what SKUs are, how results are structured, or provide context about Azure service naming conventions. For a discovery tool with multiple siblings, more contextual information would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description doesn't add any meaningful parameter semantics beyond what's in the schema (e.g., explaining what 'SKUs' are or how they relate to Azure services). The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('discover') and resource ('available SKUs for a specific Azure service'), making the purpose immediately understandable. However, it doesn't explicitly distinguish this tool from its sibling 'azure_sku_discovery', which appears to serve a similar function based on the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'azure_sku_discovery' or other Azure pricing-related siblings. It mentions a specific Azure service context but offers no exclusions, prerequisites, or comparison with other tools in the server.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_price_compareC

Compare Azure prices across regions or SKUs

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesAzure service name to compare
sku_nameNoSpecific SKU to compare (optional)
regionsNoList of regions to compare (if not provided, compares SKUs)
currency_codeNoCurrency code (default: USD)USD
discount_percentageNoDiscount percentage to apply to prices (e.g., 10 for 10% discount). If not specified and show_with_discount is false, no discount is applied. If show_with_discount is true, defaults to 10%.
show_with_discountNoSet to true to apply a discount; uses default 10% unless discount_percentage is explicitly specified.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'compare' suggests a read-only operation, it doesn't clarify whether this queries live pricing APIs, cached data, or requires authentication. It also doesn't mention rate limits, data freshness, or what format the comparison results take.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that immediately states the tool's core function. There's no wasted verbiage or unnecessary elaboration, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with no annotations and no output schema, the description is insufficient. It doesn't explain what the comparison output looks like, how results are structured, or provide context about data sources. The agent must rely entirely on the input schema without understanding the tool's behavior or results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds minimal value beyond the schema, only implying that regions and SKUs are the comparison dimensions. It doesn't explain the relationship between regions and SKU parameters or provide examples of valid service/SKU names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as comparing Azure prices across regions or SKUs, which is a specific verb+resource combination. However, it doesn't explicitly differentiate this tool from its siblings like azure_price_search or azure_ri_pricing, which likely have overlapping price-related functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With 12 sibling tools including azure_price_search, azure_ri_pricing, and azure_sku_discovery, the agent receives no help in selecting the appropriate price comparison tool for different scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_ptu_sizingA

Estimate required Provisioned Throughput Units (PTUs) for Azure OpenAI / AI Foundry model deployments. Calculates PTUs based on workload shape (RPM, input/output tokens, caching) with official rounding rules. Optionally estimates hourly/monthly cost via Azure Retail Prices API. Supports Global, Data Zone, and Regional Provisioned deployment types.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesModel identifier. Supported: gpt-5.2, gpt-5.2-codex, gpt-5.1, gpt-5.1-codex, gpt-5, gpt-5-mini, gpt-4.1, gpt-4.1-mini, gpt-4.1-nano, o3, o4-mini, gpt-4o, gpt-4o-mini, o3-mini, o1, Llama-3.3-70B-Instruct, DeepSeek-R1, DeepSeek-V3-0324, DeepSeek-R1-0528
deployment_typeYesProvisioned deployment type
rpmYesRequests per minute at peak workload
avg_input_tokensYesAverage input (prompt) tokens per request
avg_output_tokensYesAverage output (completion) tokens per request
cached_tokens_per_requestNoAverage cached tokens per request (deducted 100%% from utilization). Default: 0
include_costNoFetch live $/PTU/hr pricing from Azure Retail Prices API. Default: false
regionNoAzure region for cost lookup (e.g., 'eastus', 'westeurope'). Default: 'eastus'eastus
currency_codeNoCurrency code for pricing (default: 'USD')USD

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the calculation method ('official rounding rules'), mentions cost estimation as optional, and specifies supported deployment types. However, it doesn't address important behavioral aspects like whether this is a read-only operation, potential rate limits, authentication requirements, or what the output format looks like (though there's no output schema).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in three sentences: first states the core purpose, second explains the calculation method and optional features, third specifies deployment type support. Every sentence adds value with zero wasted words, and the most important information (what the tool does) comes first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no annotations, and no output schema, the description provides adequate but incomplete context. It covers the purpose, calculation method, and optional features well, but doesn't address output format, error conditions, or authentication requirements. Given the complexity and lack of structured metadata, the description should do more to compensate for these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly. The description adds some context about workload shape parameters (RPM, tokens, caching) and cost estimation, but doesn't provide additional semantic meaning beyond what's in the parameter descriptions. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Estimate required Provisioned Throughput Units'), identifies the target resource ('Azure OpenAI / AI Foundry model deployments'), and distinguishes from siblings by focusing on PTU sizing rather than cost analysis, SKU discovery, or other Azure operations. It specifies the calculation method ('based on workload shape with official rounding rules') and optional cost estimation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool: for estimating PTU requirements for Azure OpenAI/AI Foundry deployments with specific workload parameters. It mentions optional cost estimation via Azure Retail Prices API, which helps differentiate from pure cost tools. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_region_recommendB

Find the cheapest Azure regions for a given service and SKU. Dynamically discovers all available regions, compares prices, and returns ranked recommendations with savings percentages.

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesAzure service name (e.g., 'Virtual Machines', 'Azure App Service')
sku_nameYesSKU name to price across regions (e.g., 'D4s v3', 'P1v3')
top_nNoNumber of top recommendations to return (default: 10)
currency_codeNoCurrency code (default: USD)USD
discount_percentageNoDiscount percentage to apply to prices (e.g., 10 for 10% discount). If not specified and show_with_discount is false, no discount is applied. If show_with_discount is true, defaults to 10%.
show_with_discountNoSet to true to apply a discount; uses default 10% unless discount_percentage is explicitly specified.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions dynamic discovery and savings percentages, but lacks critical details: whether this requires authentication, rate limits, freshness of price data, whether it makes external API calls, or what format the ranked recommendations take. For a tool with 6 parameters and no annotation coverage, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that efficiently communicates the core functionality. It's appropriately sized for the tool's complexity, though it could potentially be more front-loaded by explicitly stating it's a price optimization tool earlier in the sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address authentication requirements, data freshness, error conditions, or the structure of returned recommendations. The agent would need to guess about critical behavioral aspects when invoking this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal value beyond the schema - it implies the tool uses these parameters for region comparison but doesn't provide additional context about parameter interactions or edge cases. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('find', 'discovers', 'compares', 'returns') and resources ('cheapest Azure regions', 'service and SKU'). It distinguishes from siblings by focusing on region-based price comparison rather than general cost estimation or SKU discovery.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its 11 siblings. While it mentions dynamic discovery and ranked recommendations, it doesn't specify scenarios where this is preferable to alternatives like azure_price_compare or azure_price_search, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_ri_pricingC

Get Reserved Instance pricing and savings analysis

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYesAzure service name (e.g., 'Virtual Machines')
sku_nameNoSKU name (e.g., 'D4s v3')
regionNoAzure region (e.g., 'eastus')
reservation_termNoReservation term ('1 Year' or '3 Years')
currency_codeNoCurrency code (default: USD)USD
compare_on_demandNoCompare with On-Demand prices to calculate savings (default: true)
limitNoMaximum number of results (default: 50)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Get' implies a read-only operation, it doesn't specify whether this requires authentication, has rate limits, returns paginated results, or provides detailed savings breakdowns. For a tool with 7 parameters and no annotation coverage, this is a significant gap in behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It's appropriately sized for the tool's complexity, with every part contributing directly to understanding what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 parameters, no annotations, no output schema), the description is incomplete. It lacks guidance on usage relative to siblings, behavioral details like authentication or rate limits, and any indication of return format or error handling. This leaves significant gaps for an agent to invoke the tool correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds no parameter-specific information beyond what's already in the input schema, which has 100% coverage with detailed descriptions for all 7 parameters. The baseline score of 3 reflects that the schema adequately documents parameters, but the description doesn't enhance understanding with additional context like typical use cases or parameter interactions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('Reserved Instance pricing and savings analysis'), making it immediately understandable. However, it doesn't explicitly differentiate this tool from its siblings like 'azure_price_compare' or 'azure_price_search', which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools related to Azure pricing and SKUs (e.g., 'azure_price_compare', 'azure_discover_skus'), there's no indication of context, prerequisites, or exclusions to help an agent choose appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

azure_sku_discoveryC

Discover available SKUs for Azure services with intelligent name matching

ParametersJSON Schema
NameRequiredDescriptionDefault
service_hintYesService name or description (e.g., 'app service', 'web app', 'vm', 'storage'). Supports fuzzy matching.
regionNoOptional Azure region to filter results
currency_codeNoCurrency code (default: USD)USD
limitNoMaximum number of results (default: 30)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'intelligent name matching,' which hints at fuzzy search behavior, but lacks details on permissions, rate limits, error handling, or output format. For a discovery tool with no annotation coverage, this is a significant gap in transparency about how the tool operates and what to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly communicates the tool's function and key feature ('intelligent name matching'), making it easy to parse and understand quickly. There's no wasted information or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of Azure SKU discovery, no annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list of SKUs with details), potential limitations, or how 'intelligent name matching' works in practice. For a tool with four parameters and no structured output guidance, more context is needed to ensure effective use by an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, providing clear details for all four parameters (e.g., 'service_hint' with fuzzy matching, optional 'region' filtering, defaults for 'currency_code' and 'limit'). The description adds minimal value beyond this, only implying the 'service_hint' parameter through 'intelligent name matching.' With high schema coverage, the baseline score of 3 is appropriate as the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Discover available SKUs for Azure services with intelligent name matching.' It specifies the verb ('discover'), resource ('SKUs for Azure services'), and a key capability ('intelligent name matching'). However, it doesn't explicitly differentiate from sibling tools like 'azure_discover_skus' or 'azure_price_search,' which appears to be a similar tool, leaving some ambiguity about uniqueness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With multiple sibling tools like 'azure_discover_skus' and 'azure_price_search' that might overlap in functionality, there's no indication of specific contexts, prerequisites, or exclusions. This lack of differentiation could lead to confusion for an AI agent in selecting the appropriate tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_orphaned_resourcesA

Detect orphaned Azure resources (unattached disks, NICs, public IPs, NSGs, empty App Service Plans) across subscriptions and compute their real historical cost via Azure Cost Management. Requires Azure authentication (az login or environment variables).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back for cost data (default: 60)
all_subscriptionsNoScan all accessible subscriptions (default: true). Set to false to scan only the first subscription.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds context beyond the input schema by specifying authentication requirements ('Requires Azure authentication'), the cost computation method ('via Azure Cost Management'), and the historical aspect ('real historical cost'), which are not covered in the schema. It does not fully detail output format or error handling, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first clause, followed by additional details in a single, efficient sentence. Every part earns its place by specifying resource types, cost computation, and authentication needs without redundancy or unnecessary elaboration, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (detecting multiple resource types and computing costs), no annotations, and no output schema, the description does a good job by covering purpose, scope, authentication, and cost method. However, it lacks details on output format (e.g., what data is returned) and potential limitations (e.g., rate limits or errors), which would be needed for full completeness in this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear documentation for both parameters ('days' and 'all_subscriptions'), including defaults. The description does not add any parameter-specific details beyond what the schema provides, such as explaining the implications of 'days' on cost accuracy or 'all_subscriptions' on performance. Thus, it meets the baseline of 3 without compensating for gaps, as there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('detect'), the target resources ('orphaned Azure resources'), and enumerates the resource types (unattached disks, NICs, public IPs, NSGs, empty App Service Plans). It also specifies the scope ('across subscriptions') and additional functionality ('compute their real historical cost via Azure Cost Management'), making it highly specific and distinct from sibling tools focused on pricing, SKUs, or recommendations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool by stating it detects orphaned resources and computes their historical cost, implying usage for cost optimization or cleanup. However, it does not explicitly mention when not to use it or name alternatives among the sibling tools, such as distinguishing from cost estimation or pricing tools, which would have earned a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_customer_discountB

Get customer discount information. Returns default 10% discount for all customers.

ParametersJSON Schema
NameRequiredDescriptionDefault
customer_idNoCustomer ID (optional, defaults to 'default' customer)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the return behavior ('Returns default 10% discount for all customers'), which is valuable context beyond the input schema. However, it doesn't cover other behavioral aspects like error handling, authentication needs, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that directly state the tool's function and return behavior. Every word earns its place, and it's front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations, no output schema, and a simple input schema, the description is minimally adequate. It explains what the tool does and the return value, but for a tool that seems mismatched with its Azure-focused siblings, more context about its role would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the input schema already documents the optional customer_id parameter. The description adds no additional parameter semantics beyond what's in the schema, but it implies the tool works with or without the parameter by mentioning 'all customers', which aligns with the schema's optional default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('customer discount information'), making it immediately understandable. However, it doesn't differentiate from sibling tools, which are all Azure-related while this tool appears to be customer-focused, so it misses explicit sibling distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives or in what context it's appropriate. Given the sibling tools are Azure cost/price-related, this tool seems out of place, but the description doesn't clarify its relationship or usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_evictionA

Simulate eviction of a Spot VM for testing application resilience. Requires Azure authentication with 'Virtual Machine Contributor' role. The VM will receive a 30-second eviction notice via Scheduled Events.

ParametersJSON Schema
NameRequiredDescriptionDefault
vm_resource_idYesFull Azure resource ID of the Spot VM (e.g., '/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vmName}')

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and discloses critical behavioral traits: it's a simulation (not actual destruction), requires specific Azure authentication, and triggers a 30-second eviction notice via Scheduled Events. However, it doesn't specify rate limits, error conditions, or what happens after the simulation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly front-loaded with purpose, followed by prerequisites and behavioral details in two efficient sentences with zero wasted words, making it immediately understandable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter simulation tool with no annotations or output schema, the description provides good context about purpose, prerequisites, and behavioral effects. However, it lacks details about response format or post-simulation state, leaving some gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents the single parameter. The description adds no additional parameter semantics beyond what's in the schema, maintaining the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('simulate eviction'), target resource ('Spot VM'), and purpose ('for testing application resilience'), distinguishing it from sibling tools focused on cost, pricing, or discovery rather than operational testing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('for testing application resilience') and provides prerequisites ('Requires Azure authentication with 'Virtual Machine Contributor' role'), but does not mention when not to use it or name specific alternatives among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spot_eviction_ratesA

Get Spot VM eviction rates for specified SKUs and regions. Requires Azure authentication (az login or environment variables). Returns eviction rate categories: 0-5%, 5-10%, 10-15%, 15-20%, 20%+.

ParametersJSON Schema
NameRequiredDescriptionDefault
skusYesList of VM SKU names (e.g., ['Standard_D2s_v4', 'Standard_D4s_v4'])
locationsYesList of Azure regions (e.g., ['eastus', 'westus2'])

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses authentication requirements ('Requires Azure authentication') and return format ('Returns eviction rate categories'), but does not cover other behavioral traits such as rate limits, error handling, or data freshness. The description adds some context but is incomplete for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by prerequisites and return details in two concise sentences. Every sentence earns its place by providing essential information without redundancy, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description partially compensates by explaining authentication and return categories, but it lacks details on output structure (e.g., format of returned data), error cases, or performance considerations. For a tool with 2 parameters and no structured output, it is adequate but has clear gaps in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('skus' and 'locations') with examples. The description does not add any meaning beyond what the schema provides, as it only repeats the parameter concepts without additional syntax or format details. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Get') and resource ('Spot VM eviction rates'), and distinguishes it from siblings by focusing on eviction rates rather than pricing, discovery, or simulation. It specifies the exact data returned (eviction rate categories), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Get Spot VM eviction rates for specified SKUs and regions'), but does not mention when not to use it or name specific alternatives among the siblings (e.g., 'spot_price_history' or 'simulate_eviction'). It provides clear context for usage but lacks explicit exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spot_price_historyA

Get Spot VM price history for a specific SKU and region. Requires Azure authentication (az login or environment variables). Returns up to 90 days of historical Spot pricing data.

ParametersJSON Schema
NameRequiredDescriptionDefault
skuYesVM SKU name (e.g., 'Standard_D2s_v4')
locationYesAzure region (e.g., 'eastus')
os_typeNoOperating system type ('linux' or 'windows')linux

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes authentication requirements ('Requires Azure authentication'), data scope ('Returns up to 90 days'), and the specific data type ('Spot pricing data'). It doesn't mention rate limits, error conditions, or response format details, but covers the essential operational context well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly concise with three tightly-packed sentences that each serve a distinct purpose: stating the tool's function, specifying authentication requirements, and defining the data scope. Every word earns its place with zero redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only data retrieval tool with 3 parameters and 100% schema coverage but no output schema, the description provides good context about authentication, data type, and temporal scope. It could be more complete by describing the response format or data structure, but covers the essential operational context adequately given the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with all parameters well-documented in the schema. The description adds minimal value beyond the schema by mentioning that parameters are for 'a specific SKU and region' and implying 'os_type' through context, but doesn't provide additional semantic context or usage examples beyond what's already in the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get Spot VM price history'), resource ('for a specific SKU and region'), and scope ('up to 90 days of historical Spot pricing data'). It distinguishes from siblings like 'azure_price_search' or 'azure_price_compare' by focusing specifically on historical Spot pricing data rather than current pricing or comparisons.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'Requires Azure authentication' and the data type ('Spot VM price history'), but doesn't explicitly state when to use this tool versus alternatives like 'azure_price_search' or 'spot_eviction_rates'. It provides authentication prerequisites but no comparative guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 13 tool updatesv3.3.0
    • First observedazure_cost_estimate
    • First observedazure_discover_skus
    • First observedazure_price_compare
    • First observedazure_price_search
    • First observedazure_ptu_sizing
    • First observedazure_region_recommend
    • First observedazure_ri_pricing
    • First observedazure_sku_discovery
    • First observedfind_orphaned_resources
    • First observedget_customer_discount
    • First observedsimulate_eviction
    • First observedspot_eviction_rates
    • First observedspot_price_history

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have distinct purposes, such as cost estimation, SKU discovery, and spot VM analysis, but there is some overlap between azure_discover_skus and azure_sku_discovery, which could cause confusion as both handle SKU discovery with similar descriptions. The other tools are well-differentiated for Azure pricing tasks.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a clear 'azure_' prefix, making them predictable and easy to parse. The naming convention is uniform across all 13 tools, enhancing readability and coherence.

Tool Count5/5

With 13 tools, the server is well-scoped for Azure pricing and cost management, covering key areas like cost estimation, price comparison, SKU discovery, and spot VM analysis. Each tool serves a specific function without bloat, aligning well with the domain's complexity.

Completeness4/5

The tool set provides comprehensive coverage for Azure pricing, including cost estimation, price comparison, SKU discovery, and spot VM management. Minor gaps exist, such as lack of tools for budget alerts or detailed discount management beyond the basic get_customer_discount, but core workflows are well-supported.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables querying Azure retail pricing information, comparing costs across regions and SKUs, estimating usage-based expenses, and discovering Azure services with savings plan information through the Azure Retail Prices API.
    16
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLMs to query Azure service pricing via the public Azure Retail Prices API, with tools for searching prices, estimating costs, comparing regions, and listing services.
    5
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to parse multi-cloud infrastructure-as-code files, query real-time pricing from AWS, Azure, and GCP, and generate cost estimates and comparison reports.
    39
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Provides Oracle Cloud Infrastructure pricing data to AI assistants, enabling cost estimation, shape comparison, and real-time pricing queries.
    45
    62
    5
    Apache 2.0

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/msftnadavbh/AzurePricingMCP'

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