DynamoDB MCP サーバー
Amazon DynamoDB リソースを管理するためのモデルコンテキストプロトコルサーバー。このサーバーは、テーブル管理、キャパシティ管理、データ操作のためのツールを提供します。
著者
イマン・カミヤビ ( ikmyb@icloud.com )
Related MCP server: Columbia MCP Server
特徴
テーブル管理
カスタマイズ可能な設定で新しい DynamoDB テーブルを作成する
既存のテーブルを一覧表示する
詳細なテーブル情報を取得する
テーブル設定を構成する
インデックス管理
グローバルセカンダリインデックス(GSI)の作成と管理
GSIの容量を更新
ローカルセカンダリインデックス(LSI)を作成する
キャパシティ管理
プロビジョニングされた読み取り/書き込み容量ユニットを更新する
テーブルスループット設定を管理する
データ操作
表内の項目を挿入または置換する
主キーでアイテムを取得する
特定のアイテム属性を更新する
条件付きでテーブルをクエリする
フィルターを使用してテーブルをスキャンする
注意: 誤ってデータが失われるのを防ぐため、削除操作はサポートされていません。
設定
依存関係をインストールします:
npm installAWS 認証情報を環境変数として設定します。
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ツール
テーブル作成
指定された設定で新しい DynamoDB テーブルを作成します。
パラメータ:
tableName: 作成するテーブルの名前partitionKey: パーティションキーの名前partitionKeyType: パーティションキーのタイプ (S=文字列、N=数値、B=バイナリ)sortKey: (オプション) ソートキーの名前sortKeyType: (オプション) ソートキーの種類readCapacity: プロビジョニングされた読み取り容量単位writeCapacity: プロビジョニングされた書き込み容量単位
例:
{
"tableName": "Users",
"partitionKey": "userId",
"partitionKeyType": "S",
"readCapacity": 5,
"writeCapacity": 5
}リストテーブル
アカウント内のすべての DynamoDB テーブルを一覧表示します。
パラメータ:
limit: (オプション) 返されるテーブルの最大数exclusiveStartTableName: (オプション) ページ区切りの開始テーブルの名前
例:
{
"limit": 10
}テーブルの説明
DynamoDB テーブルに関する詳細情報を取得します。
パラメータ:
tableName: 記述するテーブルの名前
例:
{
"tableName": "Users"
}作成_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
}更新_gsi
グローバルセカンダリインデックスのプロビジョニングされた容量を更新します。
パラメータ:
tableName: テーブルの名前indexName: 更新するインデックスの名前readCapacity: 新しい読み取り容量単位writeCapacity: 新しい書き込み容量単位
例:
{
"tableName": "Users",
"indexName": "EmailIndex",
"readCapacity": 10,
"writeCapacity": 10
}作成_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"
}更新容量
テーブルのプロビジョニングされた容量を更新します。
パラメータ:
tableName: テーブルの名前readCapacity: 新しい読み取り容量単位writeCapacity: 新しい書き込み容量単位
例:
{
"tableName": "Users",
"readCapacity": 10,
"writeCapacity": 10
}アイテムを置く
テーブル内の項目を挿入または置き換えます。
パラメータ:
tableName: テーブルの名前item: テーブルに入れるアイテム(JSONオブジェクトとして)
例:
{
"tableName": "Users",
"item": {
"userId": "123",
"name": "John Doe",
"email": "john@example.com"
}
}アイテムを取得
主キーによってテーブルから項目を取得します。
パラメータ:
tableName: テーブルの名前key: 取得するアイテムの主キー
例:
{
"tableName": "Users",
"key": {
"userId": "123"
}
}アイテムの更新
テーブル内の項目の特定の属性を更新します。
パラメータ:
tableName: テーブルの名前key: 更新するアイテムの主キーupdateExpression: 更新式expressionAttributeNames: 属性名のマッピングexpressionAttributeValues: 更新式の値conditionExpression: (オプション) 更新の条件returnValues: (オプション) 返される値
例:
{
"tableName": "Users",
"key": {
"userId": "123"
},
"updateExpression": "SET #n = :name",
"expressionAttributeNames": {
"#n": "name"
},
"expressionAttributeValues": {
":name": "Jane Doe"
}
}クエリテーブル
キー条件とオプションのフィルターを使用してテーブルをクエリします。
パラメータ:
tableName: テーブルの名前keyConditionExpression: キー条件式expressionAttributeValues: キー条件式の値expressionAttributeNames: (オプション) 属性名のマッピングfilterExpression: (オプション) 結果のフィルター式limit: (オプション) 返されるアイテムの最大数
例:
{
"tableName": "Users",
"keyConditionExpression": "userId = :id",
"expressionAttributeValues": {
":id": "123"
}
}スキャンテーブル
オプションのフィルターを使用してテーブル全体をスキャンします。
パラメータ:
tableName: テーブルの名前filterExpression: (オプション) フィルター式expressionAttributeValues: (オプション) フィルタ式の値expressionAttributeNames: (オプション) 属性名のマッピングlimit: (オプション) 返されるアイテムの最大数
例:
{
"tableName": "Users",
"filterExpression": "age > :minAge",
"expressionAttributeValues": {
":minAge": 21
}
}サンプル質問
この DynamoDB MCP サーバーを使用するときに Claude に尋ねることができる質問の例を次に示します。
テーブル管理
「パーティションキー「productId」(文字列)とソートキー「timestamp」(数値)を持つ「Products」という新しい DynamoDB テーブルを作成します。」
「アカウント内のすべての DynamoDB テーブルを一覧表示する」
「Users テーブルの現在の構成は何ですか?」
「Usersテーブルのメールフィールドにグローバルセカンダリインデックスを追加する」
キャパシティ管理
「Usersテーブルの容量を20読み取り単位と15書き込み単位に更新します」
「Users テーブルの EmailIndex GSI 容量を拡大する」
「Orders テーブルに現在プロビジョニングされている容量はどれくらいですか?」
データ操作
「ID '123'、名前 'John Doe'、メールアドレス ' john@example.com ' の新しいユーザーを挿入します。」
「ID '123' のユーザーを取得する」
「ユーザー '123' のメールアドレスを ' john.doe@example.com ' に更新します」
「ユーザー '123' が行ったすべての注文を検索する」
「21歳以上のユーザーをすべてリストする」
「EmailIndex をクエリして、メールアドレス ' john@example.com ' を持つユーザーを検索します」
構成
AWS認証情報の設定
AWS マネジメントコンソールから 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 build -t mcp/dynamodb-mcp-server -f Dockerfile .発達
自動リロード付きの開発モードで実行するには:
npm run devライセンス
このMCPサーバーはMITライセンスに基づいてライセンスされています。つまり、MITライセンスの条件に従って、ソフトウェアを自由に使用、改変、配布することができます。詳細については、プロジェクトリポジトリのLICENSEファイルをご覧ください。
Resources
Looking for Admin?
Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.