AWS Model Context Protocol (MCP) Server について
AWS MCP Server は、AI アシスタントがコンテナ化された安全な環境で AWS CLI コマンドを実行できるようにする軽量なサービスです。Claude や Cursor など MCP に対応したツールでクラウドインフラを管理するユーザーを対象としています。個々の AWS API ではなく CLI 自体をラップします。
主な機能
- 01MCP 経由での AWS CLI コマンド実行
- 02aws_cli_help と aws_cli_pipeline ツールの提供
- 03jq や grep などのパイプ対応
- 04stdio と streamable-http のトランスポート対応
- 05IAM ポリシーによるアクセス制御
活用シーン
- 01Claude による AWS リソースの照会と管理
- 02Docker で隔離された環境での AWS CLI 実行
MCP 対応
MCP サーバーとして、aws_cli_help と aws_cli_pipeline の 2 つのツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/alexei-led/aws-mcp-server:latestローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/alexei-led/aws-mcp-server:lateststdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AWS MCP Server
AWS CLI を通じて、Claude が 200 以上のすべての AWS サービスにアクセスできるようにします。
デモ
機能
この MCP サーバーを使うと、Claude がユーザーに代わって AWS CLI コマンドを実行できます。AWS API を個別にラップするのではなく、CLI 自体をラップすることで、2 つのツールだけで Claude に AWS への完全なアクセスを提供します。
| ツール | 目的 |
|---|---|
aws_cli_help | 任意の AWS コマンドのドキュメントを取得します |
aws_cli_pipeline | オプションのパイプ(jq、grep など)を使って AWS CLI コマンドを実行します |
Claude は --help を使って必要に応じてコマンドを学習し、その後実行します。実際に可能な操作は IAM ポリシーによって制御されます。
flowchart LR
Claude[Claude] -->|MCP| Server[AWS MCP Server]
Server --> CLI[AWS CLI]
CLI --> AWS[AWS Cloud]
IAM[Your IAM Policy] -.->|controls| AWS
新機能
- ストリーミング可能な HTTP トランスポート — Web ベースの MCP クライアント向けに、新しい
streamable-httpトランスポートを追加しました。非推奨のsseトランスポートに代わるものです(#33) - 入力検証エラーの処理 — 検証エラーは通常の結果ではなく、適切な MCP ツールエラー(
isError: true)を返すようになりました(#34) - サーバーの説明 — サーバーは
instructionsフィールドを通じて、その目的を MCP クライアントに伝えます(#35) - サーバーアイコン — サーバーは MCP クライアントで表示するためのアイコンメタデータを提供します(#36)
- 正常なシャットダウン — MCP クライアントが切断すると、サーバーも正常に切断します(#16)
クイックスタート
前提条件
Claude Code
MCP 設定に追加します(Cmd+Shift+P → 「Claude: Open MCP Config」):
{
"mcpServers": {
"aws": {
"command": "uvx",
"args": ["aws-mcp"]
}
}
}
Claude Desktop
Claude Desktop の設定ファイルに追加します:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"aws": {
"command": "uvx",
"args": ["aws-mcp"]
}
}
}
Docker(より安全)
Docker は、コンテナ内でコマンドを実行することで、より強力な分離を実現します:
{
"mcpServers": {
"aws": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"~/.aws:/home/appuser/.aws:ro",
"ghcr.io/alexei-led/aws-mcp-server:latest"
]
}
}
}
注:
~/.awsは Windows ではフルパスに置き換えてください(例:C:\Users\YOU\.aws)。
Streamable HTTP トランスポートを使用した Docker
ウェブベースの MCP クライアントでは、streamable-http トランスポートを使用します。
docker run --rm -p 8000:8000 \
-e AWS_MCP_TRANSPORT=streamable-http \
-v ~/.aws:/home/appuser/.aws:ro \
ghcr.io/alexei-led/aws-mcp-server:latest
サーバーは http://localhost:8000/mcp で利用できます。
注:
sseトランスポートは非推奨です。代わりにstreamable-httpを使用してください。
AWS 認証情報
サーバーは標準の AWS 認証情報チェーンを使用します。認証情報は次の場所から自動的に検出されます。
- 環境変数:
AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY - 認証情報ファイル:
~/.aws/credentials - 設定ファイル:
~/.aws/config(プロファイルとリージョン用) - IAM ロール:EC2、ECS、または Lambda で実行する場合
特定のプロファイルを使用するには:
{
"mcpServers": {
"aws": {
"command": "uvx",
"args": ["aws-mcp"],
"env": {
"AWS_PROFILE": "my-profile"
}
}
}
}
設定
AWS の設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
AWS_PROFILE | 使用する AWS プロファイル | default |
AWS_REGION | AWS リージョン(AWS_DEFAULT_REGION も使用可能) | us-east-1 |
AWS_CONFIG_FILE | AWS 設定ファイルのカスタムパス | ~/.aws/config |
AWS_SHARED_CREDENTIALS_FILE | 認証情報ファイルのカスタムパス | ~/.aws/credentials |
サーバーの設定
| 環境変数 | 説明 | デフォルト |
|---|---|---|
AWS_MCP_TIMEOUT | コマンド実行タイムアウト(秒) | 300 |
AWS_MCP_MAX_OUTPUT | 最大出力サイズ(文字数) | 100000 |
AWS_MCP_TRANSPORT | トランスポートプロトコル(stdio、sse、または streamable-http) | stdio |
AWS_MCP_SANDBOX | サンドボックスモード(auto、disabled、required) | auto |
AWS_MCP_SANDBOX_CREDENTIALS | 認証情報の受け渡し(env、aws_config、both) | both |
セキュリティ
IAM ポリシーがセキュリティ境界となります。 このサーバーは Claude が要求する AWS コマンドを実行します。実際に実行できるコマンドは IAM によって制御されます。
ベストプラクティス:
- 最小権限の IAM ロールを使用します(Claude が必要とする権限のみを付与します)
- ルート認証情報は決して使用しないでください
- ホストをさらに分離するために Docker の使用を検討します
セキュリティアーキテクチャの詳細については、セキュリティに関するドキュメントを参照してください。
ドキュメント
- 使用ガイド — ツール、リソース、プロンプトテンプレート
- セキュリティアーキテクチャ — IAM + サンドボックス + Docker モデル
- 開発ガイド — 貢献とテスト
ライセンス
MIT ライセンス — 詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。