Cloud FinOps Analyst MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloud FinOps Analyst MCP ServerWhy did our bill spike last week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Cost breakdown by service and region for last 7 days, 30 days, or 3 months |
| Flags unusual spending spikes with likely root causes |
| Finds unused EC2 instances, RDS databases, and unattached EBS volumes |
| Suggests downsizing over-provisioned instances with estimated savings |
| 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
Node.js 18+
Claude Desktop (free) — download here
Installation
git clone https://github.com/yourusername/finops-mcp-server
cd finops-mcp-server
npm install
npm run buildConnect 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:
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": "*"
}
]
}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-1Replace 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.mdRoadmap
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 protocolZod — input schema validation
Node.js — runtime
Available Tools
10 toolsdetect_azure_cost_anomaliesA
Detects daily Azure cost spikes by comparing each day's spend against the period average.
| Name | Required | Description | Default |
|---|---|---|---|
| lookback_days | No | Number of days of cost history to analyze | |
| min_spike_percentage | No | Minimum % above average to flag as an anomaly |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| min_spike_percentage | No | Minimum percentage increase over baseline to flag as anomaly |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lookback_days | No | Number of days of cost history to analyze | |
| min_spike_percentage | No | Minimum % above average daily cost to flag as an anomaly |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period to analyze | last_30_days |
| group_by | No | How to group the cost breakdown | both |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| min_idle_days | No | Number of days to analyze for idle detection | |
| cpu_threshold_percent | No | CPU% threshold below which a VM is considered idle |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Preset time period to analyze | |
| end_date | No | Custom end date in YYYY-MM-DD format | |
| group_by | No | How to group the cost breakdown | both |
| start_date | No | Custom start date in YYYY-MM-DD format |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period to analyze | last_30_days |
| group_by | No | How to group the cost breakdown | both |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| min_idle_days | No | Number of days of low CPU usage to flag a VM as idle | |
| resource_type | No | Type of resource to scan | all |
| cpu_threshold_percent | No | Average CPU% below which a VM is considered idle |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| min_idle_days | No | Minimum number of days a resource must be idle to be included | |
| resource_type | No | Type of resource to check | all |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| resource_type | No | Filter by resource type | all |
| show_violations_only | No | Show only non-compliant resources |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
AWS Cost Explorer cost, forecast, and anomaly reporting through user-connected IAM credentials.
Query cloud, AI and SaaS spend across 25+ providers: costs, budgets, anomalies, unit economics.
Ask your AI assistant a cost question. Get allocation, correlation, and explanation in one response. Costory connects Claude, Codex, or Cursor to normalized cost data across AWS, GCP, Azure, Datadog, OpenAI, and Anthropic. https://costory.io Free trial 14 days, 250 USD / month up to 10M Spend
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
Related MCP Servers
- AlicenseCqualityFmaintenanceA 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.4126MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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.
- AlicenseBqualityDmaintenanceProvides 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.76MIT
- AlicenseAqualityAmaintenanceKubernetes cluster cost analysis and optimization. Query costs, find savings opportunities, get rightsizing recommendations, and analyze pod spend across AKS, EKS, and GKE — directly from Claude612Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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