
AWS DynamoDB MCP Serverを試してみた
お疲れさまです。とーちです。
AWS MCP ServersにAWS DynamoDB MCP Server というものがあったので試してみました。
AWS DynamoDB MCP Serverとは
名前から想像できる通り、MCPサーバを介してDynamoDBの操作ができるものとなっています。
詳細はこちらをご確認いただければと思いますが、概要としては以下のような機能をもっています。
主な機能
- Table Operations:DynamoDB テーブルの新規作成・スループット等の設定更新・削除・テーブル情報の表示など
- Item Operations:テーブル上のアイテムの新規作成・更新・削除・参照をすることができる
- Query and Scan Operations:キー指定でアイテムを参照する
query
と全件取得のscan
を実行できる - Backup and Recovery:テーブルのバックアップ作成・参照やバックアップから新しいテーブルの作成ができる
- Export Operations:DynamoDBからS3へのエクスポートジョブの参照ができる
上記の通り、DynamoDBに関するほとんどの操作が可能となっていると言ってよいのではと思います。
なお、Export Operationsについては参照のみでエクスポートジョブの作成には対応していないようです。
それでは実際に使ってみましょう。
AWS DynamoDB MCP Serverの設定
なんとなくDockerでMCP Serverを実行してみたかったので今回はDockerでやってみます。
こちらのインストール手順だけ見ると分かりづらいのですが、以下のREADMEにはやり方が分かりやすく書いてあります。
まずはDockerコンテナをビルドしておく必要があるので以下のコマンドを実行します。git cloneで awslabs/mcpのリポジトリをクローンするところから行う必要があります。
> git clone git@github.com:awslabs/mcp.git
> cd mcp/src/dynamodb-mcp-server/
> ls
awslabs/ docker-healthcheck.sh* LICENSE pyproject.toml tests/
CHANGELOG.md Dockerfile NOTICE README.md uv.lock
> docker build -t awslabs/dynamodb-mcp-server .
# 正常にビルドできたことを確認
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
awslabs/dynamodb-mcp-server latest 2f49580f8f41 14 minutes ago 1.9GB
1.9GBとなかなかの容量のコンテナですね。
ビルドが出来たらMCPクライアント(この記事ではClineを使ってます)でMCPサーバ設定ファイルを編集します。
以下のように追加しました。
{
"mcpServers": {
"awslabs.dynamodb-mcp-server": {
"command": "docker",
"args": [
"run",
"--rm",
"--interactive",
"--env",
"FASTMCP_LOG_LEVEL=ERROR",
"--env",
"AWS_REGION=ap-northeast-1",
"--env",
"AWS_DEFAULT_PROFILE=<プロファイル名>",
"--volume",
"/full/path/to/.aws:/app/.aws",
"awslabs/dynamodb-mcp-server:latest"
],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
Docker上で実行するので、AWS認証情報の渡し方に少し工夫が必要です。色々方法はありますが、今回はローカルにある認証情報ファイルが格納されたディレクトリ($HOME/.aws)をコンテナにボリュームマウントする方法で行いました。
上記の設定ファイルの --volume
で指定している部分がそれにあたります。/full/path/to
となっている部分はご自身のホームディレクトリのパスに変更してください。
また AWS_DEFAULT_PROFILE
環境変数を使用することで、$HOME/.aws/config
に書かれた中のどのプロファイルを使用するかを指定しています。
なお、使用したプロファイルで指定されているIAMロールには AmazonDynamoDBFullAccess
のAWS管理ポリシーを付与しました。
この状態で、MCPサーバ設定を更新すると以下のようにDockerコンテナが起動されていることが確認できます。
> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ee493b87366 awslabs/dynamodb-mcp-server:latest "awslabs.dynamodb-mc…" About an hour ago Up 59 minutes (healthy) xenodochial_aryabhata
ここまで出来れば設定は完了です。
やってみた
それではDynamoDBテーブルの作成からアイテムのput、scan、テーブルの削除までの一連の流れを試してみたいと思います。
まずは 新規でtestという名前のdynamodbテーブルを作成して
と依頼しました。
回答が以下でした。
DynamoDBテーブルを作成するために必要な情報を確認させてください。以下の項目をお教えください:
1. パーティションキー(必須)の属性名(例: "id")
2. パーティションキーのデータ型(S=文字列, N=数値, B=バイナリ)
3. ソートキーが必要かどうか(必要な場合、属性名とデータ型)
例:
1. id
2. S
3. 不要
パーティションキーにid/S、ソートキーは不要と回答したところcreate_tableツールを使用してテーブルを作成しました。
続いて 作成したtestテーブルに新しいアイテムを作成して。適当なアイテムでいいです
と依頼しました。すると何故かAWS CLIで直接アイテムをputしようとしていたので
コマンドの実行ではなくmcpツールを使ってほしい
と再度依頼しました。すると、put_item
ツールでアイテムを作成してくれました。
その後、特に指示はしてないのですが、get_item
でputしたアイテムが正常に登録されていることを確認してくれました。
また、最終確認としてテーブルステータスも確認していました。
確認した結果、ItemCountが0になっていたので、scanも実行されました。
ちゃんとアイテムが入ってますね。
最後に testテーブルを削除して
と伝えました。こちらも最初はコマンドで消そうとしていましたが、最終的には以下のようにツールで消してくれました。
まとめ
ということで、AWS DynamoDB MCP Server を試してみた。でした。
DynamoDB MCP Serverの他にもDB操作をMCPサーバを介して行うものとして、AWS Labs postgres MCP Server も公開されています。MCPサーバを介してDB上のデータを取れることで、簡易的なRAGとしても使えるのではないかなと思います。既存のDBがあり、それに基づいた回答をさせたいという場合には今回紹介したようなMCPサーバを試してみると面白いかもしれないですね。
以上、とーちでした。