Skip to main content
Glama
mihirkadam19

Cloud FinOps Analyst MCP Server

by mihirkadam19

Cloud FinOps Analyst — MCP Server

An AI-powered AWS cost analysis tool built as a Model Context Protocol (MCP) server. Connect it to Claude and ask plain-English questions about your cloud spend.

What it does

Instead of digging through AWS Cost Explorer dashboards, just ask:

  • "What did we spend last month and where is the money going?"

  • "Did we have any unexpected cost spikes this week?"

  • "Which resources are we paying for but not using?"

  • "Which instances are over-provisioned and how much could we save?"

  • "How bad is our tagging compliance and how much spend is unallocated?"

Claude calls the right tools, pulls the data, and gives you a clear analysis with specific recommendations.


Related MCP server: AWS Billing MCP Server

Tools

Tool

Description

get_cost_summary

Cost breakdown by service and region for last 7 days, 30 days, or 3 months

detect_cost_anomalies

Flags unusual spending spikes with likely root causes

get_idle_resources

Finds unused EC2 instances, RDS databases, and unattached EBS volumes

get_rightsizing_recommendations

Suggests downsizing over-provisioned instances with estimated savings

get_tagging_compliance

Identifies untagged resources and unallocatable spend


Architecture

You (chat in Claude Desktop or Claude.ai)
        ↓
Claude (AI reasoning — decides which tools to call)
        ↓
This MCP Server (fetches and returns data)
        ↓
AWS APIs (Cost Explorer, EC2, RDS, S3)

Getting Started

Prerequisites

Installation

git clone https://github.com/yourusername/finops-mcp-server
cd finops-mcp-server
npm install
npm run build

Connect to Claude Desktop

Add this to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "finops-analyst": {
      "command": "node",
      "args": ["/absolute/path/to/finops-mcp-server/dist/index.js"]
    }
  }
}

Restart Claude Desktop. You'll see the tools icon appear in the chat interface.


AWS Setup (for real data)

The server currently runs with mock data. To connect to a real AWS account:

  1. Create an IAM user with read-only permissions:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ce:GetCostAndUsage",
        "ce:GetCostForecast",
        "ce:GetAnomalies",
        "ec2:DescribeInstances",
        "ec2:DescribeVolumes",
        "rds:DescribeDBInstances",
        "cloudwatch:GetMetricStatistics",
        "tag:GetResources"
      ],
      "Resource": "*"
    }
  ]
}
  1. Add credentials to your environment:

export AWS_ACCESS_KEY_ID=your_key
export AWS_SECRET_ACCESS_KEY=your_secret
export AWS_DEFAULT_REGION=us-east-1
  1. Replace the mock data calls in each tool file with real AWS SDK calls.


Example Conversations

Cost overview:

"Give me a breakdown of our AWS spend last month"

Anomaly investigation:

"Why did our bill spike last week? What caused it?"

Cost optimization:

"What are the quickest wins to reduce our AWS bill right now?"

Executive report:

"Summarize our cloud cost health and give me 3 priority actions I can bring to my manager"


Project Structure

finops-mcp-server/
├── src/
│   ├── index.ts              # MCP server entry point + tool registry
│   ├── tools/
│   │   ├── costSummary.ts        # get_cost_summary
│   │   ├── anomalyDetection.ts   # detect_cost_anomalies
│   │   ├── idleResources.ts      # get_idle_resources
│   │   ├── rightsizing.ts        # get_rightsizing_recommendations
│   │   └── taggingCompliance.ts  # get_tagging_compliance
│   └── data/
│       └── mockData.ts           # Realistic mock AWS data for demos
├── dist/                     # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md

Roadmap

  • Connect to real AWS Cost Explorer API

  • Add Reserved Instance vs On-Demand comparison tool

  • Add savings plan coverage analysis

  • Phase 2: Web app with React frontend + Express backend


Tech Stack

  • TypeScript — type-safe tool definitions

  • MCP SDK (@modelcontextprotocol/sdk) — server protocol

  • Zod — input schema validation

  • Node.js — runtime

Available Tools

