AWS Model Context Protocol Server

by alexei-led
Verified

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間の橋渡し機能を提供します。これにより、これらのアシスタントは以下のことが可能になります。

  1. AWS CLI ドキュメントの取得( aws_cli_help ) - AWS のサービスとコマンドに関する詳細なヘルプを取得します
  2. 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 の使用 (推奨)

# Clone repository git clone https://github.com/alexei-led/aws-mcp-server.git cd aws-mcp-server # Build and run Docker container docker compose -f deploy/docker/docker-compose.yml up -d

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.0

Dockerイメージタグ:

  • latest : 最新の安定リリース
  • xyz (例: 1.0.0 ): 特定のバージョン
  • sha-<commit-sha> : GitコミットSHAでタグ付けされた開発ビルド(例: sha-gb697684

サーバー実行オプション2: Pythonの使用

**注意して使用してください:**ネイティブ環境での実行には慎重な環境設定が必要であり、推奨されるDockerデプロイメントと比較してセキュリティリスクが高くなります。 「セキュリティに関する考慮事項」セクションに記載されている影響について必ず理解してください。

# Clone repository git clone https://github.com/alexei-led/aws-mcp-server.git cd aws-mcp-server # Set up virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install in development mode pip install -e . # Run the server python -m aws_mcp_server

構成

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コマンド( rmmvなど)は、たとえ誤用されたとしても、一時的な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 と手動で統合するには:

  1. Claude Desktop 構成ファイルを見つけます:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. 設定ファイルを編集して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" ] } } }
  3. 変更を適用するには、 Claude Desktopを再起動してください。
    • 再起動後、入力ボックスの右下隅にハンマー🔨アイコンが表示されます。
    • これはAWS MCPサーバーが使用可能であることを示します

やり取りの例

AWS CLI ドキュメントの入手:

User: What are the available options for the AWS S3 cp command? Claude: Let me get that information for you. The AWS S3 cp command has the following options: NAME cp - Copies a local file or S3 object to another location locally or in S3. SYNOPSIS cp <LocalPath> <S3Uri> or <S3Uri> <LocalPath> or <S3Uri> <S3Uri> [--acl <value>] [--cache-control <value>] ...

AWS CLI コマンドの実行:

User: List my S3 buckets Claude: I'll list your S3 buckets for you. 2023-10-15 14:30:45 my-bucket-1 2023-11-20 09:15:32 my-bucket-2 2024-01-05 11:22:18 my-backup-bucket

コマンドパイプの使用:

User: List my S3 buckets that have "backup" in their name and show them in alphabetical order Claude: Let me find that for you. 2024-01-05 11:22:18 my-backup-bucket 2024-03-01 09:44:12 weekly-backup-bucket 2024-03-15 13:10:57 database-backup-bucket

AWS リソースへのアクセス:

User: What AWS regions are available for me to use? Claude: Let me check what AWS regions are available for you. Available regions: - us-east-1 (US East, N. Virginia) - Currently selected - us-east-2 (US East, Ohio) - us-west-1 (US West, N. California) - us-west-2 (US West, Oregon) - eu-west-1 (EU West, Ireland) - eu-central-1 (EU Central, Frankfurt) - ap-northeast-1 (Asia Pacific, Tokyo) - ap-southeast-1 (Asia Pacific, Singapore) - ap-southeast-2 (Asia Pacific, Sydney) You're currently using the us-east-1 region.

プロンプトテンプレートの使用:

User: I need to perform a security audit of my S3 buckets Claude: I'll help you audit the security of your S3 buckets. Here are AWS CLI commands to perform a comprehensive security audit: # List all buckets with public access settings aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-public-access-block --bucket {} # Check bucket policies for public access aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-policy --bucket {} 2>/dev/null # Identify buckets without encryption aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-encryption --bucket {} 2>/dev/null # Check for buckets without logging enabled aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-logging --bucket {} 2>/dev/null # Verify bucket versioning status aws s3api list-buckets --query 'Buckets[*].Name' --output text | xargs -I {} aws s3api get-bucket-versioning --bucket {}

利用可能なプロンプトテンプレート

AWS MCP サーバーには、次の定義済みプロンプトテンプレートが含まれています。

コアオペレーション

プロンプト説明パラメータ
create_resourceベストプラクティスに従って AWS リソースを作成するためのコマンドを生成するresource_typeresource_name
resource_inventory包括的なリソースインベントリを作成するserviceregion (オプション)
troubleshoot_serviceサービスの問題をトラブルシューティングするためのコマンドを生成するserviceresource_id
resource_cleanup資源を特定し安全に清掃するservicecriteria (オプション)

セキュリティとコンプライアンス

プロンプト説明パラメータ
security_audit特定の AWS サービスのセキュリティ設定を監査するservice
security_posture_assessmentAWS 環境全体の包括的なセキュリティ評価なし
iam_policy_generator最小権限のIAMポリシーを作成するserviceactionsresource_pattern (オプション)
compliance_check規格への準拠を確認するcompliance_standardservice (オプション)

コストとパフォーマンス

プロンプト説明パラメータ
cost_optimizationサービスのコスト最適化の機会を見つけるservice
performance_tuningAWSリソースのパフォーマンスを最適化および調整するserviceresource_id

インフラストラクチャとアーキテクチャ

プロンプト説明パラメータ
serverless_deploymentベストプラクティスに従ってサーバーレスアプリケーションをデプロイするapplication_nameruntime (オプション)
container_orchestrationコンテナ環境(ECS/EKS)のセットアップcluster_nameservice_type (オプション)
vpc_network_design安全な VPC ネットワークを設計および実装するvpc_namecidr_block (オプション)
infrastructure_automationインフラストラクチャ管理の自動化resource_typeautomation_scope (オプション)
multi_account_governance安全なマルチアカウント戦略を実装するaccount_type (オプション)

信頼性と監視

プロンプト説明パラメータ
service_monitoring包括的な監視を設定するservicemetric_type (オプション)
disaster_recoveryエンタープライズグレードのDRソリューションを実装するservicerecovery_point_objective (オプション)

安全

AWS MCP サーバーは、コマンドの検証とセキュリティに対して包括的な多層アプローチを実装します。

コマンド検証システム

サーバーは、3 層システムを通じてすべての AWS CLI コマンドを検証します。

  1. 基本的なコマンド構造:
    • コマンドが「aws」プレフィックスで始まり、有効なサービスが含まれていることを確認します
    • 適切なコマンド構文を保証する
  2. セキュリティ重視のコマンドフィルタリング
    • 危険なコマンド: セキュリティを侵害する可能性のあるコマンドをブロックします
    • 安全なパターン: 通常の使用に必要な読み取り専用操作を明示的に許可します
    • 正規表現パターンマッチング:パターンマッチングで複雑なセキュリティリスクを防止
  3. パイプコマンドのセキュリティ:
    • パイプで使用される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-trailAWSアクティビティの監査証跡を削除します
aws cloudtrail stop-loggingアクティビティログの収集を停止し、死角を生じさせる
aws cloudtrail update-trailログ設定をリダイレクトまたは変更できる
aws config delete-configuration-recorderAWS 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-コマンド
  • すべてのヘルプコマンド ( --helphelp )
  • シミュレーションおよびテストコマンド(例: aws iam simulate-custom-policy

設定オプション

  • セキュリティモード:
    • strict (デフォルト):すべてのセキュリティ検証を強制します
    • permissive : 警告をログに記録しますが、実行は許可します(注意して使用してください)
  • カスタム構成:
    • YAML 構成ファイルを使用してデフォルトのセキュリティ ルールを上書きする
    • サービス固有の危険なコマンドを設定する
    • カスタムの安全なパターンと正規表現ルールを定義する
    • 環境変数: AWS_MCP_SECURITY_CONFIG
  • 実行制御:
    • タイムアウトにより、長時間実行されるコマンドを防止します (デフォルト: 300 秒)
    • 出力サイズの制限によりメモリの問題を防止
    • 環境変数: AWS_MCP_TIMEOUTAWS_MCP_MAX_OUTPUT

カスタムセキュリティルールの例

YAML 構成ファイルを定義することで、カスタム セキュリティ ルールを作成できます。

# Example custom security configuration # Save to a file and set AWS_MCP_SECURITY_CONFIG environment variable # Dangerous commands to block dangerous_commands: iam: # Only block specific IAM operations for your environment - "aws iam create-user" - "aws iam attach-user-policy" # Custom service restrictions for your organization lambda: - "aws lambda delete-function" - "aws lambda remove-permission" # Prevent accidental DynamoDB table deletion dynamodb: - "aws dynamodb delete-table" # Safe patterns to explicitly allow safe_patterns: # Global safe patterns general: - "--help" - "--dry-run" # Allow read operations on IAM iam: - "aws iam get-" - "aws iam list-" # Allow specific Lambda operations lambda: - "aws lambda list-functions" - "aws lambda get-function" # Complex regex rules for security validation regex_rules: general: # Prevent use of root credentials - pattern: "aws .* --profile\\s+root" description: "Prevent use of root profile" error_message: "Using the root profile is not allowed for security reasons" iam: # Block creation of admin users - pattern: "aws iam create-user.*--user-name\\s+.*admin.*" description: "Prevent creation of admin users" error_message: "Creating users with 'admin' in the name is restricted" # Prevent wildcards in IAM policies - pattern: "aws iam create-policy.*\"Effect\":\\s*\"Allow\".*\"Action\":\\s*\"\\*\".*\"Resource\":\\s*\"\\*\"" description: "Prevent wildcards in policies" error_message: "Creating policies with '*' wildcards for both Action and Resource is not allowed" s3: # Prevent public bucket policies - pattern: "aws s3api put-bucket-policy.*\"Effect\":\\s*\"Allow\".*\"Principal\":\\s*\"\\*\"" description: "Prevent public bucket policies" error_message: "Creating bucket policies with public access is restricted"

セキュリティの例

システムは IAM のベスト プラクティスに従い、権限の昇格の防止に重点を置いています。

# This command would be blocked (creates user) aws iam create-user --user-name new-user > Error: This command (aws iam create-user) is restricted for security reasons. # This command would be blocked (attaches admin policy) aws iam attach-user-policy --user-name any-user --policy-arn arn:aws:iam::aws:policy/AdministratorAccess > Error: Attaching Administrator policies is restricted for security reasons. # This command would be blocked (opens SSH port globally) aws ec2 authorize-security-group-ingress --group-id sg-12345 --protocol tcp --port 22 --cidr 0.0.0.0/0 > Error: Opening non-web ports to the entire internet (0.0.0.0/0) is restricted. # These commands are allowed (read-only operations) aws iam list-users aws s3 ls aws ec2 describe-instances

セキュリティのベストプラクティス

  • 本番環境では常にデフォルトのstrictセキュリティモードを使用する
  • セキュリティに関する考慮事項の展開推奨事項に従ってください。
  • 最小権限のAWS認証情報で実行する
  • カスタム構成の場合は、セキュリティ要件に重点を置きます

発達

開発環境のセットアップ

# Install only runtime dependencies using pip pip install -e . # Install all development dependencies using pip pip install -e ".[dev]" # Or use uv for faster dependency management make uv-install # Install runtime dependencies make uv-dev-install # Install development dependencies

Makefileコマンド

このプロジェクトには、一般的なタスクのさまざまなターゲットを含む Makefile が含まれています。

# Test commands make test # Run tests excluding integration tests make test-unit # Run unit tests only (all tests except integration tests) make test-integration # Run integration tests only (requires AWS credentials) make test-all # Run all tests including integration tests # Test coverage commands make test-coverage # Run tests with coverage report (excluding integration tests) make test-coverage-all # Run all tests with coverage report (including integration tests) # Linting and formatting make lint # Run linters (ruff check and format --check) make lint-fix # Run linters and auto-fix issues where possible make format # Format code with ruff

使用可能なコマンドの完全なリストについては、 make helpを実行してください。

コードカバレッジ

このプロジェクトには、コードカバレッジメトリクスを追跡するためのCodecovの設定が含まれています。設定はcodecov.ymlファイルに保存されており、以下のようになります。

  • ターゲットカバレッジしきい値を80%に設定する
  • カバレッジレポートからテストファイル、セットアップファイル、ドキュメントを除外します
  • PRコメントとステータスチェックを設定します

カバレッジ レポートは CI/CD 実行中に自動的に生成され、Codecov にアップロードされます。

統合テスト

統合テストは、AWS MCP Server が実際の AWS リソースで正しく動作することを確認します。テストを実行するには、以下の手順に従ってください。

  1. AWS リソースをセットアップします:
    • テスト用のS3バケットを作成する
    • 環境変数を設定します: export AWS_TEST_BUCKET=your-test-bucket-name
    • AWS認証情報が設定されていることを確認する
  2. 統合テストを実行します:
    # Run all tests including integration tests make test-all # Run only integration tests make test-integration

または、pytest コマンドを直接実行することもできます。

# Run all tests including integration tests pytest --run-integration # Run only integration tests pytest --run-integration -m integration

トラブルシューティング

  • 認証の問題: 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イメージラベル
  • 継続的インテグレーションビルド

リリースの作成

新しいリリース バージョンを作成するには:

# Create and push a new tag git tag -a 1.2.3 -m "Release version 1.2.3" git push origin 1.2.3

CI/CD パイプラインは、適切なバージョン タグが付いた Docker イメージを自動的にビルドして公開します。

バージョン管理システムの詳細については、 VERSION.md を参照してください。

ライセンス

このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。

ID: v8gvv3hb66