infraport について
infraportは、CLIとstdio MCPを通じてTerraform RegistryのレコードとHCP Terraformのワークスペースにアクセスします。モジュール、プロバイダー、ポリシーの検索やワークスペースの確認に使え、Registryの呼び出しに認証情報は不要ですが、ワークスペースには `TFE_TOKEN` が必要です。
主な機能
- 01Registryのモジュール、プロバイダー、ポリシー検索
- 02Registryレコードと最新バージョンの取得
- 03HCP Terraformワークスペースの一覧と詳細表示
- 04CLIとstdio MCPサーバーの提供
活用シーン
- 01クエリに合うTerraformモジュールの検索
- 02プロバイダーやポリシーレコードの確認
- 03組織内ワークスペースの確認
MCP 対応
stdio MCPサーバーは、Terraform Registry用の8つのツールとワークスペース用の2つのツールを公開します。ワークスペースツールには `TFE_TOKEN` が必要で、Registryツールには認証情報が不要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
10掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | はい | Terraform Registry でモジュールを検索するためのテキストです。 |
| offset | number | いいえ | モジュール検索結果の任意のページネーションオフセットです。 |
| provider | string | いいえ | モジュール検索結果を単一のプロバイダーに絞り込むための任意のプロバイダー名です。 |
詳細
infraport
infraport は、Terraform の 2 つの公開インターフェースを参照する小さなリーダーです。 Terraform Registry ではモジュール、プロバイダー、Sentinel ポリシーセットが公開されます。infraport はこれらを検索し、単一のモジュール、プロバイダー、ポリシーセットのレコードを読み取ります。また、モジュールまたはプロバイダーの最新公開バージョンも取得できます。HCP Terraform ではワークスペースを管理します。infraport は組織内のワークスペースを一覧表示し、名前を指定して 1 つのワークスペースを読み取ります。1 つのバイナリで、コマンドラインインターフェースと stdio MCP サーバーの両方を提供します。
この 2 つのインターフェースには、重要な違いが 1 つあります。Registry は認証情報を必要としません。Registry のコマンドとツールは、認証情報がなくても動作し、Authorization ヘッダーが送信されることはありません。トークンが必要なのは 2 つのワークスペースツールだけです。HCP Terraform API トークンを環境変数 TFE_TOKEN に設定すると、app.terraform.io に Authorization: Bearer として送信されます。TFE_TOKEN が設定されていない場合、ワークスペースの呼び出しは変数名を示すエラーで失敗し、リクエストは送信されません。Registry の呼び出しには影響しません。
インストール
npx @reneturcios/infraport search-modules vpc
または、コンテナーイメージを実行します。
docker run -i -e TFE_TOKEN ghcr.io/cloudcorprecords/infraport
コンテナーはデフォルトで MCP サーバーを起動します(以下を参照)。CLI として使用するには、CLI 引数を渡します。
CLI
infraport search-modules vpc
infraport module terraform-aws-modules vpc aws
infraport module-version terraform-aws-modules vpc aws
infraport search-providers aws
infraport provider hashicorp aws
infraport provider-version hashicorp aws
infraport search-policies tags
infraport policy hashicorp enforce-tags
export TFE_TOKEN=<your HCP Terraform token>
infraport workspaces my-org
infraport workspace my-org prod
infraport --version
各コマンドは、上流の JSON ペイロードを出力します。2 つの *-version コマンドは、抽出した version と、その取得元である Registry の完全なペイロードを含む小さなオブジェクトを出力します。終了コードは次のとおりです。
0 は成功時、1 は呼び出し失敗時(ワークスペースコマンドでの TFE_TOKEN 未設定や API エラーを含む)、2 は使用方法のエラー時です。
MCP サーバー
1 つのバイナリで両方のインターフェースを提供します。mcp サブコマンドは stdio MCP サーバーを起動します。
npx -y @reneturcios/infraport mcp
MCP クライアントの設定:
{
"mcpServers": {
"infraport": {
"command": "npx",
"args": ["-y", "@reneturcios/infraport", "mcp"],
"env": { "TFE_TOKEN": "..." }
}
}
}
env エントリが必要なのは 2 つのワークスペースツールだけです。8 つの Registry ツールは、これがなくても動作します。
ツール
| ツール | 入力 | 返される内容 |
|---|---|---|
search_modules | query(必須)、provider、offset(任意) | クエリに一致する Registry のモジュール。 |
get_module_details | namespace、name、provider(必須)、version(任意) | モジュールのレコード。 |
get_latest_module_version | namespace、name、provider(必須) | モジュールのレコードから抽出した最新バージョンと、そのレコード。 |
search_providers | query(必須)、offset(任意) | クエリに一致する Registry のプロバイダー。 |
get_provider_details | namespace、type(必須)、version(任意) | プロバイダーのレコード。 |
get_latest_provider_version | namespace、type(必須) | プロバイダーのレコードから抽出した最新バージョンと、そのレコード。 |
search_policies | query(必須)、offset(任意) | クエリに一致する Registry のポリシーセット。 |
get_policy_details | namespace、name(必須) | ポリシーセットのレコード。 |
list_workspaces | organization(必須) | 組織内のワークスペース。TFE_TOKEN が必要です。 |
get_workspace | organization、workspace(必須) | 1 つのワークスペース。TFE_TOKEN が必要です。 |
Registry の呼び出しでは https://registry.terraform.io/v1 を使用し、認証情報は送信しません。ワークスペースの呼び出しでは https://app.terraform.io/api/v2 を使用し、Bearer トークンと application/vnd.api+json のコンテンツタイプを送信します。
このビルドが対応するのは、基本的な機能の一部です。上記の 8 つの Registry ツールに加え、ワークスペースの一覧表示と読み取りに対応しています。実行の管理、ワークスペースの作成や変更、変数の編集、モジュール、プロバイダー、ポリシーの公開には対応していません。
開発
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。