10 tools
detect_azure_cost_anomaliesA

Detects daily Azure cost spikes by comparing each day's spend against the period average.

ParametersJSON Schema
NameRequiredDescriptionDefault
lookback_daysNoNumber of days of cost history to analyze
min_spike_percentageNoMinimum % above average to flag as an anomaly

TDQS

A3.7/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 burden. It discloses the comparison algorithm (period average) but does not describe the output format, whether the operation is read-only, or any side effects. For a detection tool, the behavior is partially transparent but incomplete.

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, focused sentence with no filler, front-loaded with the core purpose. It earns its place and is appropriately concise for the tool's simplicity.

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 two simple parameters and no output schema, yet the description omits what the tool returns (e.g., a list of dates, amounts, anomaly summary). While the purpose is clear, the lack of output or usage context makes it incomplete for an agent deciding how to invoke and interpret the 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 parameters are already well-documented. The description adds the algorithmic context of comparing against the period average, but this is largely redundant with the schema's min_spike_percentage description ('above average'). No additional parameter-level meaning is provided.

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 ('detects') and resource ('Azure cost spikes'), and explains the detection method ('comparing each day's spend against the period average'). It clearly distinguishes itself from GCP or generic anomaly detection siblings by naming Azure.

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 for Azure cost spike detection via the tool name and the word 'Azure', but it does not explicitly state when to use this tool over alternatives like detect_cost_anomalies or detect_gcp_cost_anomalies. No exclusions or alternative references are provided.

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

detect_cost_anomaliesA

Detects unusual cost spikes across AWS services compared to baseline spending. Use this when asked about billing surprises, unexpected charges, or cost spikes.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_spike_percentageNoMinimum percentage increase over baseline to flag as anomaly

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It does not explicitly state that the tool is read-only, nor does it mention any side effects, output format, or how baseline spending is determined. The word 'detects' implies analysis, but the agent is left without confirmation of safety or what the tool returns.

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 sentences, each earning its place: one states purpose/scope, the other gives usage guidance. No filler or redundancy.

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 simple detection tool with one optional parameter and no output schema, the description gives purpose and usage but does not indicate what the tool returns (e.g., a list of anomalies, a summary). This leaves an agent to infer the output format, which is a notable gap.

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% and the parameter min_spike_percentage is well-documented in the schema. The tool description adds no additional parameter semantics, so it meets the baseline for a fully documented 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 it 'detects unusual cost spikes across AWS services compared to baseline spending' – a specific verb, resource, and scope. It also distinguishes from sibling tools by explicitly naming AWS, while siblings like detect_azure_cost_anomalies and detect_gcp_cost_anomalies target other providers.

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?

Provides explicit usage context: 'Use this when asked about billing surprises, unexpected charges, or cost spikes.' It does not mention when not to use or name alternatives, but the guidance clearly frames when this tool is appropriate.

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

detect_gcp_cost_anomaliesA

Detects daily GCP cost spikes by comparing each day's spend against the period average, with a per-service breakdown for anomaly days.

ParametersJSON Schema
NameRequiredDescriptionDefault
lookback_daysNoNumber of days of cost history to analyze
min_spike_percentageNoMinimum % above average daily cost to flag as an anomaly

TDQS

A3.5/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 burden. It discloses the algorithm (comparing to period average) and output breakdown (per-service), which is useful. However, it does not mention whether any permissions are required, if the operation is read-only, or any side effects. Since it is an analysis tool, the description provides moderate transparency.

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, well-structured sentence that immediately conveys the core purpose and method. It is front-loaded with the action ('Detects daily GCP cost spikes') and includes relevant detail without any fluff.

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 description explains the tool's function and gives a hint about the output structure (per-service breakdown for anomaly days), but lacks usage context, alternatives, or clarity on what the returned data looks like. For a simple analysis tool with no output schema, this is adequate but incomplete.

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% coverage with descriptions for both parameters. The description does not add additional parameter-specific details beyond what is already in the schema, but also does not conflict. With full schema coverage, a baseline of 3 is appropriate.

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 ('detects'), a clear resource ('GCP cost spikes'), and the methodology ('comparing each day's spend against the period average'). It also distinguishes from siblings by explicitly specifying GCP and daily spikes, setting it apart from generic or Azure anomaly detection tools.

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?

No guidance is provided on when to use this tool versus alternatives like 'detect_cost_anomalies' or 'detect_azure_cost_anomalies'. The description implies a GCP context but does not state exclusions or recommend this tool for specific scenarios.

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

get_azure_cost_summaryA

Fetches Azure cost breakdown by service and resource group for a given time period.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period to analyzelast_30_days
group_byNoHow to group the cost breakdownboth

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the burden. It only states the fetch operation without disclosing read-only status, data latency, or response structure, leaving the agent without safety or 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?

Single sentence with clear structure, no redundant information.

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 absence of an output schema puts the burden on the description to clarify return format. It vaguely mentions cost breakdown but doesn't specify the shape (list, object, currency), leaving potential ambiguity.

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?

Both parameters have descriptive schemas, so the description adds little extra. It maps 'time period' to period and 'by service/resource group' to group_by, but adds no new details.

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 specifies the Azure cloud provider, the resource type (cost breakdown), and the grouping dimensions (service and resource group), clearly distinguishing it from generic or GCP counterparts.

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?

No explicit guidance on when to choose this over get_cost_summary or get_azure_idle_resources. The Azure-specific name implies usage, but it doesn't state exclusions or alternatives.

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

get_azure_idle_resourcesA

Identifies idle/underutilized Azure VMs based on average CPU usage over a time period.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_idle_daysNoNumber of days to analyze for idle detection
cpu_threshold_percentNoCPU% threshold below which a VM is considered idle

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It reveals the analysis method (CPU usage) and time period, implying a read-only operation, but doesn't explicitly state that it's non-destructive or describe return format or permissions.

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, front-loaded sentence that directly states the tool's purpose without any filler. It is maximally concise 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?

The description is adequate for a simple tool, but it omits the output format and doesn't explicitly disclose that the tool is read-only. Since there is no output schema or annotations, the description should compensate more fully.

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 fully documents both parameters with descriptions (100% coverage). The tool description adds no additional parameter semantics, but the schema already provides sufficient meaning, so a baseline score of 3 is appropriate.

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 (identifies) and resource (Azure VMs), and explains the method (average CPU usage over time). It clearly distinguishes from sibling tools like get_gcp_idle_resources and get_cost_summary.

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 context for when to use this tool is clear—it's for Azure VMs—but there is no explicit mention of alternatives or exclusions. The description implies Azure-specific usage without stating when not to use it.

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

get_cost_summaryA

Fetches AWS cloud cost breakdown by service and region for a given time period. Use this to answer questions about overall spend, top spending services, or cost by region.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPreset time period to analyze
end_dateNoCustom end date in YYYY-MM-DD format
group_byNoHow to group the cost breakdownboth
start_dateNoCustom start date in YYYY-MM-DD format

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 burden of behavioral disclosure. It indicates a read operation ('Fetches') and output dimensions (service, region, time period), but omits potential details like return format, pagination, or permission requirements. This is acceptable for a simple fetch but leaves some 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?

Two sentences, front-loaded with the action and resource, and every word serves a purpose. Second sentence adds concrete use cases without unnecessary detail.

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 no output schema and no annotations, so the description must compensate. It covers the core purpose and use cases but does not mention the return structure or clarify date parameter logic (e.g., how period interacts with start/end date). Adequate but not complete.

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 coverage is 100% with all parameters described, so the description adds limited value beyond the schema. It reinforces the grouping behavior ('by service and region') but does not explain interactions between period and custom dates, which the schema also leaves implicit. Baseline 3 is appropriate.

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 fetches AWS cloud cost breakdown by service and region for a given time period. It includes specific use cases ('overall spend, top spending services, or cost by region') and distinguishes this from sibling tools by explicitly naming AWS.

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 when-to-use guidance ('Use this to answer questions about overall spend, top spending services, or cost by region'). While it does not explicitly mention alternatives or exclusions, the AWS qualifier implies a distinction from Azure/GCP siblings.

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

get_gcp_cost_summaryA

Fetches GCP cost breakdown by service and project from BigQuery billing export for a given time period. Use this to answer questions about overall GCP spend, top spending services, or cost by project.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period to analyzelast_30_days
group_byNoHow to group the cost breakdownboth

TDQS

A4/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. 'Fetches' indicates a read-only operation, and the source data (BigQuery billing export) is disclosed. However, it lacks details on permissions, data freshness, aggregation behavior, or potential errors, which would be useful for an agent.

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 sentences, with the operative statement first and a usage note second. No unnecessary words or repetition of schema details.

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 simple read-style tool with two optional enum parameters and no output schema, the description adequately conveys purpose, data source, and typical use cases. It lacks an explicit return type or caveats, but the simplicity of the tool keeps this from being a major gap.

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 already documents both parameters with descriptions and enum values, providing 100% coverage. The description reinforces the period and group_by concepts but adds no new meaning beyond the schema, so a baseline of 3 is appropriate.

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 verb 'Fetches' and the specific resource 'GCP cost breakdown by service and project from BigQuery billing export', distinguishing it from generic or Azure counterparts by naming GCP and the data source.

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 sentence 'Use this to answer questions about overall GCP spend, top spending services, or cost by project' provides clear context for when to apply this tool. It does not explicitly mention alternatives or exclusions, but the usage guidance is explicit enough for typical queries.

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

get_gcp_idle_resourcesA

Identifies idle GCP Compute Engine VMs (low CPU) and unattached Persistent Disks that are wasting money.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_idle_daysNoNumber of days of low CPU usage to flag a VM as idle
resource_typeNoType of resource to scanall
cpu_threshold_percentNoAverage CPU% below which a VM is considered idle

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 full behavioral burden. It describes what it identifies (idle VMs and unattached disks) and implies a read-only analysis, but it does not explicitly state that it only scans and returns results, nor does it disclose permissions, side effects, or output format. The core behavior is clear, but details are missing.

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, clear sentence that front-loads the purpose and resource types. It contains no filler or redundant information, earning a high score for efficiency.

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 no output schema and no annotations, so the description should ideally explain the return value and any prerequisites. It describes the purpose but omits output details, usage guidance, and behavioral specifics, leaving gaps. However, the schema is well-documented, and the purpose is clear, so it is minimally complete but not rich.

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 provides 100% coverage with descriptions and defaults for all three parameters, so the baseline is 3. The description adds context by distinguishing compute (low CPU) from disks (unattached), but it does not clarify how min_idle_days applies to disks, leaving some ambiguity beyond what the schema already provides.

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 identifies idle GCP Compute Engine VMs and unattached Persistent Disks that are wasting money. The specific verb 'identifies' and resource targets make it distinct from broader siblings like get_idle_resources and get_azure_idle_resources, which are named in the sibling list.

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 for GCP idle resource detection through the tool name and 'GCP' mention, but it does not explicitly state when to use it over alternatives or provide exclusions. Sibling names like get_azure_idle_resources suggest scope, but the description itself offers no explicit guidance.

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

get_idle_resourcesA

Identifies idle or underutilized AWS resources including EC2 instances, RDS databases, and unattached EBS volumes that are wasting money. Use this when asked about waste, unused resources, or easy cost savings.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_idle_daysNoMinimum number of days a resource must be idle to be included
resource_typeNoType of resource to checkall

TDQS

A4/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. The verb 'Identifies' implies a read-only analysis with no side effects, and the description adds useful context about the resource types covered. However, it does not explicitly state that the tool is read-only or disclose any limitations, auth requirements, or return 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?

Two sentences, front-loaded with purpose, then usage guidance. Every word earns its place with no redundancy or fluff.

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 simple list-style tool with two optional params and no output schema, the description is largely complete: it states scope, resource types, and usage context. The only gap is no explicit mention of return format or read-only safety, but the schema covers the parameters adequately.

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 coverage is 100%, so the baseline is 3. The description does not add any additional meaning beyond the schema for min_idle_days or resource_type, nor does it clarify their usage or relationships.

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 ('Identifies') and clearly names the resource scope ('idle or underutilized AWS resources including EC2 instances, RDS databases, and unattached EBS volumes'). It also differentiates from sibling tools by explicitly stating 'AWS', unlike get_gcp_idle_resources and get_azure_idle_resources.

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?

Provides explicit when-to-use guidance: 'Use this when asked about waste, unused resources, or easy cost savings.' However, it does not mention when not to use it or name alternatives like detect_cost_anomalies or get_cost_summary, so it falls short of a 5.

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

get_tagging_complianceA

Checks AWS resource tagging compliance — identifying resources missing required tags like Environment, Owner, CostCenter, and Project. Use this when asked about cost allocation, untagged resources, or tagging policies.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_typeNoFilter by resource typeall
show_violations_onlyNoShow only non-compliant resources

TDQS

A4/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 of behavioral disclosure. It conveys a read-only intent through 'Checks' and explains the core action (identifying non-compliant resources). However, it omits details about the output format, whether the check covers all resource types by default, and any caveats about tag definitions or permissions.

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 concise sentences, front-loading the action and resource scope. The first sentence defines the purpose; the second gives usage guidance. No irrelevant content or repetition of schema details.

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 simple read-only query tool with only two optional parameters and no output schema, the description covers the essential purpose and usage context. The implied output (list of non-compliant resources) is clear enough, though an explicit statement of return format would make it fully complete.

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%, with both parameters ('resource_type' and 'show_violations_only') having clear descriptions in the schema itself. The tool description does not add parameter-level details, but the baseline of 3 applies when the schema fully documents parameters.

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 the specific verb 'Checks' with a clear resource scope: 'AWS resource tagging compliance.' It also defines the concrete outcome: 'identifying resources missing required tags like Environment, Owner, CostCenter, and Project.' This clearly distinguishes it from sibling tools focused on cost, idle resources, or anomalies.

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 the tool: 'Use this when asked about cost allocation, untagged resources, or tagging policies.' It does not explicitly mention when not to use it or name alternatives, but the sibling tool set (cost/anomaly/idle tools) makes those cases implicitly distinct.

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

TDQS

A3.8/5.0
Disambiguation4/5

Tools are functionally distinct by cloud provider and action, but AWS tools lack a provider prefix (e.g., 'get_cost_summary' vs 'get_azure_cost_summary'), which could cause an agent to misselect if not reading descriptions carefully.

Naming Consistency3/5

The verb_noun pattern is consistent, but cloud prefixes are applied only to Azure and GCP tools (e.g., 'get_azure_idle_resources') while AWS tools are unprefixed ('get_idle_resources'). This inconsistency makes the naming pattern less predictable.

Tool Count5/5

10 tools is well within the ideal range for a FinOps server. Each tool covers a specific cloud provider and operation (cost summary, idle resources, anomaly detection), making the count appropriate for the domain.

Completeness4/5

The core FinOps surface (cost, waste, anomalies) is covered for AWS, Azure, and GCP, but tagging compliance is only available for AWS, leaving a notable gap for Azure and GCP users.

Maintenance

ActivityStale
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
    C
    quality
    F
    maintenance
    A command-line interface and API that allows users to analyze and visualize AWS cloud spending data by enabling Claude to query AWS Cost Explorer through natural language conversations.
    4
    126
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to analyze AWS costs, track spending trends, and detect anomalies directly within Claude Desktop using the AWS Cost Explorer API. It provides tools to identify major cost drivers and compare usage across different time periods through natural language queries.
  • A
    license
    B
    quality
    D
    maintenance
    Provides a comprehensive suite of 76 tools for AWS cloud resource optimization, cost management, and infrastructure monitoring. It enables users to identify unused resources, analyze cost trends, right-size capacity, and maintain security compliance through natural language.
    76
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Kubernetes cluster cost analysis and optimization. Query costs, find savings opportunities, get rightsizing recommendations, and analyze pod spend across AKS, EKS, and GKE — directly from Claude
    6
    12
    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/mihirkadam19/finops-mcp-server'

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