Skip to main content
Glama
MO2k4

azure-cost-mcp

by MO2k4

azure-cost-mcp

CI

An MCP server that gives Claude live access to Azure pricing and cost data — retail prices, VM comparisons, reservation analysis, architecture estimates, and actual subscription spend.

What it does

Nine tools across two API groups:

Tool

Description

Auth required

azure_search_prices

Search Azure retail prices with OData filters

No

azure_compare_vm_prices

Compare VM SKUs across regions (monthly matrix)

No

azure_find_cheapest_region

Find cheapest regions for a given SKU

No

azure_compare_reservation_vs_payg

PAYG vs 1-yr / 3-yr reservation with break-even

No

azure_estimate_architecture_cost

Estimate multi-component architecture monthly cost

No

azure_query_costs

Query actual subscription spend (group by service, resource group, etc.)

Yes

azure_query_costs_by_resource

Top-N resources by spend with % of total

Yes

azure_get_cost_forecast

Cost forecast for a period

Yes

azure_list_budgets

List budgets with CRITICAL / WARNING / OK status

Yes

Related MCP server: cloudscope-mcp

Prerequisites

  • Node.js 20+

  • npm

Build

npm install
npm run build

Azure setup (for authenticated tools)

Create a service principal and assign the Cost Management Reader role:

# Create service principal
az ad sp create-for-rbac --name azure-cost-mcp --role "Cost Management Reader" \
  --scopes /subscriptions/<SUBSCRIPTION_ID>

# Output includes appId (clientId), password (clientSecret), tenant (tenantId)

Claude Desktop configuration

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "azure-cost": {
      "command": "node",
      "args": ["/absolute/path/to/azure-cost-mcp/dist/index.js"],
      "env": {
        "AZURE_TENANT_ID": "...",
        "AZURE_CLIENT_ID": "...",
        "AZURE_CLIENT_SECRET": "...",
        "AZURE_SUBSCRIPTION_ID": "..."
      }
    }
  }
}

The retail tools work without credentials. Cost Management tools will return setup instructions if credentials are missing.

Environment variables

Variable

Required

Description

AZURE_TENANT_ID

For auth tools

Azure AD tenant ID

AZURE_CLIENT_ID

For auth tools

Service principal application ID

AZURE_CLIENT_SECRET

For auth tools

Service principal secret

AZURE_SUBSCRIPTION_ID

For auth tools

Subscription to query

AZURE_RETAIL_DEFAULT_CURRENCY

No

Default currency (default: USD)

Companion skill

A Claude Code skill at ~/.claude/skills/azure-cost.md encodes tool routing rules, the reservation comparison rule, output conventions, and graceful degradation guidance. Install it by copying skills/azure-cost.md from this repository to ~/.claude/skills/.

Development

npm test            # run tests
npm run test:watch  # watch mode
npm run lint        # ESLint
npm run format      # Prettier

Available Tools

9 tools
azure_compare_reservation_vs_paygA

Compare pay-as-you-go vs 1-year and 3-year reservation pricing for a VM SKU. Always call this for workloads expected to run >6 months.

ParametersJSON Schema
NameRequiredDescriptionDefault
armSkuNameYes
currencyCodeNoUSD
armRegionNameYes
response_formatNomarkdown

TDQS

A3.8/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 behavioral burden. It correctly indicates a read-only comparison and nothing destructive is implied, but it does not disclose output shape, data source, or limitations such as relying on list prices rather than negotiated rates.

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?

Two concise sentences with no filler: the core action is front-loaded, and the usage trigger follows immediately. Every word earns its place.

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?

The tool is relatively simple and the input schema covers required fields and defaults, but there is no output schema and the description does not state what the comparison returns or how results are presented. This leaves a moderate gap in call expectations.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only mentions 'VM SKU' rather than explaining armSkuName, armRegionName, currencyCode, or response_format. The description therefore does not compensate for the missing parameter documentation.

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 uses a specific verb ('Compare') and names the exact objects compared: pay-as-you-go vs 1-year and3-year reservation pricing for a VM SKU. This clearly distinguishes it from sibling tools such as azure_compare_vm_prices, which suggests a different kind of comparison.

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 gives an explicit selection rule: always call this tool for workloads expected to run longer than 6 months. It does not name sibling alternatives or describe when not to use it, so it falls short of full routing guidance.

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

azure_compare_vm_pricesA

