AWS DynamoDB MCP Server

resmi

Server pengalaman pengembang resmi MCP untuk Amazon DynamoDB. Server ini menyediakan panduan desain ahli DynamoDB dan bantuan pemodelan data.

Dokumentasi

AWS DynamoDB MCP Server

Server MCP pengalaman pengembang resmi untuk Amazon DynamoDB. Server ini menyediakan panduan desain ahli DynamoDB dan bantuan pemodelan data.

[!PENTING] AI Generatif dapat membuat kesalahan. Anda harus mempertimbangkan untuk meninjau semua keluaran yang dihasilkan oleh model AI dan asisten pengkodean agentik pilihan Anda. Lihat Kebijakan AI Bertanggung Jawab AWS.

Alat yang Tersedia

Server MCP DynamoDB menyediakan delapan alat untuk pemodelan data, validasi, analisis biaya, dan pembuatan kode:

  • dynamodb_data_modeling - Mengambil prompt Pakar Pemodelan Data DynamoDB lengkap dengan pola desain tingkat perusahaan, strategi pengoptimalan biaya, dan filosofi desain multi-tabel. Memandu melalui pengumpulan persyaratan, analisis pola akses, dan desain skema.

    Contoh pemanggilan: "Desain model data untuk aplikasi e-commerce saya menggunakan server MCP pemodelan data DynamoDB"

  • dynamodb_data_model_validation - Memvalidasi model data DynamoDB Anda dengan memuat dynamodb_data_model.json, menyiapkan DynamoDB Local, membuat tabel dengan data uji, dan menjalankan semua pola akses yang ditentukan. Menyimpan hasil validasi terperinci ke dynamodb_model_validation.json.

    Contoh pemanggilan: "Validasi model data DynamoDB saya"

  • source_db_analyzer - Menganalisis basis data yang ada (MySQL, PostgreSQL, SQL Server, Oracle) untuk mengekstrak struktur skema, pola akses, dan menghasilkan file analisis bertanda waktu untuk digunakan dengan dynamodb_data_modeling. Mendukung akses berbasis RDS Data API dan akses berbasis koneksi untuk MySQL.

    Contoh pemanggilan: "Analisis basis data MySQL saya dan bantu saya mendesain model data DynamoDB"

  • generate_resources - Menghasilkan berbagai sumber daya dari file JSON model data DynamoDB (dynamodb_data_model.json). Saat ini hanya jenis sumber daya cdk yang didukung. Mengirimkan cdk sebagai parameter resource_type menghasilkan aplikasi CDK untuk menerapkan tabel DynamoDB. Aplikasi CDK membaca dynamodb_data_model.json untuk membuat tabel dengan konfigurasi yang tepat.

    Contoh pemanggilan: "Hasilkan sumber daya untuk menerapkan model data DynamoDB saya menggunakan CDK"

  • dynamodb_data_model_schema_converter - Mengonversi model data Anda (dynamodb_data_model.md) menjadi file schema.json terstruktur yang mewakili tabel, indeks, entitas, bidang, dan pola akses DynamoDB Anda. Format yang dapat dibaca mesin ini digunakan untuk pembuatan kode dan dapat diperluas untuk tujuan lain seperti pembuatan dokumentasi atau penyediaan infrastruktur. Secara otomatis memvalidasi skema dengan hingga 8 iterasi untuk memastikan kebenaran.

    Contoh pemanggilan: "Konversi model data saya ke schema.json untuk pembuatan kode"

  • dynamodb_data_model_schema_validator - Memvalidasi file schema.json untuk kompatibilitas pembuatan kode. Memeriksa jenis bidang, operasi, pemetaan GSI, ID pola, dan memberikan pesan kesalahan terperinci dengan saran perbaikan. Memastikan skema Anda siap untuk alat generate_data_access_layer.

    Contoh pemanggilan: "Validasi file schema.json saya di /path/to/schema.json"

  • generate_data_access_layer - Menghasilkan kode Python yang aman tipe dari schema.json termasuk kelas entitas dengan validasi bidang, kelas repositori dengan operasi CRUD, pola akses yang diimplementasikan sepenuhnya, dan contoh penggunaan opsional. Kode yang dihasilkan menggunakan Pydantic untuk validasi dan boto3 untuk operasi DynamoDB.

    Contoh pemanggilan: "Hasilkan kode Python dari schema.json saya"

  • compute_performances_and_costs - Menghitung unit kapasitas DynamoDB (RCU/WCU) dan biaya bulanan dari pola akses. Menganalisis semua operasi DynamoDB (GetItem, Query, Scan, PutItem, UpdateItem, DeleteItem, BatchGetItem, BatchWriteItem, TransactGetItems, TransactWriteItems), melacak penulisan tambahan GSI, dan menghitung biaya penyimpanan. Menambahkan laporan biaya komprehensif ke dynamodb_data_model.md.

    Contoh pemanggilan: "Hitung biaya dan kinerja untuk model data DynamoDB saya"

