AWS MCP Server について
AWS MCP Serverは、AWS CLIに似た認証情報やプロファイル設定でAWSアカウントに接続します。REST APIを通じてS3、EC2、Lambdaを操作したいユーザー向けです。
主な機能
- 01AWS認証情報で接続
- 02プロファイルによる認証設定
- 03S3バケットとオブジェクトの管理
- 04EC2インスタンスの確認と操作
- 05Lambda関数の管理と実行
- 06漏えいの可能性があるシークレットの検査
活用シーン
- 01S3オブジェクトの一覧表示やアップロード
- 02EC2インスタンスの起動や停止
- 03Lambda関数の確認や実行
- 04コードベース内のシークレット候補の確認
MCP 対応
MCPサーバーとされていますが、READMEはREST APIエンドポイントを説明しており、MCPクライアント向けに公開するツールや機能は明記されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AWS MCP サーバー
AWS CLI と同様に AWS アカウントに接続するサーバーです。
特徴
- 認証情報を使用して AWS アカウントに接続
- 複数の AWS サービスに対応
- AWS CLI と同様の認証情報管理
- プロファイルベースの設定
フォルダー構成
src/aws-mcp-server/
├── .env.example # Example environment variables
├── .gitignore # Git ignore file
├── README.md # Documentation
├── package.json # Project dependencies
└── src/ # Source code
├── config/ # Configuration files
│ └── aws-config.js # AWS SDK configuration
├── core/ # Core functionality (empty for now)
├── index.js # Main entry point
├── services/ # AWS service implementations
│ ├── ec2.js # EC2 service endpoints
│ ├── lambda.js # Lambda service endpoints
│ └── s3.js # S3 service endpoints
└── utils/ # Utility functions
├── logger.js # Logging utility
└── session-manager.js # AWS session management
セットアップ
- 依存関係をインストールします。
npm install
-
AWS 認証情報を設定します。
.env.exampleを基に.envファイルを作成します- または、
~/.aws/credentialsにある AWS 認証情報ファイルを使用します
-
シークレットのコミットを防ぐため、Git フックを設定します。
./scripts/setup-git-hooks.sh
- サーバーを起動します。
npm start
設定
サーバーでは、AWS 認証情報を複数の方法で設定できます。
- 環境変数
- AWS 認証情報ファイル(~/.aws/credentials)
- AWS 設定ファイル(~/.aws/config)
- インスタンスプロファイル(EC2 で実行する場合)
一時認証情報
一時的な AWS 認証情報(Access Key ID が 'ASIA' で始まるもの)を使用する場合は、.env ファイルにセッショントークンも含めてください。
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_SESSION_TOKEN=your_session_token
AWS_REGION=your_region
セキュリティ
このプロジェクトには、認証情報が誤って漏えいするのを防ぐためのセキュリティ対策がいくつか含まれています。
.gitignore:.envファイル、キー、証明書、その他の機密ファイルを除外するように設定されています- Git フック:コードベースに潜在的なシークレットがないか確認する pre-commit フック
- シークレットチェッカー:ハードコードされた可能性のあるシークレットをスキャンするスクリプト
シークレットのチェックを手動で実行するには:
./scripts/check-secrets.sh
使用方法
このサーバーは、AWS サービスとやり取りするための REST API を公開します。
S3 操作
GET /api/s3/buckets- すべての S3 バケットを一覧表示GET /api/s3/buckets/:bucket/objects- バケット内のオブジェクトを一覧表示POST /api/s3/buckets/:bucket/objects- バケットにオブジェクトをアップロードDELETE /api/s3/buckets/:bucket/objects/:key- バケットからオブジェクトを削除
EC2 操作
GET /api/ec2/instances- すべての EC2 インスタンスを一覧表示GET /api/ec2/instances/:instanceId- EC2 インスタンスの詳細を取得POST /api/ec2/instances/:instanceId/start- EC2 インスタンスを起動POST /api/ec2/instances/:instanceId/stop- EC2 インスタンスを停止
Lambda 操作
GET /api/lambda/functions- すべての Lambda 関数を一覧表示GET /api/lambda/functions/:functionName- Lambda 関数の詳細を取得POST /api/lambda/functions/:functionName/invoke- Lambda 関数を呼び出すPATCH /api/lambda/functions/:functionName/configuration- Lambda 関数の設定を更新
AWS MCP サーバーとのやり取り方法:
-
コマンドラインから curl を使用する場合:
# List S3 buckets curl http://localhost:3000/api/s3/buckets # List EC2 instances curl http://localhost:3000/api/ec2/instances # List Lambda functions curl http://localhost:3000/api/lambda/functions -
Postman などの REST クライアントを使用する場合:
- 次のようなエンドポイントへのリクエストを設定します:
-
ウェブブラウザーを使用する場合(GET リクエストのみ):
- http://localhost:3000/health にアクセスして、サーバーが実行中か確認します
- http://localhost:3000/api/s3/buckets にアクセスして、S3 バケットを確認します
-
フロントエンドアプリケーションを構築する場合:
- このサーバーに API 呼び出しを行うフロントエンドアプリケーションを作成できます
- AWS Management Console のような GUI を利用できるようになります
AWS 認証情報のトラブルシューティング:
AWS 認証情報に問題がある場合は、次の方法をお試しください。
-
一時認証情報(Access Key が ASIA で始まるもの)の場合:
.envファイルに AWS_SESSION_TOKEN も含めてください- これらの認証情報は通常、数時間後に有効期限が切れます
-
長期認証情報(Access Key が AKIA で始まるもの)を使用する場合:
- セッショントークンは必要ありません
- これらの認証情報の取り扱いには注意し、バージョン管理に決してコミットしないでください
-
AWS CLI プロファイルを使用する場合:
- AWS CLI を設定済みの場合は、プロファイルを使用できます。
AWS_PROFILE=your-profile-name.envから AWS_ACCESS_KEY_ID と AWS_SECRET_ACCESS_KEY を削除します
-
EC2 で実行する場合は IAM ロールを使用する:
- IAM ロールを設定した EC2 インスタンスにデプロイする場合、認証情報を指定する必要はありません
開発
npm run dev
テスト
npm test
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。