Compare VM SKUs across regions. Always call azure_compare_reservation_vs_payg after for workloads running >6 months.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionsYesarmRegionName values, e.g. ["eastus", "westeurope"]
skuNamesYesarmSkuName values, e.g. ["Standard_D2s_v5"]
currencyCodeNoUSD
response_formatNomarkdown

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only says the tool compares VM SKUs and implies a follow-up call; it does not state whether the operation is read-only, what output format to expect, how results are ordered, or any side effects/limitations.

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 two short sentences that waste no words. The primary purpose is front-loaded, and the critical follow-up instruction is concise and actionable.

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 straightforward read-only comparison tool, the description is serviceable: it names the action, the key inputs (VM SKUs, regions), and a necessary follow-up. However, with no output schema and no annotations, it omits return-value semantics, output ordering, and any caveats about pricing data completeness or regional availability.

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 already documents the two required parameters with examples and provides an enum/default for response_format. The description adds no parameter-specific detail. With only 50% schema coverage, optional parameters like currencyCode rely on naming and defaults, but this is acceptable for a simple compare tool.

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 states a specific action and resource: 'Compare VM SKUs across regions.' This clearly conveys the tool's core function and distinguishes it from the reservation-vs-payg follow-up tool, though it does not explicitly contrast it with sibling search/find-cheapest tools.

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 workflow guidance: 'Always call azure_compare_reservation_vs_payg after for workloads running >6 months.' This gives a concrete condition for using a sibling tool. However, it does not explain when to choose this tool over azure_search_prices or azure_find_cheapest_region.

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

azure_estimate_architecture_costA

Estimate monthly and annual cost for a multi-component Azure architecture. Resolves prices in parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentsYes
currencyCodeNoUSD
response_formatNomarkdown
includeReservationAlternativeNo

TDQS

A3.7/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 burden of behavioral disclosure. It conveys that this is a compute/estimate operation rather than a mutation and adds the behavioral detail 'Resolves prices in parallel.' However, it does not disclose response shape, auth requirements, or failure behavior.

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 two short sentences with the primary purpose front-loaded. The parallel-resolution note is minor but not wasteful, making the definition appropriately concise.

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?

With four top-level parameters, nested component objects, no annotations, and no output schema, the description is too high-level. It omits guidance on required SKU/region inputs, reservation vs consumption pricing, currency handling, and response format selection.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no parameter-level meaning. It does not explain the components array requirements, priceType, currency, response_format, or includeReservationAlternative, so it fails to compensate for the low schema coverage.

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 states a specific verb ('Estimate') and resource ('multi-component Azure architecture') with a clear monthly/annual scope. This differentiates it from sibling tools focused on single price lookups, VM comparisons, actual cost queries, or budgets.

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: use when an aggregate monthly/annual cost estimate for a multi-component Azure architecture is needed. It does not explicitly name alternatives or exclusions, so it stops short of full routing guidance.

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

azure_find_cheapest_regionB

Find the cheapest Azure regions for a given VM SKU. Returns top N sorted by price.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNo
priceTypeNoConsumption
armSkuNameYes
currencyCodeNoUSD
response_formatNomarkdown

TDQS

B3.3/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 behavioral disclosure burden. It does reveal that the result is a top-N, price-sorted list, which signals a read-only lookup, but it does not disclose pricing basis, units, availability caveats, or the concrete response shape beyond the sorting.

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 two short sentences with no redundant wording. The core purpose is front-loaded and the output behavior is stated concisely in the second sentence.

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?

The tool has five parameters and no output schema, yet the description covers only the high-level purpose and top-N ordering. The schema supplies defaults and enums, which helps minimally, but the description leaves out output-format expectations and does not clarify why it should be selected over the closely related pricing siblings.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It only maps 'VM SKU' to armSkuName and 'top N' to topN; it adds no meaning for priceType, currencyCode, or response_format. The schema's defaults and enums provide some structure, but the description does not explain their intended use.

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 states a specific action — finding the cheapest Azure regions — scoped to a given VM SKU, and notes that it returns top N results sorted by price. This is clear and distinct in substance, but it does not explicitly differentiate from siblings like azure_search_prices or azure_compare_vm_prices.

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 phrase 'for a given VM SKU' implies the intended use case: select this tool when you need the cheapest regions for one SKU. However, there is no explicit guidance on when not to use it or which sibling tool to prefer for related scenarios such as comparing multiple SKUs or pricing models.

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

azure_get_cost_forecastC

Retrieve Azure cost forecast for a period. Requires Cost Management credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNo
startDateNo
timeframeNoMonthToDate
granularityNoDaily
response_formatNomarkdown

TDQS

C2.6/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 the Cost Management credential requirement, which is useful, but it does not state whether the operation is read-only, how the forecast is calculated, what response formats are produced, or whether there are rate limits or other side effects.

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 two short sentences with no filler, and the primary action is front-loaded. It is concise, though the brevity borders on under-specification rather than economical completeness.

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?

With five parameters, no output schema, no annotations, and 0% schema descriptions, this single-sentence description is not enough for an agent to call the tool correctly. It provides only a basic purpose and one credential prerequisite, leaving parameter semantics, return behavior, and selection criteria unaddressed.

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

