CFM Tips - Cost Optimization MCP Server

CFM Tips - Cost Optimization MCP Server

A comprehensive Model Context Protocol server that analyzes AWS costs and provides optimization recommendations by integrating with services like Cost Explorer, Cost Optimization Hub, and Trusted Advisor.

Category
访问服务器

README

CFM Tips - Cost Optimization MCP Server

A comprehensive Model Context Protocol (MCP) server for AWS cost analysis and optimization recommendations, designed to work seamlessly with Amazon Q CLI and other MCP-compatible clients.

🚀 Quick Start

# Clone the repository
git clone https://github.com/aws-samples/sample-cfm-tips-mcp.git

cd sample-cfm-tips-mcp

# Install dependencies
pip install -r requirements.txt

# Configure AWS credentials
aws configure

# Add the MCP server config to Amazon Q using the mcp_runbooks.json as a template
vi ~/.aws/amazonq/mcp.json

# Example usage in Q chat:
"Run comprehensive cost analysis for us-east-1"
"Find unused EBS volumes costing money"
"Generate EC2 right-sizing report in markdown"

🧩 Add-on MCPs

Add-on AWS Pricing MCP Server MCP server for accessing real-time AWS pricing information and providing cost analysis capabilities https://github.com/awslabs/mcp/tree/main/src/aws-pricing-mcp-server

# Example usage with Add-on AWS Pricing MCP Server:
"Review the CDK by comparing it to the actual spend from my AWS account's stackset. Suggest cost optimization opportunities for the app accordingly"

✅ Features

Core AWS Services Integration

  • Cost Explorer - Retrieve cost data and usage metrics
  • Cost Optimization Hub - Get AWS cost optimization recommendations
  • Compute Optimizer - Right-sizing recommendations for compute resources
  • Trusted Advisor - Cost optimization checks and recommendations
  • Performance Insights - RDS performance metrics and analysis
  • CUR Reports - Cost and Usage Report analysis from S3

Cost Optimization Playbooks

  • 🔧 EC2 Right Sizing - Identify underutilized EC2 instances
  • 💾 EBS Optimization - Find unused and underutilized volumes
  • 🗄️ RDS Optimization - Identify idle and underutilized databases
  • Lambda Optimization - Find overprovisioned and unused functions
  • 📊 Comprehensive Analysis - Multi-service cost analysis

Advanced Features

  • Real CloudWatch Metrics - Uses actual AWS metrics for analysis
  • Multiple Output Formats - JSON and Markdown report generation
  • Cost Calculations - Estimated savings and cost breakdowns
  • Actionable Recommendations - Priority-based optimization suggestions

📁 Project Structure

sample-cfm-tips-mcp/
├── playbooks/                            # CFM Tips optimization playbooks engine
├── services/                             # AWS Services as datasources for the cost optimization
├── mcp_server_with_runbooks.py           # Main MCP server
├── runbook_functions.py                  # Cost optimization runbook implementations
├── mcp_runbooks.json                     # Template file for MCP configuration file
├── requirements.txt                      # Python dependencies
├── test_runbooks.py                      # Integration tests
├── diagnose_cost_optimization_hub_v2.py  # Diagnostic utilities
├── RUNBOOKS_GUIDE.md                     # Detailed usage guide
└── README.md                             # Project ReadMe

🔐 Required AWS Permissions

Your AWS credentials need these permissions. The MCP server uses your role to perform actions, hence proceed with least privilege access only. The below creates an IAM policy with for list, read and describe actions only:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cost-optimization-hub:ListEnrollmentStatuses",
        "cost-optimization-hub:ListRecommendations",
        "cost-optimization-hub:GetRecommendation", 
        "cost-optimization-hub:ListRecommendationSummaries",
        "ce:GetCostAndUsage",
        "ce:GetCostForecast",
        "compute-optimizer:GetEC2InstanceRecommendations",
        "compute-optimizer:GetEBSVolumeRecommendations",
        "compute-optimizer:GetLambdaFunctionRecommendations",
        "ec2:DescribeInstances",
        "ec2:DescribeVolumes",
        "rds:DescribeDBInstances",
        "lambda:ListFunctions",
        "cloudwatch:GetMetricStatistics",
        "s3:ListBucket",
        "s3:ListObjectsV2",
        "support:DescribeTrustedAdvisorChecks",
        "support:DescribeTrustedAdvisorCheckResult",
        "pi:GetResourceMetrics"
      ],
      "Resource": "*"
    }
  ]
}

🛠️ Installation

Prerequisites

  • Python 3.11 or higher
  • AWS CLI configured with appropriate credentials
  • Amazon Q CLI (for MCP integration) - https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html

