DynamoDB MCP Server について
DynamoDB MCP Serverは、Amazon DynamoDBのテーブル、インデックス、容量、項目を管理するツールを提供します。MCPクライアント経由でDynamoDBを操作するユーザー向けで、誤削除を防ぐため削除操作には対応しません。
主な機能
- 01テーブルの作成と確認
- 02セカンダリインデックスの作成と管理
- 03プロビジョンド容量の調整
- 04項目の挿入、取得、更新
- 05条件付きクエリとスキャン
活用シーン
- 01テーブルとセカンダリインデックスの設定
- 02テーブルやインデックスの容量変更
- 03テーブル項目の取得や更新
- 04クエリやスキャンによるレコード検索
MCP 対応
テーブル、インデックス、容量、項目の操作を含むDynamoDB管理ツールをMCPクライアントに公開します。削除操作は提供しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DynamoDB MCP サーバー
Amazon DynamoDB リソースを管理するためのModel Context Protocol サーバーです。このサーバーは、テーブル管理、キャパシティ管理、データ操作のためのツールを提供します。
作成者
Iman Kamyabi ([email protected])
機能
テーブル管理
- カスタマイズ可能な設定で新しい DynamoDB テーブルを作成
- 既存のテーブルを一覧表示
- テーブルの詳細情報を取得
- テーブル設定を構成
インデックス管理
- グローバルセカンダリインデックス(GSI)を作成、管理
- GSI のキャパシティを更新
- ローカルセカンダリインデックス(LSI)を作成
キャパシティ管理
- プロビジョニングされた読み込み/書き込みキャパシティユニットを更新
- テーブルのスループット設定を管理
データ操作
- テーブルに項目を挿入、または置換
- プライマリキーで項目を取得
- 特定の項目属性を更新
- 条件を指定してテーブルをクエリ
- フィルターを使用してテーブルをスキャン
注:誤ってデータを失うことを防ぐため、削除操作には対応していません。
セットアップ
- 依存関係をインストールします:
npm install
- AWS 認証情報を環境変数として設定します:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="your_region"
- サーバーをビルドします:
npm run build
- サーバーを起動します:
npm start
ツール
create_table
指定した設定で新しい DynamoDB テーブルを作成します。
パラメーター:
tableName:作成するテーブルの名前partitionKey:パーティションキーの名前partitionKeyType:パーティションキーの型(S=String、N=Number、B=Binary)sortKey:(任意)ソートキーの名前sortKeyType:(任意)ソートキーの型readCapacity:プロビジョニングされた読み込みキャパシティユニットwriteCapacity:プロビジョニングされた書き込みキャパシティユニット
例:
{
"tableName": "Users",
"partitionKey": "userId",
"partitionKeyType": "S",
"readCapacity": 5,
"writeCapacity": 5
}
list_tables
アカウント内のすべての DynamoDB テーブルを一覧表示します。
パラメーター:
limit:(任意)返すテーブルの最大数exclusiveStartTableName:(任意)ページネーションの開始点となるテーブルの名前
例:
{
"limit": 10
}
describe_table
DynamoDB テーブルの詳細情報を取得します。
パラメーター:
tableName:詳細を取得するテーブルの名前
例:
{
"tableName": "Users"
}
create_gsi
テーブルにグローバルセカンダリインデックスを作成します。
パラメーター:
tableName:テーブルの名前indexName:新しいインデックスの名前partitionKey:インデックスのパーティションキーpartitionKeyType:パーティションキーの型sortKey:(任意)インデックスのソートキーsortKeyType:(任意)ソートキーの型projectionType:プロジェクションの型(ALL、KEYS_ONLY、INCLUDE)nonKeyAttributes:(任意)プロジェクションに含める非キー属性readCapacity:プロビジョニングされた読み込みキャパシティユニットwriteCapacity:プロビジョニングされた書き込みキャパシティユニット
例:
{
"tableName": "Users",
"indexName": "EmailIndex",
"partitionKey": "email",
"partitionKeyType": "S",
"projectionType": "ALL",
"readCapacity": 5,
"writeCapacity": 5
}
update_gsi
グローバルセカンダリインデックスのプロビジョニング済みキャパシティを更新します。
パラメーター:
tableName:テーブルの名前indexName:更新するインデックスの名前readCapacity:新しい読み込みキャパシティユニットwriteCapacity:新しい書き込みキャパシティユニット
例:
{
"tableName": "Users",
"indexName": "EmailIndex",
"readCapacity": 10,
"writeCapacity": 10
}
create_lsi
テーブルにローカルセカンダリインデックスを作成します(テーブルの作成時に行う必要があります)。
パラメーター:
tableName:テーブルの名前indexName:新しいインデックスの名前partitionKey:テーブルのパーティションキーpartitionKeyType:パーティションキーの型sortKey:インデックスのソートキーsortKeyType:ソートキーの型projectionType:プロジェクションの型(ALL、KEYS_ONLY、INCLUDE)nonKeyAttributes:(任意)プロジェクションに含める非キー属性readCapacity:(任意)プロビジョニングされた読み込みキャパシティユニットwriteCapacity:(任意)プロビジョニングされた書き込みキャパシティユニット
例:
{
"tableName": "Users",
"indexName": "CreatedAtIndex",
"partitionKey": "userId",
"partitionKeyType": "S",
"sortKey": "createdAt",
"sortKeyType": "N",
"projectionType": "ALL"
}
update_capacity
テーブルのプロビジョニング済みキャパシティを更新します。
パラメーター:
tableName:テーブルの名前readCapacity:新しい読み込みキャパシティユニットwriteCapacity:新しい書き込みキャパシティユニット
例:
{
"tableName": "Users",
"readCapacity": 10,
"writeCapacity": 10
}
put_item
テーブルに項目を挿入、または置換します。
パラメーター:
tableName:テーブルの名前item:テーブルに登録する項目(JSON オブジェクト形式)
例:
{
"tableName": "Users",
"item": {
"userId": "123",
"name": "John Doe",
"email": "[email protected]"
}
}
get_item
主キーを使用して、テーブルから項目を取得します。
パラメーター:
tableName:テーブル名key:取得する項目の主キー
例:
{
"tableName": "Users",
"key": {
"userId": "123"
}
}
update_item
テーブル内の項目の特定の属性を更新します。
パラメーター:
tableName:テーブル名key:更新する項目の主キーupdateExpression:更新式expressionAttributeNames:属性名のマッピングexpressionAttributeValues:更新式の値conditionExpression:(任意)更新条件returnValues:(任意)返す値
例:
{
"tableName": "Users",
"key": {
"userId": "123"
},
"updateExpression": "SET #n = :name",
"expressionAttributeNames": {
"#n": "name"
},
"expressionAttributeValues": {
":name": "Jane Doe"
}
}
query_table
キー条件と任意のフィルターを使用してテーブルをクエリします。
パラメーター:
tableName:テーブル名keyConditionExpression:キー条件式expressionAttributeValues:キー条件式の値expressionAttributeNames:(任意)属性名のマッピングfilterExpression:(任意)結果のフィルター式limit:(任意)返す項目の最大数
例:
{
"tableName": "Users",
"keyConditionExpression": "userId = :id",
"expressionAttributeValues": {
":id": "123"
}
}
scan_table
任意のフィルターを使用してテーブル全体をスキャンします。
パラメーター:
tableName:テーブル名filterExpression:(任意)フィルター式expressionAttributeValues:(任意)フィルター式の値expressionAttributeNames:(任意)属性名のマッピングlimit:(任意)返す項目の最大数
例:
{
"tableName": "Users",
"filterExpression": "age > :minAge",
"expressionAttributeValues": {
":minAge": 21
}
}
質問例
この DynamoDB MCP サーバーを使用する際に Claude に尋ねられる質問の例を紹介します。
テーブル管理
- 「
productId(文字列)をパーティションキー、timestamp(数値)をソートキーとする、新しい DynamoDB テーブルProductsを作成して」 - 「アカウント内の DynamoDB テーブルをすべて一覧表示して」
- 「Users テーブルの現在の設定は?」
- 「Users テーブルの
emailフィールドにグローバルセカンダリインデックスを追加して」
キャパシティ管理
- 「Users テーブルのキャパシティを読み取りユニット20、書き込みユニット15に更新して」
- 「Users テーブルの EmailIndex GSI のキャパシティをスケールアップして」
- 「Orders テーブルの現在のプロビジョニング済みキャパシティは?」
データ操作
- 「IDが
123、名前がJohn Doe、メールアドレスが[email protected]の新しいユーザーを挿入して」 - 「IDが
123のユーザーを取得して」 - 「ユーザー
123のメールアドレスを[email protected]に更新して」 - 「ユーザー
123が注文したすべての注文を検索して」 - 「21歳を超えるユーザーをすべて一覧表示して」
- 「EmailIndex にクエリを実行して、メールアドレスが
[email protected]のユーザーを検索して」
設定
AWS 認証情報の設定
- AWS Management Console から AWS アクセスキー ID、シークレットアクセスキー、リージョンを取得します。
- 一時的な認証情報(例:IAM ロール)を使用する場合は、セッショントークンも取得します。
- これらの認証情報に、DynamoDB 操作に必要な権限が付与されていることを確認します。
Claude Desktop での使用
これを claude_desktop_config.json に追加します。
Docker(推奨)
{
"mcpServers": {
"dynamodb": {
"command": "docker",
"args": [ "run", "-i", "--rm", "-e", "AWS_ACCESS_KEY_ID", "-e", "AWS_SECRET_ACCESS_KEY", "-e", "AWS_REGION", "-e", "AWS_SESSION_TOKEN", "mcp/dynamodb-mcp-server" ],
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key",
"AWS_SECRET_ACCESS_KEY": "your_secret_key",
"AWS_REGION": "your_region",
"AWS_SESSION_TOKEN": "your_session_token"
}
}
}
}
ビルド
Docker:
docker build -t mcp/dynamodb-mcp-server -f Dockerfile .
開発
自動リロードを有効にして開発モードで実行するには:
npm run dev
ライセンス
この MCP サーバーは MIT License の下でライセンスされています。これは、MIT License の利用規約に従うことを条件として、ソフトウェアを自由に使用、変更、配布できることを意味します。詳しくは、プロジェクトリポジトリ内の LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。