Skip to main content
Glama

get_cost_breakdown

Analyze AWS costs by service or usage type to identify spending patterns and optimize cloud expenses.

Instructions

Detailed cost analysis. If service_name is provided, breaks down that service by Usage Type. Otherwise, breaks down by Service.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format (default: 14 days ago).
end_dateNoEnd date in YYYY-MM-DD format.
service_nameNoOptional: Specific service to analyze (e.g., 'Amazon Elastic Compute Cloud - Compute').

Implementation Reference

  • Executes the get_cost_breakdown tool. Fetches AWS cost data using CostExplorerClient's GetCostAndUsageCommand. Groups by SERVICE (default) or USAGE_TYPE if service_name provided. Returns daily breakdown sorted by cost descending, top 100 items.
    if (name === "get_cost_breakdown") { const endDate = (args as any)?.end_date || new Date().toISOString().split('T')[0]; const startDate = (args as any)?.start_date || new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString().split('T')[0]; const serviceName = (args as any)?.service_name; const groupByKey = serviceName ? "USAGE_TYPE" : "SERVICE"; const filter = serviceName ? { Dimensions: { Key: "SERVICE", Values: [serviceName] } } as any : undefined; const command = new GetCostAndUsageCommand({ TimePeriod: { Start: startDate, End: endDate }, Granularity: "DAILY", Metrics: ["UnblendedCost"], GroupBy: [{ Type: "DIMENSION", Key: groupByKey }], Filter: filter }); const response = await costExplorerClient.send(command); const costs = response.ResultsByTime?.flatMap(r => r.Groups?.map(g => ({ Date: r.TimePeriod?.Start, [groupByKey === "USAGE_TYPE" ? "UsageType" : "Service"]: g.Keys?.[0], Cost: parseFloat(g.Metrics?.UnblendedCost?.Amount || "0").toFixed(4), Unit: g.Metrics?.UnblendedCost?.Unit })) ) .filter(c => c && parseFloat(c.Cost) > 0) // Filter out zero costs .sort((a, b) => parseFloat(b?.Cost || "0") - parseFloat(a?.Cost || "0")) || []; return { content: [{ type: "text", text: JSON.stringify(costs.slice(0, 100), null, 2) }] }; }
  • Input schema definition for the get_cost_breakdown tool, defining parameters for date range and optional service_name.
    name: "get_cost_breakdown", description: "Detailed cost analysis. If service_name is provided, breaks down that service by Usage Type. Otherwise, breaks down by Service.", inputSchema: { type: "object", properties: { start_date: { type: "string", description: "Start date in YYYY-MM-DD format (default: 14 days ago)." }, end_date: { type: "string", description: "End date in YYYY-MM-DD format." }, service_name: { type: "string", description: "Optional: Specific service to analyze (e.g., 'Amazon Elastic Compute Cloud - Compute')." } } }
  • src/index.ts:208-219 (registration)
    Registers the get_cost_breakdown tool in the ListTools response with name, description, and input schema.
    { name: "get_cost_breakdown", description: "Detailed cost analysis. If service_name is provided, breaks down that service by Usage Type. Otherwise, breaks down by Service.", inputSchema: { type: "object", properties: { start_date: { type: "string", description: "Start date in YYYY-MM-DD format (default: 14 days ago)." }, end_date: { type: "string", description: "End date in YYYY-MM-DD format." }, service_name: { type: "string", description: "Optional: Specific service to analyze (e.g., 'Amazon Elastic Compute Cloud - Compute')." } } } },
  • Initializes the AWS CostExplorerClient used by the get_cost_breakdown handler.
    const costExplorerClient = new CostExplorerClient({});

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/Bhavesh8890/MCP-server'

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