Parameters1/5

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

Schema coverage is 0%, so the description must compensate for undocumented parameters. It does not: none of startDate, endDate, timeframe, granularity, or response_format are explained beyond the vague phrase 'for a period.' The agent gets no added meaning about required formats, defaults, or valid combinations.

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 uses a specific verb ('Retrieve') and resource ('Azure cost forecast') plus a time scope ('for a period'). It is clear about the core function, though it does not explicitly contrast itself with sibling tools like azure_query_costs.

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?

There is no guidance on when to use this tool versus alternatives such as azure_query_costs or azure_estimate_architecture_cost. The only context provided is the credential requirement, which is not enough to help an agent select among the eight sibling tools.

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

azure_list_budgetsB

List Azure budgets with current spend status (CRITICAL/WARNING/OK). Requires Cost Management credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
resourceGroupNo
response_formatNomarkdown

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. 'List' implies a read-only operation, and 'Requires Cost Management credentials' is a useful prerequisite. However, it does not disclose error behavior, filtering semantics, or what happens when credentials are missing. This is adequate but has clear 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 two succinct sentences with no filler. The core function is front-loaded, and the credential requirement is the only extra detail. Every word earns its place.

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 no output schema and no annotations, the description is too sparse. It mentions the return statuses but does not explain the optional resourceGroup parameter, the response_format options, or how credentials are supplied. Sibling tools overlap in the cost domain, so more routing context would be expected.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention either parameter (resourceGroup or response_format). The description provides no additional meaning beyond the bare schema names, which are not self-explanatory. Both parameters remain effectively undocumented.

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 uses a specific verb ('List') and resource ('Azure budgets'), and adds a distinguishing detail ('current spend status (CRITICAL/WARNING/OK)'). This makes it clearly distinct from sibling tools that focus on prices, costs, and forecasts.

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. The only contextual note is 'Requires Cost Management credentials,' which is a prerequisite, not a usage guideline. No when-to-use or when-not-to-use information is given.

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

azure_query_costsC

Query actual Azure subscription spend. Requires Cost Management credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoISO date, required when timeframe=Custom
groupByNo
costTypeNoActualCost
startDateNoISO date, required when timeframe=Custom
timeframeYes
granularityNoNone
response_formatNomarkdown

TDQS

C2.4/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 that Cost Management credentials are required and implies a read operation, but it does not disclose response format, default grouping, granularity, cost-type semantics, pagination, or other runtime behavior.

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

Conciseness3/5

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

The description is short and free of filler, and the credential requirement is relevant. However, for a 7-parameter tool with sparse schema documentation, this brevity reads more like under-specification than well-balanced conciseness.

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 number of parameters, low schema coverage, no output schema, and several similar sibling tools, the description leaves major gaps: how timeframes work, what grouping options mean, what the response looks like, and when to prefer another tool. It is only a starting point.

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

Parameters1/5

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

Schema description coverage is only 29%, and the description itself does not explain timeframe, groupBy, costType, granularity, or response_format. Only startDate and endDate have schema descriptions, so most parameters remain semantically ambiguous and the description does nothing to compensate.

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 uses a specific verb ('Query') and resource ('actual Azure subscription spend'), clearly establishing that this tool reads spend data rather than prices, forecasts, or budgets. It does not explicitly differentiate from azure_query_costs_by_resource, but the wording is sufficient to identify the core purpose.

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 closely related siblings such as azure_query_costs_by_resource, azure_get_cost_forecast, or azure_list_budgets. The word 'actual' hints at real spend versus forecasts or estimates, but there are no explicit conditions, exclusions, or alternative routing.

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

azure_query_costs_by_resourceC

Show top-N Azure resources by spend with % of total. Requires Cost Management credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNNo
endDateNo
startDateNo
timeframeNoMonthToDate
resourceGroupNo
response_formatNomarkdown

TDQS

C2.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 behavioral disclosure burden. It does add the credential requirement and indicates the output shape (top-N spend with percentage of total). However, it does not disclose read-only behavior, default time range handling, behavior on auth failure, or how results are ordered when ties occur.

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 two concise sentences with no filler, and the main action is front-loaded. However, given six undocumented parameters and no annotations, the brevity results in under-specification rather than efficient coverage, so it is not a perfect 5.

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?

