dynamodb について
DynamoDB MCP サーバーは、AWS DynamoDB 向けの MCP サーバーで、ツール単位のきめ細かな制御と設定可能なアクセスレベルを備えます。アシスタントやエージェントに DynamoDB データを扱わせつつ、操作範囲を明確に制限したいチーム向けです。AWS 認証情報チェーンや、DynamoDB Local、LocalStack などのカスタムエンドポイントに対応します。
主な機能
- 01テーブル、アイテム、クエリ、スキャン、一括操作
- 02グループ単位または個別のツール有効化と無効化
- 03指定したテーブルへの操作制限
- 04AWS 認証情報チェーンとカスタムエンドポイントへの対応
活用シーン
- 01MCP クライアントからの DynamoDB テーブルデータの照会
- 02読み取り専用モードでのエージェントによるデータ確認
- 03DynamoDB Local や LocalStack を使った開発とテスト
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y aws-dynamodb-mcp-serverAWS_REGIONAWS region for DynamoDB (or use AWS_DEFAULT_REGION).AWS_ACCESS_KEY_IDシークレットAWS access key ID (uses AWS credential chain if not set).AWS_SECRET_ACCESS_KEYシークレットAWS secret access key (uses AWS credential chain if not set).DYNAMODB_ENDPOINTCustom endpoint for local DynamoDB or LocalStack.DYNAMODB_ENABLED_TOOL_GROUPSComma-separated tool groups to enable (readonly, readwrite, admin).DYNAMODB_ENABLED_TOOLSComma-separated whitelist of specific tools to enable.DYNAMODB_DISABLED_TOOLSComma-separated blacklist of specific tools to disable.DYNAMODB_ALLOWED_TABLESRestrict operations to specific tables (comma-separated); all tables accessible if not set.SKIP_HEALTH_CHECKSSkip startup health checks.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
13掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | number | いいえ | 返すテーブルの最大数(1~100)。デフォルト:100 |
| exclusiveStartTableName | string | いいえ | 前回のリクエストで最後に評価されたテーブル名。ページネーションに使用します。 |
詳細
DynamoDB MCP サーバー
きめ細かなツール制御が可能な AWS DynamoDB 用 MCP サーバーです。設定可能なアクセスレベルで、包括的な DynamoDB 操作を提供します。
特長
- DynamoDB のすべての操作:テーブル、項目、クエリ、スキャン、バッチ操作
- きめ細かなアクセス制御:グループ単位または個別にツールを有効化/無効化
- テーブル単位のアクセス制御:操作対象を特定のテーブルに制限
- AWS 認証情報のサポート:明示的な認証情報または AWS 認証情報チェーンに対応
- カスタムエンドポイント:ローカルの DynamoDB または LocalStack に対応
利用可能なツール
MCP クライアントは通常、サーバー名をツール名の前に付けるため(例:dynamodb:list_tables)、ツール名は短くしています。
読み取り専用ツール(グループ:readonly)
| ツール | 説明 |
|---|---|
list_tables | ページネーションを使用してすべての DynamoDB テーブルを一覧表示します |
describe_table | テーブルのメタデータ、スキーマ、インデックスを取得します |
get_item | プライマリキーを指定して単一の項目を取得します |
query_items | キー条件を使用して項目をクエリします |
scan_table | オプションのフィルターを指定してテーブルをスキャンします |
batch_get_items | 複数のテーブルから複数の項目を取得します |
読み書きツール(グループ:readwrite)
| ツール | 説明 |
|---|---|
put_item | 項目を作成または置換します |
update_item | 特定の属性を更新します |
delete_item | プライマリキーを指定して項目を削除します |
batch_write_items | 項目の一括追加/削除を実行します |
管理ツール(グループ:admin)
| ツール | 説明 |
|---|---|
create_table | 新しいテーブルを作成します |
delete_table | テーブルとすべてのデータを削除します |
update_table | テーブルの設定を更新します |
設定
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
AWS_REGION | はい | AWS リージョン(または AWS_DEFAULT_REGION) |
AWS_ACCESS_KEY_ID | いいえ | AWS アクセスキー(未設定の場合は認証情報チェーンを使用) |
AWS_SECRET_ACCESS_KEY | いいえ | AWS シークレットキー(未設定の場合は認証情報チェーンを使用) |
DYNAMODB_ENDPOINT | いいえ | カスタムエンドポイント(ローカル DynamoDB 用) |
DYNAMODB_ENABLED_TOOL_GROUPS | いいえ | カンマ区切りのグループ:readonly、readwrite、admin |
DYNAMODB_ENABLED_TOOLS | いいえ | 特定のツールを許可リストに登録 |
DYNAMODB_DISABLED_TOOLS | いいえ | 特定のツールをブロックリストに登録 |
DYNAMODB_ALLOWED_TABLES | いいえ | 操作対象を特定のテーブルに制限(カンマ区切り) |
ツールのアクセス制御
次の3つの方法で、利用可能なツールを制御します。
1. ツールグループ(ほとんどの場合に推奨):
# Read-only access
DYNAMODB_ENABLED_TOOL_GROUPS="readonly"
# Read and write, no table management
DYNAMODB_ENABLED_TOOL_GROUPS="readonly,readwrite"
# All operations (default)
DYNAMODB_ENABLED_TOOL_GROUPS="readonly,readwrite,admin"
2. 特定のツールを許可リストに登録:
# Only allow specific operations
DYNAMODB_ENABLED_TOOLS="get_item,query_items,scan_table"
3. 特定のツールをブロックリストに登録:
# Enable all except dangerous operations
DYNAMODB_DISABLED_TOOLS="delete_table,create_table"
優先順位:DYNAMODB_ENABLED_TOOLS > DYNAMODB_DISABLED_TOOLS > DYNAMODB_ENABLED_TOOL_GROUPS
テーブルレベルのアクセス制御
すべての操作を特定のテーブルのみに制限します。
# Only allow access to Users and Orders tables
DYNAMODB_ALLOWED_TABLES="Users,Orders"
DYNAMODB_ALLOWED_TABLES が設定されている場合:
list_tablesは許可リスト内のテーブルのみを返します- 許可されていないテーブルに対する操作は「Access denied」エラーを返します
- リクエスト内に許可されていないテーブルが1つでも含まれている場合、バッチ操作は失敗します
- テーブル名は大文字と小文字を区別して照合されます(DynamoDB のテーブル名では大文字と小文字が区別されます)
list_tablesでページネーションを使用する場合、フィルタリングの前にlimitが適用されます
注記: 設定されていない場合、または空の文字列に設定されている場合は、すべてのテーブルにアクセスできます(フィルタリングなし)。
これは次のような場合に役立ちます。
- 各クライアントが自分のテーブルにのみアクセスできるようにするマルチテナント環境
- 本番テーブルを保護したい開発環境
- AI エージェントの影響範囲を特定のテーブルに限定する場合
Claude Desktop の設定
claude_desktop_config.json に追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"dynamodb": {
"command": "npx",
"args": ["-y", "aws-dynamodb-mcp-server"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "your-access-key",
"AWS_SECRET_ACCESS_KEY": "your-secret-key",
"DYNAMODB_ENABLED_TOOL_GROUPS": "readonly,readwrite"
}
}
}
}
ローカルの DynamoDB を使用する
ローカルの DynamoDB または LocalStack を使用した開発の場合:
{
"mcpServers": {
"dynamodb-local": {
"command": "npx",
"args": ["-y", "aws-dynamodb-mcp-server"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_ACCESS_KEY_ID": "local",
"AWS_SECRET_ACCESS_KEY": "local",
"DYNAMODB_ENDPOINT": "http://localhost:8000"
}
}
}
}
例
アイテムをクエリする
Query all orders for customer "C123" from the last 30 days:
- Table: Orders
- Key condition: customerId = :cid AND orderDate > :date
- Values: {":cid": "C123", ":date": "2025-01-01"}
テーブルを作成する
Create a Users table with:
- Partition key: userId (String)
- Billing: Pay per request
バッチ操作
Get user profiles for IDs: user1, user2, user3 from the Users table
開発
セットアップ
cd experimental/dynamodb
npm run install-all
npm run build
テスト
# Unit tests
npm run test:run
# Integration tests
npm run test:integration
# Manual tests (requires AWS credentials)
npm run test:manual
リソース
| リソース | 説明 |
|---|---|
dynamodb://config | サーバーの設定とツールグループのマッピング |
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。