mcpField
D
DynamoDB MCP Server

DynamoDB MCP Server

ローカル
github.com/imankamyabiデータベース1794 週間前に更新

DynamoDB MCP Server について

DynamoDB MCP Serverは、Amazon DynamoDBのテーブル、インデックス、容量、項目を管理するツールを提供します。MCPクライアント経由でDynamoDBを操作するユーザー向けで、誤削除を防ぐため削除操作には対応しません。

主な機能

  1. 01テーブルの作成と確認
  2. 02セカンダリインデックスの作成と管理
  3. 03プロビジョンド容量の調整
  4. 04項目の挿入、取得、更新
  5. 05条件付きクエリとスキャン

活用シーン

  1. 01テーブルとセカンダリインデックスの設定
  2. 02テーブルやインデックスの容量変更
  3. 03テーブル項目の取得や更新
  4. 04クエリやスキャンによるレコード検索

MCP 対応

テーブル、インデックス、容量、項目の操作を含むDynamoDB管理ツールをMCPクライアントに公開します。削除操作は提供しません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"dynamodb": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

DynamoDB MCP サーバー

Amazon DynamoDB リソースを管理するためのModel Context Protocol サーバーです。このサーバーは、テーブル管理、キャパシティ管理、データ操作のためのツールを提供します。

作成者

Iman Kamyabi ([email protected])

機能

テーブル管理
  • カスタマイズ可能な設定で新しい DynamoDB テーブルを作成
  • 既存のテーブルを一覧表示
  • テーブルの詳細情報を取得
  • テーブル設定を構成
インデックス管理
  • グローバルセカンダリインデックス(GSI)を作成、管理
  • GSI のキャパシティを更新
  • ローカルセカンダリインデックス(LSI)を作成
キャパシティ管理
  • プロビジョニングされた読み込み/書き込みキャパシティユニットを更新
  • テーブルのスループット設定を管理
データ操作
  • テーブルに項目を挿入、または置換
  • プライマリキーで項目を取得
  • 特定の項目属性を更新
  • 条件を指定してテーブルをクエリ
  • フィルターを使用してテーブルをスキャン

注:誤ってデータを失うことを防ぐため、削除操作には対応していません。

セットアップ

  1. 依存関係をインストールします:
npm install
  1. AWS 認証情報を環境変数として設定します:
export AWS_ACCESS_KEY_ID="your_access_key"
export AWS_SECRET_ACCESS_KEY="your_secret_key"
export AWS_REGION="your_region"
  1. サーバーをビルドします:
npm run build
  1. サーバーを起動します:
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 認証情報の設定
  1. AWS Management Console から AWS アクセスキー ID、シークレットアクセスキー、リージョンを取得します。
  2. 一時的な認証情報(例:IAM ロール)を使用する場合は、セッショントークンも取得します。
  3. これらの認証情報に、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 ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。