With no annotations, no output schema, and six parameters, the description is markedly incomplete for safe invocation. It omits date/timeframe semantics, resourceGroup filtering, response_format options, and error behavior. The credential note is helpful, but an agent would need to inspect parameter names and enums to call this correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only clarifies the 'top-N' concept. It does not explain startDate, endDate, timeframe, resourceGroup, or response_format. Parameter names and enum defaults in the schema do some self-documenting work, but the description adds minimal semantic value beyond the topN parameter.

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 a specific verb and resource: 'Show top-N Azure resources by spend with % of total.' This conveys the tool's core function and differentiates it from the general azure_query_costs sibling by the 'by resource' and top-N scope, though it does not explicitly name any sibling.

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 only usage-related information is 'Requires Cost Management credentials,' which is a prerequisite rather than guidance on when to choose this tool over alternatives. There is no mention of when to use this instead of azure_query_costs, azure_get_cost_forecast, or other sibling tools.

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

azure_search_pricesB

Search Azure retail prices with OData filters. Use for ad-hoc price lookups.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
skuNameNopartial match, e.g. "D2s v5"
priceTypeNo
armSkuNameNoexact SKU, e.g. "Standard_D2s_v5"
serviceNameNoe.g. "Virtual Machines"
currencyCodeNoUSD
nextPageLinkNo
armRegionNameNoe.g. "eastus"
serviceFamilyNoe.g. "Compute"
response_formatNomarkdown

TDQS

B3.2/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, yet it offers only what the verb 'Search' already implies about read-only operation. It omits relevant behavioral traits such as pagination via the nextPageLink parameter, external API dependency, rate limits, and data freshness. For a tool with zero annotation coverage, this is a material gap.

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?

Two short sentences with zero filler; the principal action is front-loaded in sentence one and the usage hint in sentence two. Every word earns its place, which is the standard for conciseness.

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 10-parameter, no-annotation, no-output-schema tool, the description leaves key operational context unstated: how result pages are retrieved via nextPageLink, what response_format renders, and whether results come from an external API with latency or rate limits. An agent can craft a minimal valid call from the schema alone, but it cannot anticipate iteration or output behavior, which is the description's responsibility here.

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 phrase 'OData filters' adds meaning beyond the schema by signaling that search parameters (skuName, armSkuName, serviceName, armRegionName, serviceFamily, priceType) compose into combinable filter expressions. With schema coverage at 50%, parameters like limit, nextPageLink, and response_format remain semantically bare in both schema and description, so the description only partially compensates for the gap.

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 states a specific verb ('Search'), a resource ('Azure retail prices'), and a mechanism ('OData filters'), making the core function immediately clear. The closing phrase 'Use for ad-hoc price lookups' implicitly differentiates it from the comparison, optimization, and budget siblings, though it never names a sibling explicitly.

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 last sentence supplies a usage context — ad-hoc lookups rather than the structured comparison, region-optimization, and budget workflows of the eight sibling tools — so the 'when' is implied. However, it names no alternatives and states no exclusions, leaving an agent to infer which sibling handles a given scenario. This lands at 'implied usage' but not at explicit routing guidance.

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. 9 tool updatesv0.1.0
    • First observedazure_compare_reservation_vs_payg
    • First observedazure_compare_vm_prices
    • First observedazure_estimate_architecture_cost
    • First observedazure_find_cheapest_region
    • First observedazure_get_cost_forecast
    • First observedazure_list_budgets
    • First observedazure_query_costs
    • First observedazure_query_costs_by_resource
    • First observedazure_search_prices

TDQS

B3.4/5.0
Disambiguation4/5

The tools separate into pricing estimation and actual cost management, but there is some overlap among azure_search_prices, azure_compare_vm_prices, and azure_find_cheapest_region. Descriptions are specific enough that an agent can usually choose correctly, though the boundaries between ad-hoc price lookup and VM-specific comparison could be clearer.

Naming Consistency5/5

All tool names follow a consistent azure_verb_noun snake_case pattern, with verbs like search, compare, find, estimate, query, get, and list. The naming is predictable and makes the resource/action of each tool immediately recognizable.

Tool Count5/5

Nine tools is well within the ideal range for a focused Azure cost management server. Each tool covers a meaningful aspect of pricing, cost querying, forecasting, or budgeting without unnecessary redundancy or bloat.

Completeness4/5

The set covers core workflows: price discovery, VM cost comparison, reservation vs pay-as-you-go, architecture estimation, actual spend, resource-level breakdown, forecasting, and budgets. The main gap is budget lifecycle management—only listing budgets is supported, with no create, update, or delete operations, so budget management workflows are incomplete.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • A
    license
    B
    quality
    C
    maintenance
    An MCP server for unified cost tracking and analysis across AWS, OpenAI, and Anthropic. It enables users to query expenditures, compare costs across providers, and analyze usage trends through natural language.
    10
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server that lets Claude (or any MCP-compatible client) compare on-demand compute + storage pricing across AWS, Azure, and GCP in real time.
    14
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    This MCP server enables querying Azure resource pricing programmatically through a structured workflow, including listing service families, service names, products, and calculating monthly costs.
    -

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/MO2k4/azure-cost-mcp'

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