hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrations
Integrates with Codecov to track code coverage metrics during CI/CD runs with target coverage thresholds and PR status checks
Provides containerized deployment option with multi-architecture support for AMD64/x86_64 and ARM64, with security isolation and consistent environment configuration
Distributes the containerized application through GitHub Packages with versioned releases and development builds tagged with Git commit SHA
AWS モデルコンテキストプロトコル (MCP) サーバー
AI アシスタントがモデルコンテキストプロトコル (MCP) を介して AWS CLI コマンドを実行できるようにする軽量サービス。
概要
AWS MCPサーバーは、MCP対応AIアシスタント(Claude Desktop、Cursor、Windsurfなど)とAWS CLI間の橋渡し機能を提供します。これにより、これらのアシスタントは以下のことが可能になります。
- AWS CLI ドキュメントの取得(
aws_cli_help
) - AWS のサービスとコマンドに関する詳細なヘルプを取得します - AWS CLI コマンドを実行する(
aws_cli_pipeline
) - Unix パイプを使用してコマンドを実行し、AI での使用に最適化されたフォーマットされた結果を受け取ります
デモ
このビデオでは、Claude Desktop と AWS MCP Server を使用して、AWS SSM エージェントがインストールされた新しい AWS EC2 インスタンスを作成する方法を説明します。
特徴
- コマンドドキュメント- AWS CLI コマンドの詳細なヘルプ情報
- コマンド実行- AWS CLI コマンドを実行し、人間が読める形式で結果を返す
- Unix パイプのサポート- 標準の Unix パイプとユーティリティを使用して AWS CLI 出力をフィルタリングおよび変換します
- AWS リソースコンテキスト- MCP リソース経由で AWS プロファイル、リージョン、アカウント情報、環境の詳細にアクセスします
- プロンプトテンプレート- ベストプラクティスに従った一般的な AWS タスク用の事前定義されたプロンプトテンプレート
- Docker 統合- マルチアーキテクチャ (AMD64/x86_64 および ARM64) をサポートするコンテナ化によるシンプルな導入
- AWS認証- ホストマシン上の既存のAWS認証情報を活用する
要件
- Docker (デフォルト) または Python 3.13+ (およびローカルにインストールされた AWS CLI)
- AWS認証情報が設定されている
はじめる
注:セキュリティと信頼性を確保するため、サーバーをDockerコンテナ内で実行することを強くお勧めします。重要な考慮事項については、 「セキュリティに関する考慮事項」セクションをご確認ください。
サーバー実行オプション 1: Docker の使用 (推奨)
Docker イメージは、AMD64/x86_64 (Intel/AMD) と ARM64 (Apple Silicon M1-M4、AWS Graviton) の両方のアーキテクチャをサポートしています。
注: GitHub Packages の公式イメージはマルチアーキテクチャであり、システムに適したバージョンが自動的に使用されます。
CopyDockerイメージタグ:
latest
: 最新の安定リリースxyz
(例:1.0.0
): 特定のバージョンsha-<commit-sha>
: GitコミットSHAでタグ付けされた開発ビルド(例:sha-gb697684
)
サーバー実行オプション2: Pythonの使用
**注意して使用してください:**ネイティブ環境での実行には慎重な環境設定が必要であり、推奨されるDockerデプロイメントと比較してセキュリティリスクが高くなります。 「セキュリティに関する考慮事項」セクションに記載されている影響について必ず理解してください。
構成
AWS MCP サーバーは環境変数を使用して設定できます。
環境変数 | 説明 | デフォルト |
---|---|---|
AWS_MCP_TIMEOUT | コマンド実行タイムアウト(秒) | 300 |
AWS_MCP_MAX_OUTPUT | 最大出力サイズ(文字数) | 100000 |
AWS_MCP_TRANSPORT | 使用するトランスポートプロトコル(「stdio」または「sse」) | 標準入出力 |
AWS_PROFILE | 使用するAWSプロファイル | デフォルト |
AWS_REGION | 使用するAWSリージョン | 米国東部1 |
AWS_MCP_SECURITY_MODE | セキュリティ モード (「厳格」または「許可」) | 厳しい |
AWS_MCP_SECURITY_CONFIG | カスタムセキュリティ構成ファイルへのパス | 「」 |
**重要:**マウントされた~/.aws
ファイルまたは環境変数を介してサーバーに提供されるAWS認証情報は、安全に管理してください。認証情報は、 「セキュリティに関する考慮事項」セクションに記載されている最小権限の原則に従っていることを確認してください。Docker経由で実行する場合は、これらの変数がコンテナ環境に正しく渡されていることを確認してください(例: docker run -e VAR=value ...
)。
セキュリティに関する考慮事項
AWS環境に対してコマンドを実行する際は、セキュリティが最優先事項です。AWS MCP Serverは機能を提供しますが、安全な設定と実行はお客様の責任となります。以下の点を厳守してください。
1. 推奨されるデプロイメント: Dockerコンテナ
- 分離: Dockerコンテナ内でサーバーを実行することは**、強く推奨されるデフォルトのデプロイ方法です。コンテナ化により、ファイルシステムとプロセスの重要な分離が実現します。パイプ経由で実行される、潜在的に破壊的なUnixコマンド(
rm
、mv
など)は、たとえ誤用されたとしても、一時的なDocker環境内に閉じ込められ、ホストマシンのファイルシステムに影響を与えることはありません**。コンテナは簡単に停止・再作成できます。 - 制御された環境: Docker は、必要な依存関係を持つ一貫した環境を確保し、予期しない動作を減らします。
2. AWS 認証情報と IAM 最小権限(重要)
- ユーザーの責任: AWS 認証情報をサーバーに提供します (マウントされた
~/.aws
または環境変数経由)。 - 最小限の権限が不可欠です:サーバーは、お客様が提供した認証情報を使用してAWS CLIコマンドを実行します。これらの認証情報は、このツールを通じて実行するAWSアクションに対してのみ 、必要最小限の権限(最小限の権限)が設定されたIAMプリンシパル(ユーザーまたはロール)に属していることが非常に重要**です。
- ルート認証情報を使用しない: AWS アカウントのルートユーザー認証情報は使用しないでください。
- **定期的に権限を確認する:**認証情報に関連付けられた IAM 権限を定期的に監査します。
- 影響の制限:適切に設定されたIAM権限は、サーバー経由で実行されるあらゆるコマンド(意図的か否かに関わらず)の潜在的な影響を制限するための主要なメカニズムです。たとえコマンドが操作されたとしても、特定のIAMポリシーで許可されたアクションのみを実行できます。
3. 信頼できるユーザーモデル
- サーバーは、MCPクライアント(Claude Desktop、Cursorなど)を操作するエンドユーザーが、サーバーを設定し、最小限の権限を持つAWS認証情報を提供した信頼できるユーザーと同一であると想定します。信頼できないユーザーにサーバーまたは接続されたクライアントを公開しないでください。
4. 実行リスクの理解(現在の実装)
- **コマンド実行:**現在の実装では、シェル機能(サブプロセス呼び出しで
shell=True
使用)を使用してAWSコマンドを実行し、Unixパイプを処理しています。このアプローチは便利ですが、入力コマンド文字列が操作された場合(コマンドインジェクション)に固有のリスクを伴います。 - 運用制御による軽減: 信頼できるユーザー モデルとDocker デプロイメントのコンテキストでは、これらのリスクは運用的に軽減されます。
- 信頼できるユーザーは、自身の環境に対して意図的に悪意のあるコマンドを提供しないことが前提となります。
- Docker にはファイルシステムの副作用が含まれます。
- 重要なのは、IAM の最小権限によって、実行できる AWSアクション の範囲が制限されることです。
- 認証情報漏洩リスク:コンテナ化とIAM(ユーザー・アイデンティティ・アクセス・コントロール)を導入しているにもかかわらず、高度なコマンドインジェクションによって、コンテナ内にマウントされた認証情報(
~/.aws
)や環境変数の読み取りと、それらを漏洩(例:curl
経由)しようとする可能性があります。漏洩する可能性のある認証情報の価値を制限するために、厳格なIAMポリシーは依然として最も重要な防御策です。
5. ネットワーク露出(SSEトランスポート)
sse
トランスポート(ネットワークリスナーを暗黙的に使用する)を使用する場合は、サーバーを信頼できるネットワークインターフェース(例:localhost
)にのみバインドするか、より広範囲に公開する場合は適切なネットワークセキュリティ制御(ファイアウォール、認証プロキシ)を実装してください。デフォルトのstdio
トランスポートはネットワークポートを開きません。
6. 共有責任の要約
- AWS MCP サーバーはツールを提供します。
- ユーザーは以下の責任を負います:
- 推奨される安全な Docker 環境内で実行します。
- 最小限の権限のAWS 認証情報を提供し、安全に管理します。
- 信頼できるユーザーのみがサーバー/クライアントと対話できるようにします。
- 該当する場合は、ネットワーク環境を保護します。
Docker のデプロイメントと IAM の最小権限構成を厳密に遵守することで、現在の実装で AWS MCP サーバーを安全に使用するのに必要な運用制御を確立します。
Claude Desktopとの統合
構成
AWS MCP Server を Claude Desktop と手動で統合するには:
- Claude Desktop 構成ファイルを見つけます:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 設定ファイルを編集してAWS MCP サーバーを追加します。Copy
- 変更を適用するには、 Claude Desktopを再起動してください。
- 再起動後、入力ボックスの右下隅にハンマー🔨アイコンが表示されます。
- これはAWS MCPサーバーが使用可能であることを示します
やり取りの例
AWS CLI ドキュメントの入手:
AWS CLI コマンドの実行:
コマンドパイプの使用:
AWS リソースへのアクセス:
プロンプトテンプレートの使用:
利用可能なプロンプトテンプレート
AWS MCP サーバーには、次の定義済みプロンプトテンプレートが含まれています。
コアオペレーション
プロンプト | 説明 | パラメータ |
---|---|---|
create_resource | ベストプラクティスに従って AWS リソースを作成するためのコマンドを生成する | resource_type 、 resource_name |
resource_inventory | 包括的なリソースインベントリを作成する | service 、 region (オプション) |
troubleshoot_service | サービスの問題をトラブルシューティングするためのコマンドを生成する | service 、 resource_id |
resource_cleanup | 資源を特定し安全に清掃する | service 、 criteria (オプション) |
セキュリティとコンプライアンス
プロンプト | 説明 | パラメータ |
---|---|---|
security_audit | 特定の AWS サービスのセキュリティ設定を監査する | service |
security_posture_assessment | AWS 環境全体の包括的なセキュリティ評価 | なし |
iam_policy_generator | 最小権限のIAMポリシーを作成する | service 、 actions 、 resource_pattern (オプション) |
compliance_check | 規格への準拠を確認する | compliance_standard 、 service (オプション) |
コストとパフォーマンス
プロンプト | 説明 | パラメータ |
---|---|---|
cost_optimization | サービスのコスト最適化の機会を見つける | service |
performance_tuning | AWSリソースのパフォーマンスを最適化および調整する | service 、 resource_id |
インフラストラクチャとアーキテクチャ
プロンプト | 説明 | パラメータ |
---|---|---|
serverless_deployment | ベストプラクティスに従ってサーバーレスアプリケーションをデプロイする | application_name 、 runtime (オプション) |
container_orchestration | コンテナ環境(ECS/EKS)のセットアップ | cluster_name 、 service_type (オプション) |
vpc_network_design | 安全な VPC ネットワークを設計および実装する | vpc_name 、 cidr_block (オプション) |
infrastructure_automation | インフラストラクチャ管理の自動化 | resource_type 、 automation_scope (オプション) |
multi_account_governance | 安全なマルチアカウント戦略を実装する | account_type (オプション) |
信頼性と監視
プロンプト | 説明 | パラメータ |
---|---|---|
service_monitoring | 包括的な監視を設定する | service 、 metric_type (オプション) |
disaster_recovery | エンタープライズグレードのDRソリューションを実装する | service 、 recovery_point_objective (オプション) |
安全
AWS MCP サーバーは、コマンドの検証とセキュリティに対して包括的な多層アプローチを実装します。
コマンド検証システム
サーバーは、3 層システムを通じてすべての AWS CLI コマンドを検証します。
- 基本的なコマンド構造:
- コマンドが「aws」プレフィックスで始まり、有効なサービスが含まれていることを確認します
- 適切なコマンド構文を保証する
- セキュリティ重視のコマンドフィルタリング:
- 危険なコマンド: セキュリティを侵害する可能性のあるコマンドをブロックします
- 安全なパターン: 通常の使用に必要な読み取り専用操作を明示的に許可します
- 正規表現パターンマッチング:パターンマッチングで複雑なセキュリティリスクを防止
- パイプコマンドのセキュリティ:
- パイプで使用されるUnixコマンドを検証します
- コマンドを安全な許可リストに制限します
- ファイルシステムの操作と任意のコマンドの実行を防止します
デフォルトのセキュリティ構成
デフォルトのセキュリティ構成は、次の攻撃ベクトルの防止に重点を置いています。
1. アイデンティティとアクセス管理(IAM)のリスク
ブロックされたコマンド | セキュリティリスク |
---|---|
aws iam create-user | 永続的なアクセスを持つ潜在的なバックドアアカウントを作成する |
aws iam create-access-key | 盗難や悪用される可能性のある長期的な認証情報を作成する |
aws iam attach-*-policy | ポリシー添付による潜在的な権限昇格 |
aws iam put-user-policy | インラインポリシーは過剰な権限を付与する可能性がある |
aws iam create-policy | 潜在的に危険な権限を持つ新しいポリシーの作成 |
aws iam create-login-profile | 既存のユーザーのコンソールパスワードを作成します |
aws iam deactivate-mfa-device | 多要素認証を無効にし、セキュリティを弱める |
aws iam update-assume-role-policy | 信頼関係を変更し、権限の昇格を可能にする |
2. 監査とログの改ざん
ブロックされたコマンド | セキュリティリスク |
---|---|
aws cloudtrail delete-trail | AWSアクティビティの監査証跡を削除します |
aws cloudtrail stop-logging | アクティビティログの収集を停止し、死角を生じさせる |
aws cloudtrail update-trail | ログ設定をリダイレクトまたは変更できる |
aws config delete-configuration-recorder | AWS Config によるリソース変更の記録を無効にする |
aws guardduty delete-detector | 脅威検出機能を無効にする |
3. 機密データへのアクセスと保護
ブロックされたコマンド | セキュリティリスク |
---|---|
aws secretsmanager put-secret-value | 機密性の高い資格情報を変更する |
aws secretsmanager delete-secret | 機密性の高い認証情報を削除します |
aws kms schedule-key-deletion | 暗号化キーの削除をスケジュールし、データ損失のリスクがある |
aws kms disable-key | 暗号化キーを無効にし、データが漏洩する可能性がある |
aws s3api put-bucket-policy | パブリックS3バケットを作成し、データを公開できる |
aws s3api delete-bucket-policy | バケットから保護ポリシーを削除します |
4. ネットワークセキュリティリスク
ブロックされたコマンド | セキュリティリスク |
---|---|
aws ec2 authorize-security-group-ingress | 受信ネットワークアクセスが開かれ、潜在的な露出が発生 |
aws ec2 authorize-security-group-egress | アウトバウンドネットワークアクセスが開かれ、データの流出の可能性がある |
aws ec2 modify-instance-attribute | インスタンスのセキュリティプロパティを変更できる |
これらのパターンに一致する多くの読み取り専用操作は、安全なパターンを通じて明示的に許可されます。
- すべての
get-
、list-
、describe-
コマンド - すべてのヘルプコマンド (
--help
、help
) - シミュレーションおよびテストコマンド(例:
aws iam simulate-custom-policy
)
設定オプション
- セキュリティモード:
strict
(デフォルト):すべてのセキュリティ検証を強制しますpermissive
: 警告をログに記録しますが、実行は許可します(注意して使用してください)
- カスタム構成:
- YAML 構成ファイルを使用してデフォルトのセキュリティ ルールを上書きする
- サービス固有の危険なコマンドを設定する
- カスタムの安全なパターンと正規表現ルールを定義する
- 環境変数:
AWS_MCP_SECURITY_CONFIG
- 実行制御:
- タイムアウトにより、長時間実行されるコマンドを防止します (デフォルト: 300 秒)
- 出力サイズの制限によりメモリの問題を防止
- 環境変数:
AWS_MCP_TIMEOUT
、AWS_MCP_MAX_OUTPUT
カスタムセキュリティルールの例
YAML 構成ファイルを定義することで、カスタム セキュリティ ルールを作成できます。
セキュリティの例
システムは IAM のベスト プラクティスに従い、権限の昇格の防止に重点を置いています。
セキュリティのベストプラクティス
- 本番環境では常にデフォルトの
strict
セキュリティモードを使用する - セキュリティに関する考慮事項の展開推奨事項に従ってください。
- 最小権限のAWS認証情報で実行する
- カスタム構成の場合は、セキュリティ要件に重点を置きます
発達
開発環境のセットアップ
Makefileコマンド
このプロジェクトには、一般的なタスクのさまざまなターゲットを含む Makefile が含まれています。
使用可能なコマンドの完全なリストについては、 make help
を実行してください。
コードカバレッジ
このプロジェクトには、コードカバレッジメトリクスを追跡するためのCodecovの設定が含まれています。設定はcodecov.yml
ファイルに保存されており、以下のようになります。
- ターゲットカバレッジしきい値を80%に設定する
- カバレッジレポートからテストファイル、セットアップファイル、ドキュメントを除外します
- PRコメントとステータスチェックを設定します
カバレッジ レポートは CI/CD 実行中に自動的に生成され、Codecov にアップロードされます。
統合テスト
統合テストは、AWS MCP Server が実際の AWS リソースで正しく動作することを確認します。テストを実行するには、以下の手順に従ってください。
- AWS リソースをセットアップします:
- テスト用のS3バケットを作成する
- 環境変数を設定します:
export AWS_TEST_BUCKET=your-test-bucket-name
- AWS認証情報が設定されていることを確認する
- 統合テストを実行します:Copy
または、pytest コマンドを直接実行することもできます。
トラブルシューティング
- 認証の問題: AWS 認証情報が正しく設定されていることを確認してください
- 接続エラー: サーバーが実行中であること、および AI アシスタントの接続設定が正しいことを確認してください
- 権限エラー: AWS認証情報に必要な権限があることを確認してください
- タイムアウトエラー: 長時間実行されるコマンドの場合は、
AWS_MCP_TIMEOUT
環境変数を増やします。
Dockerでデプロイする理由
Docker 経由で AWS MCP Server をデプロイすることが推奨されるアプローチであり、ツールの安全な使用パターンの中核となる、セキュリティと信頼性の大きな利点を提供します。
セキュリティ上の利点
- 分離(主要な緩和策): Dockerコンテナは、ファイルシステムとプロセスの重要な分離を提供します。AWS CLIコマンドとパイプされたUnixユーティリティは、隔離された環境で実行されます。ファイルシステムに影響を与える偶発的または誤用されたコマンドはコンテナ内に限定され、ホストマシンを保護します。
- **制御された認証情報アクセス:**認証情報をマウントするときに、
:ro
(読み取り専用) フラグを使用すると、コンテナが AWS 構成ファイルを変更する機能が制限されます。 - ローカルインストールなし: AWS CLI とその依存関係をホストシステムに直接インストールすることを回避します。
- **クリーンな環境:**各コンテナの実行は、既知のクリーンな状態から開始されます。
信頼性の利点
- 一貫した構成: 必要なツール (AWS CLI、SSM プラグイン、jq) はすべて事前にインストールされ、適切に構成されています。
- 依存関係管理: ツールと依存関係間のバージョン競合を回避する
- クロスプラットフォームの一貫性: 異なるオペレーティングシステム間で同じように動作します
- 完全な環境: コマンド パイプ、フィルタリング、フォーマットに必要なすべてのツールが含まれています
その他の特典
- マルチアーキテクチャサポート: Intel/AMD (x86_64) と ARM (Apple Silicon、AWS Graviton) の両方のプロセッサで実行
- シンプルなアップデート: 1 回の pull コマンドで新しいバージョンにアップデート
- Python環境の競合なし: システム上の他のPythonアプリケーションとの潜在的な競合を回避します
- バージョン固定: 実稼働環境での安定性を確保するために、特定のバージョンに簡単に固定できます。
バージョン管理
このプロジェクトでは、 setuptools_scmを使用して、Git タグに基づいてバージョンを自動的に決定します。
- リリースバージョン: Gitタグが存在する場合(例:
1.2.3
)、バージョンはそのタグとまったく同じになります。 - 開発バージョン: タグのないコミットの場合、開発バージョンは次の形式で生成されます:
<last-tag>.post<commits-since-tag>+g<commit-hash>.d<date>
(例:1.2.3.post10+gb697684.d20250406
)
バージョンは自動的に次の場所に含まれます:
- パッケージのバージョン情報
- Dockerイメージラベル
- 継続的インテグレーションビルド
リリースの作成
新しいリリース バージョンを作成するには:
CI/CD パイプラインは、適切なバージョン タグが付いた Docker イメージを自動的にビルドして公開します。
バージョン管理システムの詳細については、 VERSION.md を参照してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
This server cannot be installed
AI アシスタントがモデルコンテキストプロトコル (MCP) を介して AWS CLI コマンドを実行できるようにする軽量サービス。これにより、AI ツールは AWS ドキュメントを取得して AWS サービスと対話できるようになります。