Prasyarat

  1. Instal uv dari Astral atau README GitHub
  2. Instal Python menggunakan uv python install 3.10
  3. Siapkan kredensial AWS dengan akses ke layanan AWS

Instalasi

KiroCursorVS Code
KiroCursorVS Code

Catatan: Tombol instal di atas mengonfigurasi AWS_REGION ke us-west-2 secara default. Perbarui nilai ini dalam konfigurasi MCP Anda setelah instalasi jika Anda memerlukan region yang berbeda.

Tambahkan server MCP ke file konfigurasi Anda (untuk Kiro tambahkan ke .kiro/settings/mcp.json - lihat jalur konfigurasi):

{
  "mcpServers": {
    "awslabs-dynamodb-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.dynamodb-mcp-server@latest"],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Instalasi Windows

Untuk pengguna Windows, format konfigurasi server MCP sedikit berbeda:

{
  "mcpServers": {
    "awslabs-dynamodb-mcp-server": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "uv",
      "args": [
        "tool",
        "run",
        "--from",
        "awslabs.dynamodb-mcp-server@latest",
        "awslabs.dynamodb-mcp-server.exe"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      }
    }
  }
}

Instalasi Docker

Setelah docker build -t awslabs/dynamodb-mcp-server . berhasil:

{
  "mcpServers": {
    "awslabs-dynamodb-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "--interactive",
        "--env",
        "FASTMCP_LOG_LEVEL=ERROR",
        "awslabs/dynamodb-mcp-server:latest"
      ],
      "env": {},
      "disabled": false,
      "autoApprove": []
    }
  }
}

Pemodelan Data

Pemodelan Data dalam Bahasa Alami

Gunakan alat dynamodb_data_modeling untuk mendesain model data DynamoDB melalui percakapan bahasa alami dengan agen AI Anda. Cukup tanyakan: "gunakan MCP DynamoDB saya untuk membantu saya mendesain model data DynamoDB."

Alat ini menyediakan alur kerja terstruktur yang menerjemahkan persyaratan aplikasi ke dalam model data DynamoDB:

Fase Pengumpulan Persyaratan:

  • Menangkap pola akses melalui percakapan bahasa alami
  • Mendokumentasikan entitas, relasi, dan pola baca/tulis
  • Mencatat perkiraan permintaan per detik (RPS) untuk setiap pola
  • Membuat file dynamodb_requirements.md yang diperbarui secara real-time
  • Mengidentifikasi pola yang lebih cocok untuk layanan AWS lainnya (OpenSearch untuk pencarian teks, Redshift untuk analitik)
  • Menandai pertimbangan desain khusus (misalnya, pola fan-out masif yang memerlukan DynamoDB Streams dan Lambda)

Fase Desain:

  • Menghasilkan desain tabel dan indeks yang dioptimalkan
  • Membuat dynamodb_data_model.md dengan alasan desain terperinci
  • Memberikan perkiraan biaya bulanan
  • Mendokumentasikan bagaimana setiap pola akses didukung
  • Menyertakan rekomendasi pengoptimalan untuk skala dan kinerja

