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 での使用に最適化されたフォーマットされた結果を受け取ります
Related MCP server: MCP2Lambda
デモ
このビデオでは、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認証情報が設定されている
はじめる
注:。重要な考慮事項については、 「セキュリティに関する考慮事項」セクションをご確認ください。
サーバー実行オプション 1: Docker の使用 (推奨)
Docker イメージは、AMD64/x86_64 (Intel/AMD) と ARM64 (Apple Silicon M1-M4、AWS Graviton) の両方のアーキテクチャをサポートしています。
注: GitHub Packages の公式イメージはマルチアーキテクチャであり、システムに適したバージョンが自動的に使用されます。
# Use the latest stable version docker pull ghcr.io/alexei-led/aws-mcp-server:latest # Or pin to a specific version (recommended for production) docker pull ghcr.io/alexei-led/aws-mcp-server:1.0.0Dockerイメージタグ:
latest: 最新の安定リリース
xyz(例:1.0.0): 特定のバージョン
sha-<commit-sha>: GitコミットSHAでタグ付けされた開発ビルド(例:sha-gb697684)
サーバー実行オプション2: Pythonの使用
**注意して使用してください:**ネイティブ環境での実行には慎重な環境設定が必要であり、推奨されるDockerデプロイメントと比較してセキュリティリスクが高くなります。 「セキュリティに関する考慮事項」セクションに記載されている影響について必ず理解してください。
構成
AWS MCP サーバーは環境変数を使用して設定できます。
環境変数 | 説明 | デフォルト |
| コマンド実行タイムアウト(秒) | 300 |
| 最大出力サイズ(文字数) | 100000 |
| 使用するトランスポートプロトコル(「stdio」または「sse」) | 標準入出力 |
| 使用するAWSプロファイル | デフォルト |
| 使用するAWSリージョン | 米国東部1 |
| セキュリティ モード (「厳格」または「許可」) | 厳しい |
| カスタムセキュリティ構成ファイルへのパス | 「」 |
**重要:**マウントされた~/.awsファイルまたは環境変数を介してサーバーに提供されるAWS認証情報は、安全に管理してください。認証情報は、 「セキュリティに関する考慮事項」セクションに記載されている最小権限の原則に従っていることを確認してください。Docker経由で実行する場合は、これらの変数がコンテナ環境に正しく渡されていることを確認してください(例: docker run -e VAR=value ... )。
セキュリティに関する考慮事項
AWS環境に対してコマンドを実行する際は、セキュリティが最優先事項です。AWS MCP Serverは機能を提供しますが、安全な設定と実行はお客様の責任となります。以下の点を厳守してください。
1. 推奨されるデプロイメント: Dockerコンテナ
分離: Dockerコンテナ内でサーバーを実行することは**、強く推奨されるデフォルトのデプロイ方法です。コンテナ化により、ファイルシステムとプロセスの重要な分離が実現します。パイプ経由で実行される、潜在的に破壊的なUnixコマンド( ありません**。コンテナは簡単に停止・再作成できます。
制御された環境: Docker は、必要な依存関係を持つ一貫した環境を確保し、予期しない動作を減らします。
2. AWS 認証情報と IAM 最小権限(重要)
ユーザーの責任: AWS 認証情報をサーバーに提供します (マウントされた
~/.awsまたは環境変数経由)。最小限の権限が不可欠です:非常に重要**です。
ルート認証情報を使用しない: AWS アカウントのルートユーザー認証情報は使用しないでください。
**定期的に権限を確認する:**認証情報に関連付けられた IAM 権限を定期的に監査します。
影響の制限:です。たとえコマンドが操作されたとしても、特定のIAMポリシーで許可されたアクションのみを実行できます。
3. 信頼できるユーザーモデル
サーバーは、MCPクライアント(Claude Desktop、Cursorなど)を操作するエンドユーザーが、サーバーを設定し、最小限の権限を持つAWS認証情報を提供した信頼できるユーザーと同一であると想定します。信頼できないユーザーにサーバーまたは接続されたクライアントを公開しないでください。
4. 実行リスクの理解(現在の実装)
**コマンド実行:**現在の実装では、シェル機能(サブプロセス呼び出しで
shell=True使用)を使用してAWSコマンドを実行し、Unixパイプを処理しています。このアプローチは便利ですが、入力コマンド文字列が操作された場合(コマンドインジェクション)に固有のリスクを伴います。運用制御による軽減: 信頼できるユーザー モデルとDocker デプロイメントのコンテキストでは、これらのリスクは運用的に軽減されます。
信頼できるユーザーは、自身の環境に対して意図的に悪意のあるコマンドを提供しないことが前提となります。
Docker にはファイルシステムの副作用が含まれます。
重要なのは、IAM の最小権限によって、実行できる AWS
認証情報漏洩リスク:。
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.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
設定ファイルを編集してAWS MCP サーバーを追加します。
{ "mcpServers": { "aws-mcp-server": { "command": "docker", "args": [ "run", "-i", "--rm", "-v", "/Users/YOUR_USER_NAME/.aws:/home/appuser/.aws:ro", "ghcr.io/alexei-led/aws-mcp-server:latest" ] } } }変更を適用するには、 Claude Desktopを再起動してください。
再起動後、入力ボックスの右下隅にハンマー🔨アイコンが表示されます。
これはAWS MCPサーバーが使用可能であることを示します
やり取りの例
AWS CLI ドキュメントの入手:
AWS CLI コマンドの実行:
コマンドパイプの使用:
AWS リソースへのアクセス:
プロンプトテンプレートの使用:
利用可能なプロンプトテンプレート
AWS MCP サーバーには、次の定義済みプロンプトテンプレートが含まれています。
コアオペレーション
プロンプト | 説明 | パラメータ |
| ベストプラクティスに従って AWS リソースを作成するためのコマンドを生成する |
、
|
| 包括的なリソースインベントリを作成する |
、
(オプション) |
| サービスの問題をトラブルシューティングするためのコマンドを生成する |
、
|
| 資源を特定し安全に清掃する |
、
(オプション) |
セキュリティとコンプライアンス
プロンプト | 説明 | パラメータ |
| 特定の AWS サービスのセキュリティ設定を監査する |
|
| AWS 環境全体の包括的なセキュリティ評価 | なし |
| 最小権限のIAMポリシーを作成する |
、
、
(オプション) |
| 規格への準拠を確認する |
、
(オプション) |
コストとパフォーマンス
プロンプト | 説明 | パラメータ |
| サービスのコスト最適化の機会を見つける |
|
| AWSリソースのパフォーマンスを最適化および調整する |
、
|
インフラストラクチャとアーキテクチャ
プロンプト | 説明 | パラメータ |
| ベストプラクティスに従ってサーバーレスアプリケーションをデプロイする |
、
(オプション) |
| コンテナ環境(ECS/EKS)のセットアップ |
、
(オプション) |
| 安全な VPC ネットワークを設計および実装する |
、
(オプション) |
| インフラストラクチャ管理の自動化 |
、
(オプション) |
| 安全なマルチアカウント戦略を実装する |
(オプション) |
信頼性と監視
プロンプト | 説明 | パラメータ |
| 包括的な監視を設定する |
、
(オプション) |
| エンタープライズグレードのDRソリューションを実装する |
、
(オプション) |
安全
AWS MCP サーバーは、コマンドの検証とセキュリティに対して包括的な多層アプローチを実装します。
コマンド検証システム
サーバーは、3 層システムを通じてすべての AWS CLI コマンドを検証します。
基本的なコマンド構造:
コマンドが「aws」プレフィックスで始まり、有効なサービスが含まれていることを確認します
適切なコマンド構文を保証する
セキュリティ重視のコマンドフィルタリング:
危険なコマンド: セキュリティを侵害する可能性のあるコマンドをブロックします
安全なパターン: 通常の使用に必要な読み取り専用操作を明示的に許可します
正規表現パターンマッチング:パターンマッチングで複雑なセキュリティリスクを防止
パイプコマンドのセキュリティ:
パイプで使用されるUnixコマンドを検証します
コマンドを安全な許可リストに制限します
ファイルシステムの操作と任意のコマンドの実行を防止します
デフォルトのセキュリティ構成
デフォルトのセキュリティ構成は、次の攻撃ベクトルの防止に重点を置いています。
1. アイデンティティとアクセス管理(IAM)のリスク
ブロックされたコマンド | セキュリティリスク |
| 永続的なアクセスを持つ潜在的なバックドアアカウントを作成する |
| 盗難や悪用される可能性のある長期的な認証情報を作成する |
| ポリシー添付による潜在的な権限昇格 |
| インラインポリシーは過剰な権限を付与する可能性がある |
| 潜在的に危険な権限を持つ新しいポリシーの作成 |
| 既存のユーザーのコンソールパスワードを作成します |
| 多要素認証を無効にし、セキュリティを弱める |
| 信頼関係を変更し、権限の昇格を可能にする |
2. 監査とログの改ざん
ブロックされたコマンド | セキュリティリスク |
| AWSアクティビティの監査証跡を削除します |
| アクティビティログの収集を停止し、死角を生じさせる |
| ログ設定をリダイレクトまたは変更できる |
| AWS Config によるリソース変更の記録を無効にする |
| 脅威検出機能を無効にする |
3. 機密データへのアクセスと保護
ブロックされたコマンド | セキュリティリスク |
| 機密性の高い資格情報を変更する |
| 機密性の高い認証情報を削除します |
| 暗号化キーの削除をスケジュールし、データ損失のリスクがある |
| 暗号化キーを無効にし、データが漏洩する可能性がある |
| パブリックS3バケットを作成し、データを公開できる |
| バケットから保護ポリシーを削除します |
4. ネットワークセキュリティリスク
ブロックされたコマンド | セキュリティリスク |
| 受信ネットワークアクセスが開かれ、潜在的な露出が発生 |
| アウトバウンドネットワークアクセスが開かれ、データの流出の可能性がある |
| インスタンスのセキュリティプロパティを変更できる |
これらのパターンに一致する多くの読み取り専用操作は、安全なパターンを通じて明示的に許可されます。
すべての
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-nameAWS認証情報が設定されていることを確認する
統合テストを実行します:
# Run all tests including integration tests make test-all # Run only integration tests make test-integration
または、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 ファイルを参照してください。