AWS Billing MCPサーバーでAWSの請求をClaude Codeに読ませる手順
AWS Billing and Cost Management MCPサーバーをClaude Codeに接続し、月次の増減要因をサービス別・アカウント別に出す手順と、読み取り専用IAMに絞る設定を示します。
AWS Billing and Cost Management MCPサーバーとは
AWS Billing and Cost Management MCPサーバーは、AWSの請求・コスト関連APIをMCPツールとして公開するサーバーです。awslabsのMCPリポジトリに含まれ、Cost Explorer、Budgets、Cost Optimization Hub、Compute Optimizer、Savings Plansなどを自然言語から呼び出せます。
Claude Codeに繋ぐと、請求コンソールを開かずに「先月から増えたサービスはどれか」「どのアカウントが原因か」と聞けます。呼び出しは手元のAWS認証情報で行われ、AWSのサービス制限とクォータにも従います。つまりこのサーバーに与える権限が、そのままClaudeに見せる請求データの範囲です。
この記事は、接続、月次の増減要因の出し方、読み取り専用IAMへの絞り込み、費用面の注意点を順に扱います。
接続前に用意するもの
前提は次の3点です。
uvとPython 3.10以上(uvxでサーバーを起動するため)- AWS認証情報(
aws configureか環境変数で設定したプロファイル) - 請求APIを呼べるIAMロールまたはユーザー
Cost Explorerなど一部のAPIは提供リージョンが限られます。サーバーの設定では AWS_REGION に us-east-1 を指定する例が示されています。
Claude Codeに登録する
stdio方式のMCPサーバーは claude mcp add で追加します。-- より後ろがサーバーの起動コマンドです。AWS用のプロファイルとリージョンは --env で渡します。
claude mcp add \
--env AWS_PROFILE=billing-readonly \
--env AWS_REGION=us-east-1 \
--env FASTMCP_LOG_LEVEL=ERROR \
--transport stdio aws-billing \
-- uvx awslabs.billing-cost-management-mcp-server@latest登録後は claude mcp list でサーバーが並ぶことを確かめ、セッション内では /mcp で接続状態を見ます。
/mcpWindowsでは起動コマンドが異なり、--from でパッケージ名を渡したうえで awslabs.billing-cost-management-mcp-server.exe を実行する形になります。
スコープの選び方
登録先は3種類です。請求データはチームの全員に見せるものではないため、既定のローカルスコープか、自分の全プロジェクトで使うユーザースコープが無難です。
| スコープ | 読み込まれる範囲 | チーム共有 | 保存先 |
|---|---|---|---|
| ローカル(既定) | 読み込まれる範囲登録したプロジェクトのみ | チーム共有なし | 保存先~/.claude.json |
| プロジェクト | 読み込まれる範囲そのプロジェクト | チーム共有あり(バージョン管理) | 保存先プロジェクトルートの .mcp.json |
| ユーザー | 読み込まれる範囲自分の全プロジェクト | チーム共有なし | 保存先~/.claude.json |
チームで共有する .mcp.json に入れる場合は、プロファイル名を直書きせず環境変数展開を使います。${VAR:-default} の形で既定値も書けます。
{
"mcpServers": {
"aws-billing": {
"command": "uvx",
"args": ["awslabs.billing-cost-management-mcp-server@latest"],
"env": {
"AWS_PROFILE": "${AWS_PROFILE:-billing-readonly}",
"AWS_REGION": "us-east-1"
}
}
}
}アクセスキーを .mcp.json に書くのは避けます。プロファイル名だけを置き、キー本体は ~/.aws 側に残す構成にします。
月次の増減要因を出す
接続できたら、Claude Codeに期間と切り口を指定して聞きます。例えば次のような依頼です。
先月と先々月のAWS請求を比較して、増えた額の大きい順にサービスを5つ挙げて。
そのうち上位2つについて、増加の要因とリンクアカウント別の内訳も出して。サーバーには、この種の問いに対応するツールが用意されています。
| 知りたいこと | 使われるツール |
|---|---|
| 期間同士の増減 | 使われるツールget_cost_and_usage_comparisons |
| 増減の要因(ドライバー) | 使われるツールget_cost_comparison_drivers |
| サービス別・アカウント別の実績 | 使われるツールget_cost_and_usage |
| 絞り込みに使う値の候補 | 使われるツールget_dimension_values |
| 予測 | 使われるツールget_cost_forecast / get_usage_forecast |
| 異常な支出 | 使われるツールget_anomalies |
月次比較では、get_cost_and_usage_comparisons で増えたサービスを特定し、get_cost_comparison_drivers で要因を掘る二段階の流れになります。複数のリンクアカウントをまたぐ分析にも対応しており、アカウント別の内訳はここで出せます。
依頼の書き方で結果が安定する
ツールの呼び出し回数と取得量は、依頼の粒度で変わります。次の3点を依頼文に含めると、取得範囲が絞られます。
- 期間を日付で書く(「先月」より
2026-09-01から2026-09-30) - 見る単位を指定する(サービス別、リンクアカウント別、タグ別)
- 上位N件に限る
Claude Codeは、MCPツールの出力が10,000トークンを超えると警告を出し、既定では25,000トークンで出力を打ち切ります。上限は MAX_MCP_OUTPUT_TOKENS で変えられますが、上げる前に、依頼を絞って取得量を減らす方を先に試す方が安全です。
異常検知と予算の確認
増減要因とは別に、get_anomalies で異常な支出パターンとその原因を、describe_budgets で予算と実績の対比を取れます。月初に「今月の予算消化率と異常検知の有無」を1回聞く運用なら、請求コンソールを巡回する手間がなくなります。無料利用枠の消費は get_free_tier_usage が担当します。
月初のチェックは、次のようにまとめて頼めます。
今月ここまでの予算消化率を予算ごとに出して。
あわせて、直近30日に検知された異常な支出があれば、サービスと原因を教えて。コストカテゴリ別に集計する
サービス別やアカウント別では粒度が合わないときは、コストカテゴリで束ねる方法があります。READMEの機能一覧には、コストカテゴリの定義を取得する機能があり、ルールや分割課金(スプリットチャージ)のルール、処理状況まで読めます。必要な権限は ce:DescribeCostCategoryDefinition と ce:ListCostCategoryDefinitions です。月次比較の絞り込みに使う ce:GetCostCategories は、読み取り専用IAMのポリシーに入れてあります。「プロダクトA」「共通基盤」のようなカテゴリ名を定義済みなら、依頼文にその名前を書いて内訳を頼めます。
読み取り専用のIAMに絞る
請求分析だけが目的なら、必要なのは読み取り系のアクションです。リポジトリのREADMEには、機能ごとに必要なアクションが一覧されています。月次の増減分析に使うものだけを抜き出すと、次のポリシーになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ce:GetCostAndUsage",
"ce:GetCostAndUsageComparisons",
"ce:GetCostComparisonDrivers",
"ce:GetAnomalies",
"ce:GetDimensionValues",
"ce:GetCostForecast",
"ce:GetUsageForecast",
"ce:GetTags",
"ce:GetCostCategories",
"budgets:ViewBudget",
"freetier:GetFreeTierUsage"
],
"Resource": "*"
}
]
}このポリシーを付けた専用プロファイル(例では billing-readonly)を AWS_PROFILE に指定します。READMEの一覧にある他のアクションは、使う機能が決まってから足します。
書き込み権限が要る機能に注意
READMEの権限一覧には、読み取りでは済まないものが混じっています。
- S3 Storage Lens分析:
athena:CreateWorkGroup、athena:CreateTable、s3:PutObject、s3:PutStorageLensConfigurationなどが並びます。Athenaのワークグループやテーブルを作る権限も含まれます - Savings Plansの購入分析:
ce:StartCommitmentPurchaseAnalysisやce:StartSavingsPlansPurchaseRecommendationGenerationなどStart系が含まれます。購入そのものではなく分析や推奨の生成を開始するアクションです
請求の閲覧だけが目的なら、これらは付与しません。Storage Lensを使う場合は STORAGE_LENS_MANIFEST_LOCATION に、マニフェストのS3 URIを環境変数で渡す必要もあります。使うときは、用途を分けた別のプロファイルとして登録すると権限が混ざりません。
環境変数を絞って漏えいを防ぐ
stdio MCPサーバーは、既定ではClaude Codeを起動したシェルの環境変数を引き継ぎます。シェルに他のクレデンシャルがあるなら、CLAUDE_CODE_MCP_ALLOWLIST_ENV=1 で渡す変数を env に書いたものだけに絞れます。詳しくはCLAUDE_CODE_MCP_ALLOWLIST_ENVの解説にあります。
認証が一時クレデンシャルの場合は、期限切れの対処も要ります。AWS認証の自動更新はawsAuthRefreshの設定で扱っています。
費用と取得量の注意点
Cost Explorer APIはリクエストごとの課金です。AWSの料金ページでは、標準の請求ビューへのリクエスト1回につき0.01ドルと記載されています。カスタム請求ビューを使う場合は、ソースの数だけ掛かります。
Claudeが1つの質問に対して何度もAPIを叩くと、その分が積み上がります。定期実行のスクリプトに組み込むときは、1回の依頼で呼ばれる回数を見積もってから進めます。
レート制限に当たったときは、期間や粒度を分けて依頼し直します。
増減分析のあとに使える機能と必要な権限
増減要因が分かった次の問いに答える機能も、同じサーバーに入っています。使う機能を決めてから、対応する権限を専用プロファイルに足します。
| 次の問い | 機能 | 追加する権限の例 |
|---|---|---|
| 無駄な構成はないか | 機能Cost Optimization Hub、Compute Optimizer | 追加する権限の例cost-optimization-hub:ListRecommendations、compute-optimizer:GetEC2InstanceRecommendations |
| コミットメントは足りているか | 機能Savings Plans、リザーブドインスタンスの利用率・カバレッジ | 追加する権限の例ce:GetSavingsPlansUtilization、ce:GetReservationCoverage |
| タグ別に集計できるか | 機能コスト配分タグ | 追加する権限の例ce:ListCostAllocationTags |
| 請求書の中身を確認したい | 機能AWS Invoicing | 追加する権限の例invoicing:ListInvoiceSummaries |
| Organizationsの請求グループ別に見たい | 機能Billing Conductor | 追加する権限の例billingconductor:ListBillingGroups |
コスト配分タグは、タグごとの有効・無効の状態を一覧できます。タグ別の内訳を依頼する前に、対象のタグが有効かどうかを list_cost_allocation_tags で確かめておくと、空の結果で悩まずに済みます。
READMEには、Graviton移行の分析とSavings Plansの購入推奨を案内する専用プロンプトも載っています。ただしSavings Plansの購入推奨は、「書き込み権限が要る機能に注意」で触れたとおり Start 系アクションを含みます。月次の増減確認だけの用途なら、最初は付けずに運用を始めます。
Invoicingの list_invoice_summaries は、請求書番号、請求期間、発行日・支払期日、税や割引の内訳を返すツールです。経理への報告資料を作る場面で、コンソールの請求書画面と数字を突き合わせる確認に使えます。
他のAWS系MCPサーバーとの使い分け
AWSのMCPサーバーは用途ごとに分かれています。
- 請求・コストの参照は、この記事のBilling and Cost Managementサーバー
- AWS CLIの実行全般はaws-api-mcp-server
- CloudFormationやCDKの検証はaws-iac-mcp-server
請求の問い合わせだけなら、aws-api-mcp-server でCLIを叩かせるより、コスト用に定義済みのツールがあるこのサーバーの方が権限を絞りやすくなります。AWS CLI全体を実行できる権限を、請求の確認のために渡す必要がないためです。
分析系MCPをClaude Codeに繋ぐ型は共通です。同じ流れでデータ基盤に繋ぐ例はGA4のMCPサーバーにあります。
よくあるつまずき
- 登録コマンドが拒否される:
--envの直後にサーバー名を置くと、名前がもう1組のKEY=valueとして読まれて拒否されます。登録例で--transport stdioを名前の手前に挟んでいるのはそのためです - Cost Explorerの呼び出しが失敗する: READMEによると、
AWS_REGIONはAPI呼び出しのリージョンを決め、Cost Explorerのように提供リージョンが限られるAPIがあります。設定例はus-east-1です - 出力が途中で切れる: MCPツールの出力は既定で25,000トークンまでです。上限を上げる前に、期間・単位・上位N件で依頼を絞ります
- 一時クレデンシャルで突然失敗する: Dockerで
.envに渡す構成を含め、READMEには認証情報を最新に保つ必要があると書かれています。期限が切れたら再取得します - タグ別の結果が空になる: 対象のタグが有効になっていない可能性があります。
list_cost_allocation_tagsで状態を確かめます
まとめ
要点は、サーバーの機能より先に権限を決めることです。ce:Get* と budgets:ViewBudget などに絞った専用プロファイルを作り、AWS_PROFILE でそれだけを渡せば、Claudeが見られるのは請求の読み取りに限られます。
そのうえで依頼を期間・単位・上位N件で絞れば、月次の増減要因はサービス別、アカウント別に数回のツール呼び出しで出ます。Cost Explorer APIの課金だけは、定期実行に載せる前に回数を見積もっておく項目です。