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 とインターフェースするための安全で標準化された方法を提供します。
インストール
前提条件
- Node.js 18以上
- npmまたはyarn
- AWS 認証情報が設定されている(環境変数または AWS 認証情報ファイル経由)
- Docker(オプション、コンテナ化されたセットアップ用)
設定
- npm 経由でインストール:
- ソースからビルドする場合:
- AWS 認証情報と S3 アクセスを構成します。
AWS 設定で.env
ファイルを作成します。
または、これらを環境変数として設定します。
構成
サーバーは次の環境変数を使用して構成できます。
変数 | 説明 | デフォルト |
---|---|---|
AWS_REGION | S3バケットが配置されているAWSリージョン | us-east-1 |
S3_BUCKETS | 許可された S3 バケット名のカンマ区切りリスト | (空の) |
S3_MAX_BUCKETS | リストに返されるバケットの最大数 | 5 |
AWS_ACCESS_KEY_ID | AWS アクセスキー(デフォルトの認証情報を使用していないとき) | (AWS 設定から) |
AWS_SECRET_ACCESS_KEY | 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.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- S3 MCP サーバーを構成に追加します。
Claude デスクトップ用の Docker オプション 🐳
また、MCP サーバーで実行中の Docker コンテナを使用するように Claude Desktop を構成することもできます。
⚠️ 重要な前提条件: この Docker 構成が機能するには、Claude Desktop を起動する前に、まず Docker コンテナをビルドして実行する必要があります。
実行中のコンテナがない場合、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 ツールを使用してリクエストを実行し、結果を表示します。
ライセンス
マサチューセッツ工科大学
You must be authenticated.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Claude のような大規模言語モデルが AWS S3 ストレージと対話できるようにし、バケットの一覧表示、オブジェクトの一覧表示、オブジェクトの内容の取得を行うツールを提供する Amazon S3 モデルコンテキストプロトコル サーバー。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Claude to execute Python code using boto3 to query and manage AWS resources directly from conversations.Last updated -6PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server implementation that enables Claude to perform AWS operations on S3 and DynamoDB services through natural language commands.Last updated -2392PythonMIT License
- -securityFlicense-qualityA Model Context Protocol server allowing Claude AI to interact with AWS resources through natural language, enabling users to query and manage AWS services without using the traditional AWS Console or CLI.Last updated -TypeScript
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models like Claude to manage Linode cloud resources, including listing regions, creating, viewing, deleting, and rebooting Linode instances.Last updated -PythonMIT License