S3 MCP サーバー
S3 バケットおよびオブジェクトと対話するためのツールを提供する Amazon S3 モデルコンテキストプロトコル (MCP) サーバー。
https://github.com/user-attachments/assets/d05ff0f1-e2bf-43b9-8d0c-82605abfb666
概要
このMCPサーバーは、Claudeのような大規模言語モデル(LLM)がAWS S3ストレージと連携できるようにします。以下のツールを提供します。
利用可能なS3バケットの一覧表示
バケット内のオブジェクトの一覧表示
オブジェクトの内容を取得しています
サーバーは TypeScript と MCP SDK を使用して構築されており、LLM が S3 とインターフェースするための安全で標準化された方法を提供します。
Related MCP server: AWS MCP Server
インストール
前提条件
Node.js 18以上
npmまたはyarn
AWS 認証情報が設定されている(環境変数または AWS 認証情報ファイル経由)
Docker(オプション、コンテナ化されたセットアップ用)
設定
npm 経由でインストール:
ソースからビルドする場合:
AWS 認証情報と S3 アクセスを構成します。
AWS 設定で.envファイルを作成します。
または、これらを環境変数として設定します。
構成
サーバーは次の環境変数を使用して構成できます。
変数 | 説明 | デフォルト |
| S3バケットが配置されているAWSリージョン |
|
| 許可された S3 バケット名のカンマ区切りリスト | (空の) |
| リストに返されるバケットの最大数 |
|
| AWS アクセスキー(デフォルトの認証情報を使用していないとき) | (AWS 設定から) |
| AWS 秘密キー(デフォルトの認証情報を使用していないとき) | (AWS 設定から) |
サーバーの実行
直接Node.js実行
Node.js を使用してサーバーを直接実行できます。
Docker のセットアップ 🐳
Docker CLI または Docker Compose を使用して、S3 MCP サーバーを Docker コンテナとして実行できます。
Docker CLIの使用
Docker イメージをビルドします。
環境変数を使用してコンテナを実行します。
コンテナのログを確認します。
コンテナを停止して削除します。
コンテナーは、直接の HTTP 接続ではなく、Docker exec を介して Claude Desktop で使用されるように設計されているため、ポートを公開しないことに注意してください。
Docker Composeの使用
Docker コンテナをビルドして起動します。
コンテナを停止するには:
MinIO で Docker を使ってテストする
Docker Compose セットアップには、ローカル テスト用の MinIO サービスが含まれています。
MinIO サービスは、2 つのテスト バケット ( test-bucket-1とtest-bucket-2 ) を自動的に作成し、テスト用のサンプル ファイルをアップロードします。
MCP Inspectorでのデバッグ
MCP Inspector を使用してサーバーをデバッグするには:
--docker-composeオプションを使用すると、スクリプトは次の処理を実行します。
MinIOとS3 MCPサーバーコンテナが実行されていない場合は起動します。
S3 MCPサーバーに接続されたMCPインスペクターを起動します。
その後、S3ツールをローカルのMinIOインスタンスに対してテストすることができます。
Claudeデスクトップに接続しています
このサーバーをClaude Desktopで使用するには:
Claude Desktop 構成ファイルを編集します。
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
S3 MCP サーバーを構成に追加します。
Claude デスクトップ用の Docker オプション 🐳
また、MCP サーバーで実行中の Docker コンテナを使用するように Claude Desktop を構成することもできます。
⚠️ 重要な前提条件: この Docker 構成が機能するには、Claude Desktop を起動する前に、。
# 1. First, build the Docker image (only needed once or after changes) docker build -t aws-s3-mcp . # 2. Then start the container (required each time before using with Claude) # Using Docker Compose (recommended) docker compose up -d s3-mcp # Or using Docker CLI docker run -d --name aws-s3-mcp-server --env-file .env aws-s3-mcp実行中のコンテナがない場合、Claude Desktop は S3 ツールを使用しようとするとエラーを表示します。
上記のDocker設定では、
execを使用してMCPリクエストを実行中のコンテナに直接送信しています。Claudeはネットワークポートを経由せずコンテナと直接通信するため、ポートマッピングは必要ありません。
注意: 設定内のコンテナ名 (
aws-s3-mcp-server) が実行中のコンテナの名前と一致していることを確認してください。
重要: 上記の設定を使用する場合は、次の点に注意してください。
AWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEY実際の認証情報に置き換えます。
S3_BUCKETSは、アクセスを許可するバケットのカンマ区切りのリストを含める必要があります。
AWS_REGIONバケットが配置されているリージョンに設定する必要があります
💣 Claude Desktopでエラーが発生した場合
Claude Desktop で上記の構成でエラーが発生した場合は、次のように絶対パスを使用してみてください。
利用可能なツール
リストバケット
サーバーがアクセス権限を持つ利用可能なS3バケットを一覧表示します。このツールは、表示されるバケットを制限するS3_BUCKETS設定に従います。
**パラメータ:**なし
出力例:
リストオブジェクト
指定された S3 バケット内のオブジェクトを一覧表示します。
パラメータ:
bucket(必須): オブジェクトを一覧表示するS3バケットの名前prefix(オプション):フィルターオブジェクトのプレフィックス(フォルダーパスなど)maxKeys(オプション): 返されるオブジェクトの最大数
出力例:
オブジェクトを取得
指定されたS3バケットからオブジェクトを取得します。テキストファイルはプレーンテキストとして返され、バイナリファイルは限定された詳細情報とともに返されます。
パラメータ:
bucket(必須): S3バケットの名前key(必須): 取得するオブジェクトのキー(パス)
テキスト出力の例:
バイナリ出力の例:
セキュリティに関する考慮事項
サーバーは
S3_BUCKETS環境変数で指定されたバケットにのみアクセスします。AWS認証情報にはバケットへの適切な権限が必要です
AWS の権限を設定するときは、最小権限の原則を使用します。
本番環境での使用には、特定のS3権限を持つIAMロールの使用を検討してください。
クロードとの使用
デスクトップ アプリで Claude と対話する場合、次のような S3 操作を実行するように要求できます。
「すべてのS3バケットを一覧表示する」
「my-documents-bucket 内の PDF ファイルを要約する」
「my-documents-bucket から README.txt ファイルを取得する」
Claude は適切な MCP ツールを使用してリクエストを実行し、結果を表示します。
ライセンス
マサチューセッツ工科大学