Alat ini didukung oleh konteks yang direkayasa ahli yang membantu model penalaran memandu Anda melalui teknik pemodelan tingkat lanjut. Hasil terbaik dicapai dengan model berkemampuan penalaran seperti Anthropic Claude 4/4.5 Sonnet, OpenAI o3, dan Google Gemini 2.5.

Validasi Model Data

Prasyarat untuk Validasi Model Data: Untuk menggunakan alat validasi model data, Anda memerlukan salah satu dari berikut:

  • Runtime Kontainer: Docker, Podman, Finch, atau nerdctl dengan daemon yang berjalan
  • Runtime Java: Java JRE versi 17 atau lebih baru (atur JAVA_HOME atau pastikan java ada di PATH sistem Anda)

Setelah menyelesaikan desain model data Anda, gunakan alat dynamodb_data_model_validation untuk menguji model data Anda secara otomatis terhadap DynamoDB Local. Alat validasi menutup loop antara pembuatan dan eksekusi dengan menciptakan siklus validasi iteratif.

Cara Kerjanya:

Alat ini mengotomatiskan proses validasi manual tradisional:

  1. Penyiapan: Memutar lingkungan DynamoDB Local (Docker/Podman/Finch/nerdctl atau fallback Java)
  2. Menghasilkan Spesifikasi Uji: Membuat dynamodb_data_model.json yang mencantumkan tabel, data sampel, dan pola akses untuk diuji
  3. Menerapkan Skema: Membuat tabel, indeks, dan memasukkan data sampel secara lokal
  4. Menjalankan Pengujian: Menjalankan semua operasi baca dan tulis yang ditentukan dalam pola akses Anda
  5. Memvalidasi Hasil: Memeriksa bahwa setiap pola akses berperilaku benar dan efisien
  6. Penyempurnaan Iteratif: Jika validasi gagal (misalnya, kueri mengembalikan hasil yang tidak lengkap karena kunci partisi yang tidak selaras), alat mencatat masalah, dan meregenerasi skema yang terpengaruh serta menjalankan ulang pengujian hingga semua pola lulus

Keluaran Validasi:

  • dynamodb_model_validation.json: Hasil validasi terperinci dengan respons pola
  • validation_result.md: Ringkasan proses validasi dengan status lulus/gagal untuk setiap pola akses
  • Mengidentifikasi masalah seperti struktur kunci yang salah, indeks yang hilang, atau pola kueri yang tidak efisien

Analisis Basis Data Sumber

Alat source_db_analyzer mengekstrak skema dan pola akses dari basis data Anda yang ada untuk membantu mendesain model DynamoDB Anda. Ini berguna saat bermigrasi dari basis data relasional.

Alat ini mendukung dua metode koneksi untuk MySQL:

  • Akses berbasis RDS Data API: Koneksi tanpa server menggunakan cluster ARN
  • Akses berbasis koneksi: Koneksi tradisional menggunakan nama host/port

Basis Data yang Didukung:

  • MySQL / Aurora MySQL
  • PostgreSQL
  • SQL Server
  • Oracle

Mode Eksekusi:

  • Mode Layanan Mandiri: Hasilkan kueri SQL, jalankan sendiri, berikan hasil (MySQL, PostgreSQL, SQL Server, Oracle)
  • Mode Terkelola: Koneksi langsung melalui AWS RDS Data API (hanya MySQL)

Kami merekomendasikan menjalankan alat ini terhadap instans basis data non-produksi.

Mode Layanan Mandiri (MySQL, PostgreSQL, SQL Server, Oracle)

Mode layanan mandiri memungkinkan Anda menganalisis basis data apa pun tanpa konektivitas AWS:

  1. Hasilkan Kueri: Alat menulis kueri SQL (berdasarkan basis data yang dipilih) ke file
  2. Jalankan Kueri: Anda menjalankan kueri terhadap basis data Anda
  3. Berikan Hasil: Alat mem-parsing hasil dan menghasilkan analisis

Mode Terkelola (hanya MySQL)

Mode terkelola memungkinkan Anda menghubungkan alat ke AWS RDS Data API untuk menganalisis basis data MySQL/Aurora yang ada guna mengekstrak skema dan pola akses untuk pemodelan DynamoDB.

