Skip to main content
Glama

CFM Tips - Cost Optimization MCP Server

by aws-samples
README.md•9.95 kB
# 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. ## āœ… 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 ### 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 - ļæ½ ***CloudTrail Optimization** - Analyze and optimize CloudTrail configurations - šŸ“Š **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 ``` ## šŸ” Security and Permissions - Least Privileges The MCP tools require specific AWS permissions to function. - **Create a read-only IAM role** - Restricts LLM agents from modifying AWS resources. This prevents unintended create, update, or delete actions. - **Enable CloudTrail** - Tracks API activity across your AWS account for security monitoring. - **Follow least-privilege principles** - Grant only essential read permissions (Describe*, List*, Get*) for required services. The below creates an IAM policy with for list, read and describe actions only: ```json { "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", "cloudtrail:DescribeTrails", "cloudtrail:GetTrailStatus", "cloudtrail:GetEventSelectors" ], "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** ```bash git clone https://github.com/aws-samples/sample-cfm-tips-mcp.git cd sample-cfm-tips-mcp ``` 2. **Install Dependencies** ```bash pip install -r requirements.txt ``` 3. **Configure AWS Credentials** ```bash 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. **Install the MCP Configurations** ```bash python3 setup.py ``` 6. **Usage Option 1: Using the Q CLI Chat** ```bash q chat Show me cost optimization recommendations ``` 7. **Usage Option 2: Integrate with Amazon Q Developer Plugin or Kiro** - Open Amazon Q Developer Plugin on your IDE - Click on Chat -> šŸ› ļø Configure MCP Servers -> āž• Add new MCP - Use the following configuration ```bash - Scope: Global - Name: cfm-tips - Transport: stdio - Command: python3 - Arguments: <replace-with-path-to-folder>/mcp_server_with_runbooks.py - Timeout: 60 ``` ## šŸ”§ 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 - `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** ```bash 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** ```bash # Check Python path and dependencies python3 -c "import boto3, mcp; print('Dependencies OK')" ``` ### Getting Help - Check the [RUNBOOKS_GUIDE.md](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` ## 🧩 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 ```bash # 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" ``` ## šŸŽÆ 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](LICENSE) file for details. ---

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/aws-samples/sample-cfm-tips-mcp'

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