[新機能] Amazon S3 Tables MCP (Model Context Protocol) Server をClaude Codeで試してみた!
クラウド事業本部コンサルティング部の石川です。AWSが新たに発表した Amazon S3 Tables MCP Server は、AIとストレージを連携させる新しいアプローチとして注目されています。S3 Tables上の構造化データやそのメタデータに対し、対話的AIエージェントがアクセスしてデータ活用を支援できます。本日は、この新機能をClaude code から試してみます!
Amazon S3 Tables MCP Serverの機能
Amazon S3 Tables MCP Serverは、Amazon S3上の「S3 Tables」に保存されたデータへ、AIモデルやAIアプリケーションが標準プロトコル(Model Context Protocol:MCP)を介してアクセスできるAPIサーバーです。 これにより、AIエージェントが自然言語による問い合わせでテーブルデータの検索・集計・分析できます。
この機能の特長
-
標準プロトコル(MCP)対応
Model Context Protocolに準拠し、各種AIエージェントやチャットボットへ簡単に組み込み可能。 -
生成AI開発者ツール連携
Claude Code、Gemini CLI、Amazon Q Developerをはじめとする AIコーディングアシスタントとの連携。
-
S3 Tables連携
Amazon S3に構造化データを安全かつ柔軟に保存しながら、AIから検索・取得が可能。
この機能の仕組み
Amazon S3 Tablesは、クエリエンジンを持たないフルマネージドのApache Icebergストレージサービスです。Amazon S3 Tables MCP Serverでクエリが実行できるのは、サーバーに搭載されたツールが分散クエリエンジンDaft を使用しているためです。DaftはPyIcebergとネイティブに統合されており、AIアシスタントはこれを利用してS3 Tables内のマネージドIcebergテーブルを読み書きができます。
- MCPサーバー
Amazon S3 Tables MCP Serverは、Model Context Protocol(MCP)のAPIサーバー実装として動作します。AIエージェントはMCP経由で、S3 Tablesの「テーブル構造のメタデータ取得」「クエリ実行」「結果取得」などのツールコール(API)にアクセス。 - 対話AI連携
Claude CodeなどのAIシステムは、MCPサーバーに自然言語の問い合わせを投げることで、裏側ではSQLライクなクエリが自動生成・実行され、結果が自然言語で返されます。 - 認証・認可
OAuthなどの認証フローを組み込み、担保されたアクセス管理が可能です。
設定方法
Amazon S3 Tables MCP Server の README.md の中では、Amazon Q Developerの設定を例に解説していますが、今回は、Claude codeにこのMCPを設定する方法について解説します。
前提条件の準備
-
Pythonのバージョン3.10以降のインストール
-
uvのインストール(参考: Astral or the GitHub README)
-
macOS 又は Linux の場合
curl -LsSf https://astral.sh/uv/install.sh | sh
-
Windows の場合
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
-
-
S3 Bucket、S3 Namespaces、S3 Tablesを事前に作成
-
AWSの認証用のAWSのアクセスキー又はAWSプロファイルなどを用意
- LambdaやECSなどで動作させる場合は、IAMロールを用意
MCP Serverの設定
Claude CodeにMCPサーバーを追加するには、通常 claude mcp add
コマンドを使いますが、設定ファイル (.claude.json
) に直接「参照専用」または「読み書き用」の設定を追記しました。
今回はグローバル設定(すべてのプロジェクトに適用)とするため、ホームディレクトリにある .claude.json
ファイルに設定を追記し、動作確認を行いました。
設定サンプル内のenv
キーでは、AWSの環境変数を以下のように指定しています。
"AWS_REGION": "us-east-1"
- リージョンを指定します。 サンプルではバージニア北部 (
us-east-1
) になっていますが、ご自身のS3 Tablesバケットが存在するリージョン名に書き換えてください。
- リージョンを指定します。 サンプルではバージニア北部 (
"AWS_PROFILE": "cm-claudecode"
- AWSの認証情報を指定します。 サンプルでは
cm-claudecode
という名前のAWSプロファイルを使用しています。IAMロールなどで認証情報が自動的に渡される環境の場合、この設定は不要です。
- AWSの認証情報を指定します。 サンプルでは
"env": {
"AWS_PROFILE": "cm-claudecode",
"AWS_REGION": "us-east-1"
}
参照専用
既存の設定に影響を与えることなく機能を試したい場合は、「参照専用」の設定をお使いいただくのが安全です。特に、初めてこのツールを利用する方におすすめします。
:
"mcpServers": {
"s3tables": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.s3-tables-mcp-server@latest"
],
"env": {
"AWS_PROFILE": "cm-claudecode",
"AWS_REGION": "us-east-1"
}
},
:
}
:
--allow-write
の追加)
読み書き用(データやメタデータに対して変更したい場合は、「読み書き用」の設定をお使いください。
:
"mcpServers": {
"s3tables": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.s3-tables-mcp-server@latest","--allow-write"
],
"env": {
"AWS_PROFILE": "cm-claudecode",
"AWS_REGION": "us-east-1"
}
},
:
}
:
--log-dir
の追加)
補足: MCPサーバーのログ出力(サーバーがログファイルを書き込むディレクトリを指定します。指定しない場合、デフォルトのログディレクトリはオペレーティングシステムによって異なります。
- macOS :
~/Library/Logs
- Windows:
~/AppData/Local/Logs
- Linux/その他:
~/.local/share/s3-tables-mcp-server/logs/
参照専用の設定にMCPサーバーのログ出力オプションを追加すると以下のようになります。
:
"mcpServers": {
"s3tables": {
"type": "stdio",
"command": "uvx",
"args": [
"awslabs.s3-tables-mcp-server@latest","--log-dir","/tmp/s3-tables-logs"
],
"env": {
"AWS_PROFILE": "cm-claudecode",
"AWS_REGION": "us-east-1"
}
},
:
}
:
動作確認
Claude Codeのスラッシュコマンド/mcp
でMCPのサーバーの状態を確認します。
すると、s3tablesが追加されているのが確認できます。
Amazon S3 Tables MCP Serverは、16のツールがあることが確認できます。
Amazon S3 Tables MCP Serverは、以下のツールがあることが確認できます。
- list_table_buckets
- list_namespaces
- list_tables
- create_table_bucket
- create_namespace
- create_table
- get_table_maintenance_config
- get_maintenance_job_status
- get_table_metadata_location
- rename_table
- update_table_metadata_location
- query_database
- preview_csv_file
- import_csv_to_table
- get_bucket_metadata_config
- append_rows_to_table
例えば、「1. list_table_buckets」を選択して、Enterを押すと詳細が確認できます。
自然言語で問い合わせしてみる!
読み書き用ができるMCPサーバーの設定を用いて、自然言語で問い合わせします。特にこのMCPサーバーを利用するようにプロンプトに含めていません。
S3 Tables のメタデータをクエリする
S3 Tables のメタデータをクエリして、S3 Tables bucket内のS3 Namespaces、S3 Tablesを再帰的に探してレポート出力させて。
プロンプト
cm-sample テーブルバケットに関する利用可能なすべてのメタデータをクエリする
出力結果
特にこのMCPサーバーを利用するようにプロンプトに含めていませんが、Todosが作成され、Tool use でMCPサーバーが使われるようにプランされています。
Todosに基づき、再帰的にS3 Tables bucket内の情報収集します。
Todosがすべて終わると、日本語でレポート出力されました。
S3 Tables 上のテーブルのデータに自然言語で問合せ
データについて自然言語で問合せ、いわゆる Text-to-SQL(NL-to-SQL)を試してみました。
プロンプト
sales テーブルで支出額上位3人の顧客を見つける
出力結果
最初にプロンプトに指定したsales テーブルでクエリを生成・実行した後、sales テーブルとuserテーブルを結合したSQLを生成して、レポート出力しています。
S3 Tables Bucketを作成させる
S3 Tables Bucketを作成する、つまり自然言語でS3 Tables のAPIを実行させます。
プロンプト
cm-sample に関する利用可能なすべてのメタデータをクエリする
出力結果
数秒で作成が完了しました。
マネジメントコンソールからも作成できたことが確認できます。
最後に
Amazon S3 Tables MCP Serverは、S3に蓄積されたテーブル形式のデータを、生成AIや対話型インターフェースから直接活用できるという点で、AIとデータ基盤の連携を大きく前進させる技術です。これまで煩雑だったクエリ設計やインフラ構築を抽象化し、自然言語による直感的な分析を可能にすることで、開発者や業務ユーザーの負担軽減と生産性向上を支援します。S3 Tablesの活用を考えている方はもちろん、AIとデータ統合の最前線に関心のあるすべての方にとって、この新機能は注目に値するでしょう。今回の検証が、皆さんのデータ利活用プロジェクトの一助となれば幸いです。
合わせて読みたい