Prasyarat untuk Integrasi MySQL (Mode Terkelola)

Untuk akses berbasis RDS Data API:

  1. Cluster MySQL dengan RDS Data API diaktifkan
  2. Kredensial basis data disimpan di AWS Secrets Manager
  3. Kredensial AWS dengan izin untuk mengakses RDS Data API dan Secrets Manager

Untuk akses berbasis koneksi:

  1. Server MySQL dapat diakses dari lingkungan Anda

  2. Kredensial basis data disimpan di AWS Secrets Manager

  3. Rahasia Secrets Manager harus berisi bidang host yang cocok dengan nama host basis data Anda (selain username dan password). Ini memastikan kredensial hanya digunakan dengan host basis data yang dimaksud. Rahasia yang dikelola RDS menyertakan bidang ini secara otomatis. Jika Anda membuat rahasia secara manual, pastikan mengikuti struktur standar:

    aws secretsmanager create-secret \
        --name "my-db-secret" \
        --secret-string '{
            "engine": "mysql",
            "host": "my-db.cluster-xxx.us-east-1.rds.amazonaws.com",
            "username": "<username>",
            "password": "<password>",
            "dbname": "<database name>",
            "port": 3306
        }'
    
  4. Kredensial AWS dengan izin untuk mengakses Secrets Manager

Untuk kedua metode koneksi: 4. Aktifkan Skema Kinerja untuk analisis pola akses (opsional tetapi direkomendasikan):

  • Atur parameter performance_schema ke 1 di grup parameter DB Anda
  • Reboot instans DB setelah perubahan
  • Verifikasi dengan: SHOW GLOBAL VARIABLES LIKE '%performance_schema'
  • Pertimbangkan penyetelan:
    • performance_schema_digests_size - Baris maksimum di events_statements_summary_by_digest
    • performance_schema_max_digest_length - Panjang byte maksimum per digest pernyataan (default: 1024)
  • Tanpa Skema Kinerja, analisis hanya didasarkan pada skema informasi

Variabel Lingkungan MySQL

Tambahkan variabel lingkungan ini untuk mengaktifkan integrasi MySQL:

Untuk akses berbasis RDS Data API:

  • MYSQL_CLUSTER_ARN: ARN cluster MySQL
  • MYSQL_SECRET_ARN: ARN rahasia yang berisi kredensial basis data
  • MYSQL_DATABASE: Nama basis data untuk dianalisis
  • AWS_REGION: Region AWS dari cluster

Untuk akses berbasis koneksi:

  • MYSQL_HOSTNAME: Nama host atau endpoint server MySQL
  • MYSQL_PORT: Port server MySQL (opsional, default: 3306)
  • MYSQL_SECRET_ARN: ARN rahasia yang berisi kredensial basis data
  • MYSQL_DATABASE: Nama basis data untuk dianalisis
  • AWS_REGION: Region AWS tempat Secrets Manager berada

Opsi umum:

  • MYSQL_MAX_QUERY_RESULTS: Baris maksimum dalam file keluaran analisis (opsional, default: 500)

Catatan: Parameter alat eksplisit lebih diutamakan daripada variabel lingkungan. Hanya satu metode koneksi (cluster ARN atau nama host) yang harus ditentukan.

Konfigurasi MCP dengan MySQL

Untuk akses berbasis RDS Data API:

