🚀 CFM Tips - コスト最適化MCPサーバー
AWSのコスト分析と最適化の推奨事項を提供する包括的なモデルコンテキストプロトコル(MCP)サーバーです。Amazon Q CLIや他のMCP互換クライアントとシームレスに連携するように設計されています。
✨ 主な機能
AWSコアサービスの統合
- Cost Explorer - コストデータと使用状況メトリクスを取得します。
- Cost Optimization Hub - AWSのコスト最適化の推奨事項を取得します。
- Compute Optimizer - コンピュートリソースの適切なサイズ設定の推奨事項を取得します。
- Trusted Advisor - コスト最適化のチェックと推奨事項を取得します。
- Performance Insights - RDSのパフォーマンスメトリクスと分析を取得します。
- CUR Reports - S3からコストと使用状況のレポートを分析します。
コスト最適化プレイブック
- 🔧 EC2の適切なサイズ設定 - 利用不足のEC2インスタンスを特定します。
- 💾 EBSの最適化 - 未使用および利用不足のボリュームを見つけます。
- 🗄️ RDSの最適化 - アイドル状態および利用不足のデータベースを特定します。
- ⚡ Lambdaの最適化 - 過剰にプロビジョニングされたおよび未使用の関数を見つけます。
- 📊 包括的な分析 - 複数のサービスのコスト分析を行います。
高度な機能
- 実際のCloudWatchメトリクス - 実際のAWSメトリクスを使用して分析を行います。
- 複数の出力形式 - JSONおよびMarkdown形式のレポートを生成します。
- コスト計算 - 推定される節約額とコスト内訳を提供します。
- 実行可能な推奨事項 - 優先度に基づく最適化の提案を提供します。
📁 プロジェクト構造
sample-cfm-tips-mcp/
├── playbooks/ # CFM Tips最適化プレイブックエンジン
├── services/ # コスト最適化のデータソースとしてのAWSサービス
├── mcp_server_with_runbooks.py # メインのMCPサーバー
├── runbook_functions.py # コスト最適化の実行ブックの実装
├── mcp_runbooks.json # MCP設定ファイルのテンプレートファイル
├── requirements.txt # Pythonの依存関係
├── test_runbooks.py # 統合テスト
├── diagnose_cost_optimization_hub_v2.py # 診断ユーティリティ
├── RUNBOOKS_GUIDE.md # 詳細な使用ガイド
└── README.md # プロジェクトのReadMe
🔐 セキュリティと権限 - 最小限の権限
MCPツールを機能させるには、特定のAWS権限が必要です。
- 読み取り専用のIAMロールを作成する - LLMエージェントがAWSリソースを変更するのを制限します。これにより、意図しない作成、更新、または削除アクションを防止します。
- CloudTrailを有効にする - セキュリティ監視のために、AWSアカウント全体のAPIアクティビティを追跡します。
- 最小限の権限の原則に従う - 必要なサービスに対して、必要な読み取り権限(Describe*、List*、Get*)のみを付与します。
以下は、リスト、読み取り、および説明アクションのみのIAMポリシーを作成する例です。
{
"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": "*"
}
]
}
📦 インストール
前提条件
- Python 3.11 以上
- 適切な資格情報で構成されたAWS CLI
- Amazon Q CLI(MCP統合用) - https://docs.aws.amazon.com/amazonq/latest/qdeveloper-ug/command-line-installing.html
セットアップ手順
-
リポジトリをクローンする
git clone https://github.com/aws-samples/sample-cfm-tips-mcp.git
cd sample-cfm-tips-mcp
-
依存関係をインストールする
pip install -r requirements.txt
-
AWS資格情報を構成する
aws configure
-
IAM権限を適用する
- 上記の権限を持つIAMポリシーを作成する
- ポリシーをIAMユーザーまたはロールにアタッチする
-
MCP設定をインストールする
python3 setup.py
-
使用オプション1: Q CLIチャットを使用する
q chat
Show me cost optimization recommendations
-
使用オプション2: Amazon Q Developer PluginまたはKiroと統合する
- IDEでAmazon Q Developer Pluginを開く
- チャット -> 🛠️ MCPサーバーを構成する -> ➕ 新しいMCPを追加する をクリックする
- 以下の設定を使用する
- Scope: Global
- Name: cfm-tips
- Transport: stdio
- Command: python3
- Arguments: <replace-with-path-to-folder>/mcp_server_with_runbooks.py
- Timeout: 60
💻 使用例
基本的なコスト分析
"Get my AWS costs for the last month"
"Show me cost optimization recommendations"
"What are my biggest cost drivers?"
リソース最適化
"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"
レポート生成
"Generate a comprehensive cost optimization report"
"Create an EC2 right-sizing report in markdown format"
"Generate an EBS optimization report with cost savings"
複数サービス分析
"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"
🔧 利用可能なツール
コスト分析ツール
get_cost_explorer_data - AWSのコストと使用状況データを取得します。
list_coh_enrollment - Cost Optimization Hubの登録状況を確認します。
get_coh_recommendations - コスト最適化の推奨事項を取得します。
get_coh_summaries - 推奨事項の要約を取得します。
get_compute_optimizer_recommendations - コンピュート最適化の推奨事項を取得します。
EC2最適化
ec2_rightsizing - EC2インスタンスの適切なサイズ設定の機会を分析します。
ec2_report - 詳細なEC2最適化レポートを生成します。
EBS最適化
ebs_optimization - EBSボリュームの最適化を分析します。
ebs_unused - 未使用のEBSボリュームを特定します。
ebs_report - EBS最適化レポートを生成します。
RDS最適化
rds_optimization - RDSインスタンスの最適化を分析します。
rds_idle - アイドル状態のRDSインスタンスを特定します。
rds_report - RDS最適化レポートを生成します。
Lambda最適化
lambda_optimization - Lambda関数の最適化を分析します。
lambda_unused - 未使用のLambda関数を特定します。
lambda_report - Lambda最適化レポートを生成します。
包括的な分析
comprehensive_analysis - 複数のサービスのコスト分析を行います。
追加ツール
list_cur_reports - S3内のコストと使用状況レポートをリストします。
get_trusted_advisor_checks - Trusted Advisorの推奨事項を取得します。
get_performance_insights_metrics - RDSのパフォーマンスインサイトデータを取得します。
🔍 トラブルシューティング
一般的な問題
-
Cost Optimization Hubが機能しない場合
python3 diagnose_cost_optimization_hub_v2.py
-
メトリクスが見つからない場合
- リソースが少なくとも14日間稼働していることを確認する
- CloudWatchメトリクスが有効になっていることを確認する
- 正しいリージョンを分析していることを確認する
-
権限エラーの場合
- IAM権限が正しく適用されていることを確認する
- AWS資格情報の構成を確認する
- AWSコンソールでCost Optimization Hubが有効になっていることを確認する
-
インポートエラーの場合
python3 -c "import boto3, mcp; print('Dependencies OK')"
ヘルプを得る方法
- RUNBOOKS_GUIDE.mdを確認して詳細な使用手順を参照する
- 診断スクリプトを実行する:
python3 diagnose_cost_optimization_hub_v2.py
- 統合テストを実行する:
python3 test_runbooks.py
🧩 追加MCP
追加のAWS Pricing MCPサーバーは、リアルタイムのAWS価格情報にアクセスし、コスト分析機能を提供するMCPサーバーです。
https://github.com/awslabs/mcp/tree/main/src/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"
🎯 主な利点
- 即時のコスト削減 - 未使用のリソースを特定して削除することができます。
- 適切なサイズ設定の機会 - 過剰にプロビジョニングされたリソースを最適化します。
- 実際のメトリクス分析 - 実際のCloudWatchデータを使用します。
- 実行可能なレポート - コスト見積もり付きの明確な推奨事項を提供します。
- 包括的なカバレッジ - EC2、EBS、RDS、Lambdaなどを分析します。
- 簡単な統合 - Amazon Q CLIとシームレスに連携します。
📈 期待される結果
CFM Tipsのコスト最適化サーバーは、以下のことを支援します。
- 平均的なコスト削減を特定する
- 月に数百ドルのコストを発生させている未使用のリソースを見つける
- 過剰にプロビジョニングされたインスタンスの適切なサイズ設定を行い、パフォーマンス/コスト比を最適化する
- ボリュームタイプの推奨事項を通じてストレージコストを最適化する
- ビジネス価値を提供しないアイドル状態のリソースを削除する
🤝 コントリビューション
コントリビューションを歓迎します!以下のコントリビューションガイドラインを参照してください。
- リポジトリをフォークする
- 機能ブランチを作成する
- 変更を加える
- 新機能に対するテストを追加する
- プルリクエストを送信する
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細についてはLICENSEファイルを参照してください。