Amazon Q Developer CLIでCost Analysis MCPサーバを使ってみる

はじめに

前回の記事ではGitHub MCPサーバを使ってみるについてまとめた。
今回はAWSが提供している「Cost Analysis MCPサーバ」を使ってみる。
このMCPサーバーを使うことで、AWSの利用コストを自然言語で分析・可視化できるようになる。

環境

Windows 11 Professional
WSL2 Ubuntu 24.04 LTS
Amazon Q Developer CLI
AWS CLI

Cost Analysis MCPサーバとは

Cost Analysis MCPサーバは、AWSのサービス利用コストを分析・可視化するためのMCPサーバである。主な機能は以下の通り。

機能

  1. AWSコストの分析と可視化

    • サービス、リージョン、階層ごとにAWSコストの詳細な内訳を表示
    • 様々なサービス間でのコスト配分を理解
  2. 自然言語でのコストデータのクエリ

    • 複雑なクエリ言語を必要とせず、平易な英語でAWSコストについて質問可能
    • AWS PricingページやAWS Pricing APIからデータを取得して即座に回答
  3. コストレポートと分析の生成

    • IaC実装に基づいた包括的なコストレポートの生成
    • コスト最適化の推奨事項提示

前提条件

  1. Astralからuvをインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. uv python install 3.10でPython 3.10をインストール

  2. AWSサービスにアクセスするためのAWS認証情報を設定

  3. AWS Pricing APIにアクセスするための適切な権限を持つIAMロール/ユーザー

AWS CLIのプロファイルにSSO認証を使う

インストール方法

Amazon Q Developer CLIでのMCP設定

Amazon Q Developer CLIでMCPを設定するには、~/.aws/amazonq/mcp.jsonファイルに以下の設定を追加する。

{
  "mcpServers": {
    "awslabs.cost-analysis-mcp-server": {
      "command": "uvx",
      "args": [
        "awslabs.cost-analysis-mcp-server@latest"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
        "AWS_PROFILE": "your-aws-profile"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
-       "AWS_PROFILE": "your-aws-profile"
      },
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR",
+       "AWS_PROFILE": "[AWS プロファイル]"
      },

AWS認証について

Cost Analysis MCPサーバAWS_PROFILE環境変数で指定されたAWSプロファイルを使用する。指定がない場合、AWS設定ファイルの「default」プロファイルがデフォルトとして使用される。

指定したAWSプロファイルには、AWS Pricing APIにアクセスするための権限が必要となる。
MCPサーバは指定されたプロファイルを使用してboto3セッションを作成し、AWSサービスへの認証を行う。AWS IAM認証情報はローカルマシン上に保持され、厳密にAWSサービスへのアクセスにのみ使用される。

実際に使ってみる

Cost Analysis MCPサーバを設定したら、以下のような質問を試してみる。

「先月のEC2の使用コストを教えて」

Use AWS CLI
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
Running aws cli command:
Service name: ce
Operation name: get-cost-and-usage
Parameters:
- Filter: {"Dimensions":{"Key":"SERVICE","Values":["Amazon Elastic Compute Cloud - Compute"]}}
- GroupBy: [{"Key":"SERVICE","Type":"DIMENSION"}]
- TimePeriod: {"End":"2025-04-01","Start":"2025-03-01"}
- Metrics: ["UnblendedCost"]
- Granularity: "MONTHLY"
Profile name: Billing-[アカウントID]
Region: us-east-1
Label: Get EC2 cost for last month

Using AWS CLI...
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔

🟢 Completed in 1.960s


2025年3月の EC2 使用コストは以下の通りです:

• サービス: Amazon Elastic Compute Cloud - Compute
• コスト: 0.0184590036 USD (約 0.02 USD)
• 通貨単位: USD

このコストは確定値であり、見積もりではありません。先月の EC2 インスタンスの使用コストは非常に少額だったよう
です。

「コスト最適化のためのおすすめを教えて」

コスト最適化のためのおすすめを提供します。「Billing-[アカウントID]」プロファイルで取得したコスト情報に基づいて
、以下の最適化案を検討してください:

## コスト分析結果

2025年3月のサービス別コスト内訳を確認したところ、以下のことがわかりました:

1. 最も高いコスト: Amazon S3 (約2.62 USD)
2. その他の主なコスト:
   • EC2関連 (EC2-Other): 0.13 USD
   • Elastic Load Balancing: 0.05 USD
   • EC2 Compute: 0.02 USD
   • Amazon VPC: 0.02 USD
   • AWS WAF: 0.01 USD

## コスト最適化のおすすめ

1. S3ストレージの最適化:
   • S3が最大のコスト要因なので、不要なデータの削除やライフサイクルポリシーの設定を検討
   • アクセス頻度の低いデータをS3 Glacier/Deep Archiveに移行
   • S3 Intelligent-Tieringの活用でアクセスパターンに基づいた自動最適化

2. EC2リソースの見直し:
   • 使用率の低いインスタンスのサイズダウンまたは停止
   • 開発/テスト環境の自動停止スケジュールの設定
   • Savings PlansまたはReserved Instancesの検討

3. ロードバランサーの最適化:
   • 不要なロードバランサーの削除
   • Application Load Balancerを使用している場合、トラフィックが少なければNetwork Load Balancerへの変更を検

4. 全般的な推奨事項:
   • AWS Budgetsを設定して予算アラートを作成
   • タグ付けを徹底し、コスト配分を明確化
   • AWS Cost Explorerで定期的なコスト分析を実施

現在のコスト構造では、S3ストレージの最適化が最も効果的な節約につながる可能性が高いです。詳細な分析と具体的な
アクションプランを作成するには、S3バケットの詳細情報やEC2インスタンスの使用状況などの追加情報が必要ですが、
現在のBillingプロファイルではそれらのリソースへのアクセス権限がないようです。

より詳細な最適化提案が必要な場合は、EC2やS3などのリソースへのアクセス権限を持つプロファイルでの分析をお勧め
します。

参考

おわりに

Cost Analysis MCPサーバを使用することで、AWSのコスト分析を自然言語で簡単に行うことができる。
Slackとかと連携させてコストがどれくらいかかっているかをメンバーが把握できるようになると面白そうか?

今後もAWSはMCPサーバの種類を増やしていく予定のようなので、引き続き注目していきたい。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。