{
  "mcpServers": {
    "awslabs-dynamodb-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.dynamodb-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "us-west-2",
        "FASTMCP_LOG_LEVEL": "ERROR",
        "MYSQL_CLUSTER_ARN": "arn:aws:rds:$REGION:$ACCOUNT_ID:cluster:$CLUSTER_NAME",
        "MYSQL_SECRET_ARN": "arn:aws:secretsmanager:$REGION:$ACCOUNT_ID:secret:$SECRET_NAME",
        "MYSQL_DATABASE": "<DATABASE_NAME>",
        "MYSQL_MAX_QUERY_RESULTS": "500"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Untuk akses berbasis koneksi:

{
  "mcpServers": {
    "awslabs.dynamodb-mcp-server": {
      "command": "uvx",
      "args": ["awslabs.dynamodb-mcp-server@latest"],
      "env": {
        "AWS_PROFILE": "default",
        "AWS_REGION": "us-west-2",
        "FASTMCP_LOG_LEVEL": "ERROR",
        "MYSQL_HOSTNAME": "<MYSQL_HOST>",
        "MYSQL_PORT": "3306",
        "MYSQL_SECRET_ARN": "arn:aws:secretsmanager:$REGION:$ACCOUNT_ID:secret:$SECRET_NAME",
        "MYSQL_DATABASE": "<DATABASE_NAME>",
        "MYSQL_MAX_QUERY_RESULTS": "500"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

Menggunakan Analisis Basis Data Sumber

  1. Jalankan source_db_analyzer terhadap Database Anda (mode Self-service atau Managed)
  2. Tinjau folder analisis bertanda waktu yang dihasilkan (database_analysis_YYYYMMDD_HHMMSS)
  3. Baca file manifest.md terlebih dahulu - file ini mencantumkan semua file analisis dan statistik
  4. Baca semua file analisis untuk memahami struktur skema dan pola akses
  5. Gunakan analisis dengan dynamodb_data_modeling untuk merancang skema DynamoDB Anda

Alat ini menghasilkan file Markdown dengan:

  • Struktur skema (tabel, kolom, indeks, kunci asing)
  • Pola akses dari Performance Schema (pola kueri, RPS, frekuensi)
  • Analisis bertanda waktu untuk melacak perubahan dari waktu ke waktu

Konversi Skema dan Pembuatan Kode

Setelah merancang model data DynamoDB Anda, Anda dapat mengonversinya menjadi skema terstruktur dan menghasilkan kode python referensi. Saat menggunakan alat MCP melalui LLM, seluruh alur kerja ini terjadi secara otomatis - LLM memandu Anda melalui konversi skema, validasi, dan pembuatan kode dalam satu percakapan tanpa memerlukan pemanggilan alat secara manual.

Untuk penggunaan mandiri, Anda juga dapat memanggil alat ini langsung melalui CLI atau mengedit file schema.json secara manual dan membuat ulang kode sesuai kebutuhan.

Catatan: Validasi model data (dynamodb_data_model_validation) bersifat opsional untuk pembuatan kode. Namun, jika Anda berencana menguji kode yang dihasilkan dengan usage_examples.py terhadap DynamoDB Local, menjalankan validasi terlebih dahulu disarankan karena secara otomatis menyiapkan tabel dan data uji di DynamoDB Local.

Mengonversi Model Data ke Skema

Alat dynamodb_data_model_schema_converter mengonversi model data yang dapat dibaca manusia (dynamodb_data_model.md) menjadi skema JSON terstruktur yang mewakili tabel, indeks, entitas, dan pola akses DynamoDB Anda. Format yang dapat dibaca mesin ini memungkinkan pembuatan kode dan dapat diperluas untuk dokumentasi atau penyediaan infrastruktur.

Alat ini secara otomatis memvalidasi skema yang dihasilkan, memberikan pesan kesalahan terperinci dan saran perbaikan jika validasi gagal. Output disimpan ke folder bertanda waktu untuk isolasi.

Struktur Skema:

Schema.json yang dihasilkan adalah representasi terstruktur yang berisi:

  • Tabel: Satu atau lebih definisi tabel DynamoDB dengan kunci partisi/urut
  • Definisi GSI: Konfigurasi Global Secondary Index (opsional)
  • Entitas: Model domain (User, Order, Product, dll.) dengan bidang bertipe
  • Tipe Bidang: string, integer, decimal, boolean, array, object, uuid
  • Pola Akses: Operasi Query/Scan/GetItem dengan definisi parameter dan templat kunci
  • Templat Kunci: Pola untuk menghasilkan kunci partisi dan urut (misalnya, USER#{user_id})

Format terstruktur ini berfungsi sebagai input untuk alat pembuatan kode.

Memvalidasi File Skema

Alat dynamodb_data_model_schema_validator memvalidasi file schema.json Anda untuk memastikan formatnya tepat untuk pembuatan kode.

Pemeriksaan Validasi:

  • Bagian yang diperlukan (table_config, entities) ada
  • Semua bidang yang diperlukan ada
  • Tipe bidang valid (string, integer, decimal, boolean, array, object, uuid)
  • Nilai enum benar (tipe operasi, tipe pengembalian)
  • ID pola unik di semua entitas
  • Nama GSI cocok antara gsi_list dan gsi_mappings
  • Bidang yang dirujuk dalam templat ada di bidang entitas
  • Kondisi rentang valid dengan jumlah parameter yang benar
  • Pola akses memiliki operasi dan tipe pengembalian yang valid

Keamanan:

File skema harus berada dalam direktori kerja saat ini atau subdirektori. Upaya path traversal diblokir demi keamanan.

Contoh Output Validasi:

Sukses:

โœ… Schema validation passed!

Kesalahan dengan saran:

โŒ Schema validation failed:
  โ€ข entities.User.fields[0].type: Invalid type value 'strng'
    ๐Ÿ’ก Did you mean 'string'? Valid options: string, integer, decimal, boolean, array, object, uuid

Membuat Lapisan Akses Data

Alat generate_data_access_layer menghasilkan kode Python yang aman tipe dari file schema.json yang telah divalidasi.

Kode yang Dihasilkan:

  • Kelas Entitas: Model Pydantic dengan validasi bidang dan keamanan tipe
  • Kelas Repositori: Operasi CRUD (buat, baca, perbarui, hapus) untuk setiap entitas
  • Pola Akses: Operasi kueri dan pemindaian yang diimplementasikan sepenuhnya dari skema Anda
  • Repositori Dasar: Fungsionalitas bersama untuk semua repositori
  • Contoh Penggunaan: Kode contoh yang menunjukkan cara menggunakan kelas yang dihasilkan (opsional)
  • Konfigurasi: ruff.toml untuk kualitas kode dan pemformatan

Prasyarat untuk Pembuatan Kode:

Kode Python yang dihasilkan memerlukan dependensi runtime ini:

  • pydantic>=2.0 - Untuk validasi entitas dan keamanan tipe
  • boto3>=1.38 - Untuk operasi DynamoDB

Instal di proyek Anda:

uv add pydantic boto3
# or
pip install pydantic boto3

Dependensi Pengembangan Opsional:

Untuk linting dan pemformatan kode yang dihasilkan:

  • ruff==0.15.8 - Python linter dan formatter (disarankan)

Struktur File yang Dihasilkan:

generated_dal/
โ”œโ”€โ”€ entities.py              # Pydantic entity models
โ”œโ”€โ”€ repositories.py          # Repository classes with CRUD operations
โ”œโ”€โ”€ base_repository.py       # Base repository functionality
โ”œโ”€โ”€ transaction_service.py   # Cross-table transaction methods (if schema includes cross_table_access_patterns)
โ”œโ”€โ”€ access_pattern_mapping.json  # Pattern ID to method mapping
โ”œโ”€โ”€ usage_examples.py        # Sample usage code (if enabled)
โ””โ”€โ”€ ruff.toml               # Linting configuration

Menggunakan Kode yang Dihasilkan:

Kode yang dihasilkan menyediakan kelas entitas yang aman tipe dan metode repositori untuk semua pola akses Anda:

from generated_dal.repositories import UserRepository
from generated_dal.entities import User

# Initialize repository
repo = UserRepository(table_name="MyTable")

# Create a new user
user = User(user_id="123", username="username", name="John Doe")
repo.create(user)

# Query by access pattern
users = repo.get_user_by_username(username="username")

# Update user
user.name = "Jane Doe"
repo.update(user)

Untuk linting dan pemformatan kode yang dihasilkan dengan ruff:

ruff check generated_dal/        # Check for issues
ruff check --fix generated_dal/  # Auto-fix issues
ruff format generated_dal/       # Format code