infracost について
infracost は Infracost CLI を実行し、Infrastructure as Code のコスト変化を見積もり、比較、公開する MCP サーバーです。クラウドインフラの開発やレビューで、レポート作成やプルリクエストへのコメント、CLI 設定に利用できます。
主な機能
- 01インフラコストの基準値を作成
- 02計画変更によるコスト差分を比較
- 03JSON・テーブル・HTML形式で出力
- 04プルリクエストにコストコメントを投稿
- 05レポートのアップロードとCLI設定
- 06使用量ファイルのテンプレート生成
活用シーン
- 01Terraform プロジェクトの月額コストを見積もる
- 02プルリクエストのコスト影響を確認する
- 03Infracost Cloud にコストレポートをアップロードする
- 04リソース種別ごとの使用量ファイルを作成する
MCP 対応
MCP サーバーは、コスト見積もり、差分比較、レポート、共同作業、設定操作に使う 8 種類の Infracost CLI ツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
8掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | いいえ | Terraform/IaC ディレクトリまたはプラン JSON ファイルへのパス。 |
| apiKey | string | いいえ | Infracost API キー(INFRACOST_API_KEY 環境変数も使用できます)。 |
| fields | array | いいえ | 出力に含めるフィールド(all、price、monthlyQuantity、unit、hourlyCost、monthlyCost)。 |
| format | string | いいえ | 出力形式:table、json、html、diff、github-comment、gitlab-comment、azure-repos-comment、slack-message など。 |
| showSkus | boolean | いいえ | 出力に SKU の詳細を表示します。 |
| compareTo | string | いいえ | 比較用のベースライン Infracost JSON のパス。 |
| extraArgs | array | いいえ | 追加の CLI 引数。 |
| usageFile | string | いいえ | リソース使用量の見積もりに使用する Infracost 使用量ファイルのパス。 |
| configFile | string | いいえ | Infracost 設定ファイルのパス。 |
| syncUsageFile | boolean | いいえ | 使用量ファイルを不足しているリソースと同期します。 |
| timeoutSeconds | number | いいえ | コマンドのタイムアウト(秒)。 |
| workingDirectory | string | いいえ | コマンドを実行するディレクトリ。デフォルトは現在のディレクトリです。 |
| terraformPlanFlags | string | いいえ | 'terraform plan' に渡すフラグ。 |
| terraformWorkspace | string | いいえ | 使用する Terraform ワークスペース。 |
詳細
Infracost MCP サーバー
注記: これはコミュニティがメンテナンスする MCP サーバーです。Infracost の公式 Model Context Protocol サーバーではありません。
Terraform やその他の Infrastructure as Code プロジェクトで、インフラコストの変更を見積もり、比較し、公開するために Infracost CLI を実行する Model Context Protocol(MCP)サーバーです。
概要
このサーバーは、見積もり、レポート、コラボレーション、運用のワークフローに対応する8つの MCP ツールを提供します。
infracost_breakdown:ベースラインとなるコスト見積もりを生成します。infracost_diff:予定されているコスト変更を比較します。infracost_output:既存の Infracost JSON をさまざまな形式でレンダリングします。infracost_comment:対応する SCM プラットフォームに PR コメントを投稿します。infracost_upload:レポートを Infracost Cloud にアップロードします。infracost_configure:CLI 設定を取得または設定します。infracost_auth:認証フローを実行します。infracost_generate_usage:適切なデフォルト値を使って使用量ファイルを生成します。
プラットフォーム互換性
この MCP サーバーはプラットフォームに依存せず、ローカル環境と CI 環境の両方で動作します。
- ローカル開発
- GitHub Actions
- GitLab CI/CD
- Azure DevOps
- CircleCI、Jenkins、Bitbucket Pipelines
- AI エージェントおよび Copilot ワークフロー
主な要件は、Node.js と Infracost CLI バイナリです。
ツール一覧
| ツール | カテゴリ | 一般的な結果 |
|---|---|---|
infracost_breakdown | 見積もり | 現在の IaC の月次コストベースライン |
infracost_diff | 比較 | 予定されている変更によるコスト差分 |
infracost_output | レポート | レンダリングされたテーブル/JSON/HTML/コメント出力 |
infracost_comment | コラボレーション | 影響の見積もりを含む PR コメント |
infracost_upload | クラウド同期 | Infracost Cloud で閲覧できるコストレポート |
infracost_configure | 設定 | 保存された CLI 設定の更新/読み取り |
infracost_auth | 認証 | Infracost Cloud のログインフロー |
infracost_generate_usage | ユーティリティ | デフォルト値が入力済みの使用量ファイルテンプレート |
ツール
infracost_breakdown
infracost breakdown を実行します。
入力:
workingDirectory(文字列、任意):コマンドの作業ディレクトリです。path(文字列、任意):Terraform/IaC ディレクトリまたはプラン JSON のパスです。configFile(文字列、任意):Infracost 設定ファイルのパスです。usageFile(文字列、任意):使用量ファイルのパスです。format(文字列、任意):出力形式です。デフォルト:table。fields(文字列[]、任意):出力に含めるフィールドです。showSkus(ブール値、任意):SKU の詳細を含めます。syncUsageFile(ブール値、任意):検出されたリソースに合わせて使用量ファイルを同期します。compareTo(文字列、任意):ベースラインとなる Infracost JSON のパスです。terraformWorkspace(文字列、任意):Terraform ワークスペースです。terraformPlanFlags(文字列、任意):terraform planのフラグです。timeoutSeconds(数値、任意):タイムアウト時間(秒)です。extraArgs(文字列[]、任意):追加の CLI 引数です。
infracost_diff
infracost diffを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。path(string、任意):Terraform/IaC ディレクトリまたはプラン JSON へのパス。configFile(string、任意):Infracost 設定ファイルへのパス。usageFile(string、任意):使用状況ファイルへのパス。format(string、任意):出力形式。デフォルト:table。compareTo(string、任意):ベースラインとなる Infracost JSON のパス。showSkus(boolean、任意):SKU の詳細を含めます。syncUsageFile(boolean、任意):検出されたリソースに合わせて使用状況ファイルを同期します。terraformWorkspace(string、任意):Terraform ワークスペース。terraformPlanFlags(string、任意):terraform planのフラグ。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_output
infracost outputを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。path(string、任意):Infracost JSON ファイルへのパス。省略した場合は自動検出されます。format(string、任意):出力形式。デフォルト:table。fields(string[]、任意):出力に含めるフィールド。showSkus(boolean、任意):SKU の詳細を含めます。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_comment
infracost commentを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。platform(string、任意):プラットフォーム(github、gitlab、azure-repos、bitbucket)。デフォルト:github。path(string、任意):Infracost JSON ファイルへのパス。省略した場合は自動検出されます。repo(string、任意):リポジトリ(owner/repo)。pullRequest(string、任意):プルリクエスト番号。commit(string、任意):コミット SHA。token(string、任意):プラットフォームのトークン。tag(string、任意):コメントタグ。behavior(string、任意):コメントの更新動作。dryRun(boolean、任意):投稿せずに生成します。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_upload
infracost uploadを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。path(string、任意):Infracost JSON ファイルへのパス。省略した場合は自動検出されます。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_configure
infracost configureを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。set(string、任意):設定値を設定します。get(string、任意):設定値を読み取ります。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_auth
infracost auth loginを実行します。
入力:
workingDirectory(string、任意):コマンドの作業ディレクトリ。timeoutSeconds(number、任意):タイムアウト(秒)。extraArgs(string[]、任意):追加の CLI 引数。
infracost_generate_usage
指定したリソースタイプの使用量ファイルを、適切なデフォルト値を設定して生成します。このユーティリティツールは、ワークロードに合わせてカスタマイズできる入力済みテンプレートを提供し、infracost_configure を補完します。未加工の JSON と、書式設定されたガイダンスの両方を返します。
入力:
resourceTypes(string[]、必須):含めるリソースタイプ(例:["aws_lambda_function", "aws_s3_bucket"])。outputFilePath(string、任意):使用量ファイルの保存先パス(ガイダンスのみ)。includeGuidance(boolean、任意):書式設定されたガイダンスを含めます。デフォルト:true。onlyJson(boolean、任意):未加工の JSON のみを返します(ガイダンスなし)。デフォルト:false。
対応するリソースタイプ:aws_lambda_function、aws_instance、aws_db_instance、aws_s3_bucket、aws_dynamodb_table、aws_ebs_volume、aws_cloudfront_distribution、aws_lb、aws_nat_gateway、google_compute_instance、google_storage_bucket、azurerm_windows_virtual_machine、azurerm_linux_virtual_machine、azurerm_storage_account、azurerm_mssql_database。
プロンプトのレシピ集
Copilot Chat で @infracost を使用し、以下の簡潔なプロンプトを入力します。
パスを指定しない場合、CLI ツールはデフォルトで現在のワークスペースのルートを使用します。
Copilot のコンテキストとしてファイルまたはフォルダー(#file または #folder)を追加した場合は、プロンプトで参照してください。ツールはそのパスを対象にします。
サーバーは一般的なレポートファイル(infracost-diff.json、infracost-base.json、infracost.json)を自動検出するため、通常は infracost_output、infracost_comment、infracost_upload に path を渡す必要はありません。
クイックプロンプト
@infracost run infracost_breakdown
@infracost run infracost_diff
@infracost run infracost_output
@infracost run infracost_comment with dryRun true
@infracost run infracost_upload
内訳を実行する(infracost_breakdown)
@infracost run infracost_breakdown
期待される出力:コマンド出力、終了コード、stdout、stderr を含むベースラインのコスト見積もり。
差分を実行する(infracost_diff)
@infracost run infracost_diff
期待される出力:計画された変更と現在のベースラインを比較したコストの差分。
出力をレンダリングする(infracost_output)
@infracost run infracost_output with format html
期待される出力:既存の Infracost JSON から書式設定された出力(可能な場合は自動検出)。
PR コメントを投稿する(infracost_comment)
@infracost run infracost_comment with repo owner/repo and pullRequest 123 and dryRun true
期待される出力:生成されたコメントのペイロード、またはドライランモードでない場合は投稿されたコメント。プラットフォームのデフォルトは github です。
レポートをアップロードする(infracost_upload)
@infracost run infracost_upload
期待される出力:Infracost Cloud への取り込み完了の確認。
CLI を設定する(infracost_configure)
@infracost run infracost_configure with:
- set: currency=USD
期待される出力:CLI からの設定更新の確認。
認証する(infracost_auth)
@infracost run infracost_auth
期待される出力:認証フローのプロンプト、またはログイン成功の詳細。
使用量ファイルを生成する(infracost_generate_usage)
@infracost run infracost_generate_usage with:
- resourceTypes: ["aws_lambda_function", "aws_s3_bucket", "aws_dynamodb_table"]
- outputFilePath: ./infracost-usage.json
- includeGuidance: true
期待される出力:適切なデフォルト値が設定された入力済みの使用量ファイル JSON と、カスタマイズ方法および使用方法に関するガイダンス。プログラムで処理する場合は、onlyJson: true を指定すると JSON のみが返されます。
依存関係
システム依存関係
- Node.js
>=24.14.0 - npm(Node.js に同梱)
- インストールされ、
PATHから利用できる Infracost CLI(またはINFRACOST_BINARY_PATH経由)
npm の依存関係
実行時:
@modelcontextprotocol/sdk(MCP サーバー SDK)
開発時:
typescript(ビルド/コンパイル)tsx(開発用ランナー)vitest(単体テストランナー)@types/node(Node.js の型定義)
環境変数
INFRACOST_API_KEY:クラウド連携機能用の Infracost API キー。INFRACOST_BINARY_PATH:Infracost バイナリのパスを上書きします。
インストール
npm install
npm run build
設定
VS Code Copilot Chat での使用
このワークスペースは .vscode/mcp.json で事前設定されています。
{
"servers": {
"infracost": {
"type": "stdio",
"command": "node",
"args": ["./dist/index.js"]
}
}
}
MCP 設定を変更した後は、VS Code を再読み込みします(Cmd+Shift+P -> Developer: Reload Window)。
その後、Copilot Chat から @infracost を使ってサーバーに問い合わせます。例:
@infracost run infracost_breakdown
@infracost run infracost_diff
その他の MCP クライアントでの使用
ビルド済みのエントリーポイントを使い、stdio トランスポートを使用します。
{
"name": "infracost-mcp-server",
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/infracost-mcp/dist/index.js"]
}
まず npm run build を実行してビルドし、その後 MCP クライアントを起動します。
実行
npm start
開発モード:
npm run dev
ビルド済みモード:
npm run start
デバッグ
.vscode/launch.json を使用します。
Debug MCP Server(npm run devを実行します)Debug MCP Server (Built)(ビルド後にdist/index.jsを実行します)
src/index.ts にブレークポイントを設定してから、F5 を押します。
テスト
Copilot Chat のシナリオ、手動での JSON-RPC チェック、トラブルシューティングのガイダンスについては、docs/TESTING.md をご覧ください。
Copilot Chat でのクイック検証プロンプト:
@infracost run infracost_breakdown
インタラクティブな VS Code ワークフロー
1. PR のコスト影響レビュー
- ベースラインを生成します。
@infracost run infracost_breakdown with:
- path: .
- format: json
- 差分を生成します。
@infracost run infracost_diff with:
- path: .
- format: diff
- PR コメントの下書きを作成します。
@infracost run infracost_comment with:
- platform: github
- path: infracost-diff.json
- repo: owner/repo
- pullRequest: 123
- dryRun: true
2. レポート作成パイプラインのセットアップ
- 人が読めるレポートをレンダリングします。
@infracost run infracost_output with:
- path: infracost-diff.json
- format: html
- 一元管理用にアップロードします。
@infracost run infracost_upload with:
- path: infracost-diff.json
3. 環境のブートストラップ
- デフォルトを設定します。
@infracost run infracost_configure with:
- set: currency=USD
- 認証します。
@infracost run infracost_auth
ベストプラクティス
- モノレポ内で実行する場合は、
workingDirectoryを明示してください。 - 機械処理には
--format jsonを、人によるトリアージには--format tableを使用してください。 - 大規模な Terraform プランを処理できるよう、
timeoutSecondsを十分に大きくしてください。 - 本番環境の PR スレッドに投稿する前に、
dryRun=trueを設定したinfracost_commentの使用を推奨します。 - Infracost Cloud で過去の状況を確認するには、
infracost_uploadを使用してください。
その他のユースケース
- プルリクエストでのマージ前コストゲート。
- CI で定期的に実行するベースラインコストのスナップショット。
- リリーストレイン向けのコスト差分レポート。
- アップロード済みレポートに基づくチームレベルの FinOps ダッシュボード。
関連プロジェクト
Infracost リソース
Model Context Protocol
コミュニティとコントリビューション
クレジットとライセンス
Down At The Bottom Of The Mole Hole 組織のもと、Carl Dawson がメンテナンスしています。
開発
npm run lint
npm test
npm run build
ライセンス
MIT ライセンスのもとでライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