Setup Steps

  1. Clone the Repository

    git clone https://github.com/aws-samples/sample-cfm-tips-mcp.git
    cd sample-cfm-tips-mcp
    
  2. Install Dependencies

    pip install -r requirements.txt
    
  3. Configure AWS Credentials

    aws configure
    # Or set environment variables:
    # export AWS_ACCESS_KEY_ID=your_access_key
    # export AWS_SECRET_ACCESS_KEY=your_secret_key
    # export AWS_DEFAULT_REGION=us-east-1
    
  4. Apply IAM Permissions

    • Create an IAM policy with the permissions listed above
    • Attach the policy to your IAM user or role
  5. Test the Installation

    python3 test_runbooks.py
    
  6. Start the MCP Server

    python3 mcp_server_with_runbooks.py &
    
  7. Start the Q Chat

    q chat
    

🔧 Available Tools

Cost Analysis Tools

  • get_cost_explorer_data - Retrieve AWS cost and usage data
  • list_coh_enrollment - Check Cost Optimization Hub enrollment
  • get_coh_recommendations - Get cost optimization recommendations
  • get_coh_summaries - Get recommendation summaries
  • get_compute_optimizer_recommendations - Get compute optimization recommendations

EC2 Optimization

  • ec2_rightsizing - Analyze EC2 instances for right-sizing opportunities
  • ec2_report - Generate detailed EC2 optimization reports

EBS Optimization

  • ebs_optimization - Analyze EBS volumes for optimization
  • ebs_unused - Identify unused EBS volumes
  • ebs_report - Generate EBS optimization reports

RDS Optimization

  • rds_optimization - Analyze RDS instances for optimization
  • rds_idle - Identify idle RDS instances
  • rds_report - Generate RDS optimization reports

Lambda Optimization

  • lambda_optimization - Analyze Lambda functions for optimization
  • lambda_unused - Identify unused Lambda functions
  • lambda_report - Generate Lambda optimization reports

Comprehensive Analysis

  • comprehensive_analysis - Multi-service cost analysis

Additional Tools

  • list_cur_reports - List Cost and Usage Reports in S3
  • get_trusted_advisor_checks - Get Trusted Advisor recommendations
  • get_performance_insights_metrics - Get RDS Performance Insights data

📊 Example Usage

Basic Cost Analysis

"Get my AWS costs for the last month"
"Show me cost optimization recommendations"
"What are my biggest cost drivers?"

Resource Optimization

"Find underutilized EC2 instances in us-east-1"
"Show me unused EBS volumes that I can delete"
"Identify idle RDS databases"
"Find unused Lambda functions"

Report Generation

"Generate a comprehensive cost optimization report"
"Create an EC2 right-sizing report in markdown format"
"Generate an EBS optimization report with cost savings"

Multi-Service Analysis

"Run comprehensive cost analysis for all services in us-east-1"
"Analyze my AWS infrastructure for cost optimization opportunities"
"Show me immediate cost savings opportunities"

🔍 Troubleshooting

Common Issues

  1. Cost Optimization Hub Not Working

    python3 diagnose_cost_optimization_hub_v2.py
    
  2. No Metrics Found

    • Ensure resources have been running for at least 14 days
    • Verify CloudWatch metrics are enabled
    • Check that you're analyzing the correct region
  3. Permission Errors

    • Verify IAM permissions are correctly applied
    • Check AWS credentials configuration
    • Ensure Cost Optimization Hub is enabled in AWS Console
  4. Import Errors

    # Check Python path and dependencies
    python3 -c "import boto3, mcp; print('Dependencies OK')"
    

Getting Help

  • Check the RUNBOOKS_GUIDE.md for detailed usage instructions
  • Run the diagnostic script: python3 diagnose_cost_optimization_hub_v2.py
  • Run integration tests: python3 test_runbooks.py

🎯 Key Benefits

  • Immediate Cost Savings - Identify unused resources for deletion
  • Right-Sizing Opportunities - Optimize overprovisioned resources
  • Real Metrics Analysis - Uses actual CloudWatch data
  • Actionable Reports - Clear recommendations with cost estimates
  • Comprehensive Coverage - Analyze EC2, EBS, RDS, Lambda, and more
  • Easy Integration - Works seamlessly with Amazon Q CLI

📈 Expected Results

The CFM Tips cost optimization server can help you:

  • Identify cost savings on average
  • Find unused resources costing hundreds of dollars monthly
  • Right-size overprovisioned instances for optimal performance/cost ratio
  • Optimize storage costs through volume type recommendations
  • Eliminate idle resources that provide no business value

🤝 Contributing

We welcome contributions! Please see our contributing guidelines:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Add tests for new functionality
  5. Submit a pull request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选