AWS DynamoDB MCP Server

आधिकारिक

Amazon DynamoDB के लिए आधिकारिक डेवलपर अनुभव MCP सर्वर। यह सर्वर DynamoDB विशेषज्ञ डिज़ाइन मार्गदर्शन और डेटा मॉडलिंग सहायता प्रदान करता है।

दस्तावेज़

AWS DynamoDB MCP सर्वर

Amazon DynamoDB के लिए आधिकारिक डेवलपर अनुभव MCP सर्वर। यह सर्वर DynamoDB विशेषज्ञ डिज़ाइन मार्गदर्शन और डेटा मॉडलिंग सहायता प्रदान करता है।

[!IMPORTANT] जनरेटिव AI गलतियाँ कर सकता है। आपको अपने चुने हुए AI मॉडल और एजेंटिक कोडिंग सहायक द्वारा उत्पन्न सभी आउटपुट की समीक्षा करने पर विचार करना चाहिए। AWS जिम्मेदार AI नीति देखें।

उपलब्ध उपकरण

DynamoDB MCP सर्वर डेटा मॉडलिंग, सत्यापन, लागत विश्लेषण और कोड जनरेशन के लिए आठ उपकरण प्रदान करता है:

  • dynamodb_data_modeling - एंटरप्राइज़-स्तरीय डिज़ाइन पैटर्न, लागत अनुकूलन रणनीतियों और मल्टी-टेबल डिज़ाइन दर्शन के साथ संपूर्ण DynamoDB डेटा मॉडलिंग विशेषज्ञ प्रॉम्प्ट प्राप्त करता है। आवश्यकताएँ एकत्र करने, एक्सेस पैटर्न विश्लेषण और स्कीमा डिज़ाइन के माध्यम से मार्गदर्शन करता है।

    उदाहरण आह्वान: "DynamoDB डेटा मॉडलिंग MCP सर्वर का उपयोग करके मेरे ई-कॉमर्स एप्लिकेशन के लिए एक डेटा मॉडल डिज़ाइन करें"

  • dynamodb_data_model_validation - dynamodb_data_model.json लोड करके, DynamoDB लोकल सेट अप करके, परीक्षण डेटा के साथ तालिकाएँ बनाकर और सभी परिभाषित एक्सेस पैटर्न निष्पादित करके आपके DynamoDB डेटा मॉडल को मान्य करता है। विस्तृत सत्यापन परिणामों को dynamodb_model_validation.json में सहेजता है।

    उदाहरण आह्वान: "मेरे DynamoDB डेटा मॉडल को मान्य करें"

  • source_db_analyzer - स्कीमा संरचना, एक्सेस पैटर्न निकालने के लिए मौजूदा डेटाबेस (MySQL, PostgreSQL, SQL सर्वर, Oracle) का विश्लेषण करता है, और dynamodb_data_modeling के साथ उपयोग के लिए टाइमस्टैम्प्ड विश्लेषण फ़ाइलें उत्पन्न करता है। MySQL के लिए RDS डेटा API-आधारित एक्सेस और कनेक्शन-आधारित एक्सेस दोनों का समर्थन करता है।

    उदाहरण आह्वान: "मेरे MySQL डेटाबेस का विश्लेषण करें और DynamoDB डेटा मॉडल डिज़ाइन करने में मेरी सहायता करें"

  • generate_resources - DynamoDB डेटा मॉडल JSON फ़ाइल (dynamodb_data_model.json) से विभिन्न संसाधन उत्पन्न करता है। वर्तमान में केवल cdk संसाधन प्रकार समर्थित है। resource_type पैरामीटर के रूप में cdk पास करने पर DynamoDB तालिकाओं को परिनियोजित करने के लिए एक CDK ऐप उत्पन्न होता है। CDK ऐप उचित कॉन्फ़िगरेशन के साथ तालिकाएँ बनाने के लिए dynamodb_data_model.json पढ़ता है।

    उदाहरण आह्वान: "CDK का उपयोग करके मेरे DynamoDB डेटा मॉडल को परिनियोजित करने के लिए संसाधन उत्पन्न करें"

  • dynamodb_data_model_schema_converter - आपके डेटा मॉडल (dynamodb_data_model.md) को आपकी DynamoDB तालिकाओं, इंडेक्स, एंटिटी, फ़ील्ड और एक्सेस पैटर्न का प्रतिनिधित्व करने वाली एक संरचित schema.json फ़ाइल में परिवर्तित करता है। यह मशीन-पठनीय प्रारूप कोड जनरेशन के लिए उपयोग किया जाता है और दस्तावेज़ीकरण जनरेशन या इंफ्रास्ट्रक्चर प्रोविज़निंग जैसे अन्य उद्देश्यों के लिए बढ़ाया जा सकता है। शुद्धता सुनिश्चित करने के लिए 8 पुनरावृत्तियों तक स्कीमा को स्वचालित रूप से मान्य करता है।

    उदाहरण आह्वान: "कोड जनरेशन के लिए मेरे डेटा मॉडल को schema.json में बदलें"

  • dynamodb_data_model_schema_validator - कोड जनरेशन संगतता के लिए schema.json फ़ाइलों को मान्य करता है। फ़ील्ड प्रकारों, संचालनों, GSI मैपिंग, पैटर्न IDs की जाँच करता है, और सुधार सुझावों के साथ विस्तृत त्रुटि संदेश प्रदान करता है। सुनिश्चित करता है कि आपकी स्कीमा generate_data_access_layer उपकरण के लिए तैयार है।

    उदाहरण आह्वान: "/path/to/schema.json पर मेरी schema.json फ़ाइल को मान्य करें"

  • generate_data_access_layer - schema.json से टाइप-सुरक्षित Python कोड उत्पन्न करता है जिसमें फ़ील्ड सत्यापन के साथ एंटिटी क्लासेस, CRUD संचालनों के साथ रिपॉजिटरी क्लासेस, पूरी तरह से कार्यान्वित एक्सेस पैटर्न और वैकल्पिक उपयोग उदाहरण शामिल हैं। उत्पन्न कोड सत्यापन के लिए Pydantic और DynamoDB संचालनों के लिए boto3 का उपयोग करता है।

    उदाहरण आह्वान: "मेरी schema.json से Python कोड उत्पन्न करें"

  • compute_performances_and_costs - एक्सेस पैटर्न से DynamoDB क्षमता इकाइयों (RCU/WCU) और मासिक लागतों की गणना करता है। सभी DynamoDB संचालनों (GetItem, Query, Scan, PutItem, UpdateItem, DeleteItem, BatchGetItem, BatchWriteItem, TransactGetItems, TransactWriteItems) का विश्लेषण करता है, GSI अतिरिक्त लेखन को ट्रैक करता है, और भंडारण लागतों की गणना करता है। dynamodb_data_model.md में एक व्यापक लागत रिपोर्ट जोड़ता है।

    उदाहरण आह्वान: "मेरे DynamoDB डेटा मॉडल के लिए लागत और प्रदर्शन की गणना करें"

पूर्वापेक्षाएँ

  1. Astral या GitHub README से uv स्थापित करें
  2. uv python install 3.10 का उपयोग करके Python स्थापित करें
  3. AWS सेवाओं तक पहुँच के साथ AWS क्रेडेंशियल सेट अप करें

स्थापना

KiroCursorVS Code
KiroCursorVS Code

नोट: उपरोक्त इंस्टॉल बटन डिफ़ॉल्ट रूप से AWS_REGION को us-west-2 पर कॉन्फ़िगर करते हैं। यदि आपको किसी भिन्न क्षेत्र की आवश्यकता है तो स्थापना के बाद अपने MCP कॉन्फ़िगरेशन में इस मान को अपडेट करें।

अपनी कॉन्फ़िगरेशन फ़ाइल में MCP सर्वर जोड़ें (Kiro के लिए .kiro/settings/mcp.json में जोड़ें - कॉन्फ़िगरेशन पथ देखें):

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

विंडोज स्थापना

विंडोज उपयोगकर्ताओं के लिए, MCP सर्वर कॉन्फ़िगरेशन प्रारूप थोड़ा अलग है:

{
  "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"
      }
    }
  }
}

डॉकर स्थापना

एक सफल docker build -t awslabs/dynamodb-mcp-server . के बाद:

{
  "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": []
    }
  }
}

डेटा मॉडलिंग

प्राकृतिक भाषा में डेटा मॉडलिंग

अपने AI एजेंट के साथ प्राकृतिक भाषा वार्तालाप के माध्यम से DynamoDB डेटा मॉडल डिज़ाइन करने के लिए dynamodb_data_modeling उपकरण का उपयोग करें। बस पूछें: "DynamoDB डेटा मॉडल डिज़ाइन करने में मेरी सहायता के लिए मेरे DynamoDB MCP का उपयोग करें।"

यह उपकरण एक संरचित वर्कफ़्लो प्रदान करता है जो एप्लिकेशन आवश्यकताओं को DynamoDB डेटा मॉडल में अनुवादित करता है:

आवश्यकताएँ एकत्र करने का चरण:

  • प्राकृतिक भाषा वार्तालाप के माध्यम से एक्सेस पैटर्न कैप्चर करता है
  • एंटिटी, संबंध और पढ़ने/लिखने के पैटर्न का दस्तावेज़ीकरण करता है
  • प्रत्येक पैटर्न के लिए अनुमानित अनुरोध प्रति सेकंड (RPS) रिकॉर्ड करता है
  • dynamodb_requirements.md फ़ाइल बनाता है जो वास्तविक समय में अपडेट होती है
  • अन्य AWS सेवाओं (पाठ खोज के लिए OpenSearch, विश्लेषण के लिए Redshift) के लिए बेहतर अनुकूल पैटर्न की पहचान करता है
  • विशेष डिज़ाइन विचारों को चिह्नित करता है (जैसे, बड़े पैमाने पर फैन-आउट पैटर्न जिनके लिए DynamoDB स्ट्रीम और Lambda की आवश्यकता होती है)

डिज़ाइन चरण:

  • अनुकूलित तालिका और इंडेक्स डिज़ाइन उत्पन्न करता है
  • विस्तृत डिज़ाइन तर्क के साथ dynamodb_data_model.md बनाता है
  • अनुमानित मासिक लागत प्रदान करता है
  • दस्तावेज़ करता है कि प्रत्येक एक्सेस पैटर्न कैसे समर्थित है
  • पैमाने और प्रदर्शन के लिए अनुकूलन अनुशंसाएँ शामिल करता है

यह उपकरण विशेषज्ञ-इंजीनियर्ड संदर्भ द्वारा समर्थित है जो रीज़निंग मॉडल को उन्नत मॉडलिंग तकनीकों के माध्यम से आपका मार्गदर्शन करने में मदद करता है। सर्वोत्तम परिणाम रीज़निंग-सक्षम मॉडल जैसे Anthropic Claude 4/4.5 Sonnet, OpenAI o3, और Google Gemini 2.5 के साथ प्राप्त किए जाते हैं।

डेटा मॉडल सत्यापन

डेटा मॉडल सत्यापन के लिए पूर्वापेक्षाएँ: डेटा मॉडल सत्यापन उपकरण का उपयोग करने के लिए, आपको निम्नलिखित में से एक की आवश्यकता है:

  • कंटेनर रनटाइम: डॉकर, Podman, Finch, या nerdctl एक चालू डेमॉन के साथ
  • जावा रनटाइम: जावा JRE संस्करण 17 या नया (JAVA_HOME सेट करें या सुनिश्चित करें कि java आपके सिस्टम PATH में है)

अपना डेटा मॉडल डिज़ाइन पूरा करने के बाद, DynamoDB लोकल के विरुद्ध अपने डेटा मॉडल का स्वचालित रूप से परीक्षण करने के लिए dynamodb_data_model_validation उपकरण का उपयोग करें। सत्यापन उपकरण एक पुनरावृत्त सत्यापन चक्र बनाकर जनरेशन और निष्पादन के बीच के लूप को बंद करता है।

यह कैसे काम करता है:

यह उपकरण पारंपरिक मैन्युअल सत्यापन प्रक्रिया को स्वचालित करता है:

  1. सेटअप: DynamoDB लोकल वातावरण शुरू करता है (डॉकर/Podman/Finch/nerdctl या जावा फ़ॉलबैक)
  2. परीक्षण विनिर्देश उत्पन्न करें: परीक्षण के लिए तालिकाओं, नमूना डेटा और एक्सेस पैटर्न को सूचीबद्ध करते हुए dynamodb_data_model.json बनाता है
  3. स्कीमा परिनियोजित करें: स्थानीय रूप से तालिकाएँ, इंडेक्स बनाता है और नमूना डेटा सम्मिलित करता है
  4. परीक्षण निष्पादित करें: आपके एक्सेस पैटर्न में परिभाषित सभी पढ़ने और लिखने के संचालन चलाता है
  5. परिणाम मान्य करें: जाँचता है कि प्रत्येक एक्सेस पैटर्न सही और कुशलता से व्यवहार करता है
  6. पुनरावृत्त शोधन: यदि सत्यापन विफल हो जाता है (जैसे, गलत संरेखित विभाजन कुंजी के कारण क्वेरी अपूर्ण परिणाम लौटाती है), तो उपकरण समस्या रिकॉर्ड करता है, और प्रभावित स्कीमा को पुन: उत्पन्न करता है और सभी पैटर्न पास होने तक परीक्षण पुनः चलाता है

सत्यापन आउटपुट:

  • dynamodb_model_validation.json: पैटर्न प्रतिक्रियाओं के साथ विस्तृत सत्यापन परिणाम
  • validation_result.md: प्रत्येक एक्सेस पैटर्न के लिए पास/फेल स्थिति के साथ सत्यापन प्रक्रिया का सारांश
  • गलत कुंजी संरचनाओं, गुम इंडेक्स, या अक्षम क्वेरी पैटर्न जैसे मुद्दों की पहचान करता है

स्रोत डेटाबेस विश्लेषण

source_db_analyzer उपकरण आपके DynamoDB मॉडल को डिज़ाइन करने में मदद करने के लिए आपके मौजूदा डेटाबेस से स्कीमा और एक्सेस पैटर्न निकालता है। यह संबंधपरक डेटाबेस से माइग्रेट करते समय उपयोगी है।

यह उपकरण MySQL के लिए दो कनेक्शन विधियों का समर्थन करता है:

  • RDS डेटा API-आधारित एक्सेस: क्लस्टर ARN का उपयोग करके सर्वर रहित कनेक्शन
  • कनेक्शन-आधारित एक्सेस: होस्टनाम/पोर्ट का उपयोग करके पारंपरिक कनेक्शन

समर्थित डेटाबेस:

  • MySQL / Aurora MySQL
  • PostgreSQL
  • SQL सर्वर
  • Oracle

निष्पादन मोड:

  • स्व-सेवा मोड: SQL क्वेरीज़ उत्पन्न करें, उन्हें स्वयं चलाएँ, परिणाम प्रदान करें (MySQL, PostgreSQL, SQL सर्वर, Oracle)
  • प्रबंधित मोड: AWS RDS डेटा API के माध्यम से सीधा कनेक्शन (केवल MySQL)

हम इस उपकरण को गैर-उत्पादन डेटाबेस इंस्टेंस के विरुद्ध चलाने की अनुशंसा करते हैं।

स्व-सेवा मोड (MySQL, PostgreSQL, SQL सर्वर, Oracle)

स्व-सेवा मोड आपको AWS कनेक्टिविटी के बिना किसी भी डेटाबेस का विश्लेषण करने की अनुमति देता है:

  1. क्वेरीज़ उत्पन्न करें: उपकरण चयनित डेटाबेस के आधार पर SQL क्वेरीज़ को एक फ़ाइल में लिखता है
  2. क्वेरीज़ चलाएँ: आप अपने डेटाबेस के विरुद्ध क्वेरीज़ निष्पादित करते हैं
  3. परिणाम प्रदान करें: उपकरण परिणामों को पार्स करता है और विश्लेषण उत्पन्न करता है

प्रबंधित मोड (केवल MySQL)

प्रबंधित मोड आपको DynamoDB मॉडलिंग के लिए स्कीमा और एक्सेस पैटर्न निकालने हेतु मौजूदा MySQL/Aurora डेटाबेस का विश्लेषण करने के लिए उपकरण को AWS RDS डेटा API से कनेक्ट करने की अनुमति देता है।

MySQL एकीकरण के लिए पूर्वापेक्षाएँ (प्रबंधित मोड)

RDS डेटा API-आधारित एक्सेस के लिए:

  1. RDS डेटा API सक्षम MySQL क्लस्टर
  2. AWS Secrets Manager में संग्रहीत डेटाबेस क्रेडेंशियल
  3. RDS डेटा API और Secrets Manager तक पहुँचने की अनुमतियों वाले AWS क्रेडेंशियल

कनेक्शन-आधारित एक्सेस के लिए:

  1. आपके वातावरण से सुलभ MySQL सर्वर

  2. AWS Secrets Manager में संग्रहीत डेटाबेस क्रेडेंशियल

  3. Secrets Manager सीक्रेट में आपके डेटाबेस होस्टनाम से मेल खाने वाला एक host फ़ील्ड अवश्य होना चाहिए (username और password के अतिरिक्त)। यह सुनिश्चित करता है कि क्रेडेंशियल केवल इच्छित डेटाबेस होस्ट के साथ उपयोग किए जाएँ। RDS-प्रबंधित सीक्रेट में यह फ़ील्ड स्वचालित रूप से शामिल होता है। यदि आपने अपना सीक्रेट मैन्युअल रूप से बनाया है, तो सुनिश्चित करें कि यह मानक संरचना का पालन करता है:

    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. Secrets Manager तक पहुँचने की अनुमतियों वाले AWS क्रेडेंशियल

दोनों कनेक्शन विधियों के लिए: 4. एक्सेस पैटर्न विश्लेषण के लिए प्रदर्शन स्कीमा सक्षम करें (वैकल्पिक लेकिन अनुशंसित):

  • अपने DB पैरामीटर समूह में performance_schema पैरामीटर को 1 पर सेट करें
  • परिवर्तनों के बाद DB इंस्टेंस को रीबूट करें
  • इसके साथ सत्यापित करें: SHOW GLOBAL VARIABLES LIKE '%performance_schema'
  • ट्यूनिंग पर विचार करें:
    • performance_schema_digests_size - events_statements_summary_by_digest में अधिकतम पंक्तियाँ
    • performance_schema_max_digest_length - प्रति स्टेटमेंट डाइजेस्ट अधिकतम बाइट लंबाई (डिफ़ॉल्ट: 1024)
  • प्रदर्शन स्कीमा के बिना, विश्लेषण केवल सूचना स्कीमा पर आधारित होता है

MySQL पर्यावरण चर

MySQL एकीकरण सक्षम करने के लिए ये पर्यावरण चर जोड़ें:

RDS डेटा API-आधारित एक्सेस के लिए:

  • MYSQL_CLUSTER_ARN: MySQL क्लस्टर ARN
  • MYSQL_SECRET_ARN: डेटाबेस क्रेडेंशियल वाले सीक्रेट का ARN
  • MYSQL_DATABASE: विश्लेषण करने के लिए डेटाबेस नाम
  • AWS_REGION: क्लस्टर का AWS क्षेत्र

कनेक्शन-आधारित एक्सेस के लिए:

  • MYSQL_HOSTNAME: MySQL सर्वर होस्टनाम या एंडपॉइंट
  • MYSQL_PORT: MySQL सर्वर पोर्ट (वैकल्पिक, डिफ़ॉल्ट: 3306)
  • MYSQL_SECRET_ARN: डेटाबेस क्रेडेंशियल वाले सीक्रेट का ARN
  • MYSQL_DATABASE: विश्लेषण करने के लिए डेटाबेस नाम
  • AWS_REGION: AWS क्षेत्र जहाँ Secrets Manager स्थित है

सामान्य विकल्प:

  • MYSQL_MAX_QUERY_RESULTS: विश्लेषण आउटपुट फ़ाइलों में अधिकतम पंक्तियाँ (वैकल्पिक, डिफ़ॉल्ट: 500)

नोट: स्पष्ट उपकरण पैरामीटर पर्यावरण चर पर प्राथमिकता लेते हैं। केवल एक कनेक्शन विधि (क्लस्टर ARN या होस्टनाम) निर्दिष्ट की जानी चाहिए।

MySQL के साथ MCP कॉन्फ़िगरेशन

RDS डेटा 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": []
    }
  }
}

कनेक्शन-आधारित एक्सेस के लिए:

{
  "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": []
    }
  }
}

स्रोत डेटाबेस विश्लेषण का उपयोग करना

  1. अपने डेटाबेस के विरुद्ध source_db_analyzer चलाएँ (स्व-सेवा या प्रबंधित मोड)
  2. उत्पन्न टाइमस्टैम्प्ड विश्लेषण फ़ोल्डर (database_analysis_YYYYMMDD_HHMMSS) की समीक्षा करें
  3. पहले manifest.md फ़ाइल पढ़ें - यह सभी विश्लेषण फ़ाइलों और आँकड़ों को सूचीबद्ध करती है
  4. स्कीमा संरचना और एक्सेस पैटर्न को समझने के लिए सभी विश्लेषण फ़ाइलें पढ़ें
  5. अपना DynamoDB स्कीमा डिज़ाइन करने के लिए dynamodb_data_modeling के साथ विश्लेषण का उपयोग करें

यह उपकरण Markdown फ़ाइलें उत्पन्न करता है जिनमें शामिल हैं:

  • स्कीमा संरचना (तालिकाएँ, कॉलम, इंडेक्स, विदेशी कुंजियाँ)
  • प्रदर्शन स्कीमा से एक्सेस पैटर्न (क्वेरी पैटर्न, RPS, आवृत्तियाँ)
  • समय के साथ परिवर्तनों को ट्रैक करने के लिए टाइमस्टैम्प्ड विश्लेषण

स्कीमा रूपांतरण और कोड जनरेशन

अपना DynamoDB डेटा मॉडल डिज़ाइन करने के बाद, आप इसे एक संरचित स्कीमा में परिवर्तित कर सकते हैं और संदर्भ python कोड उत्पन्न कर सकते हैं। LLM के माध्यम से MCP उपकरणों का उपयोग करते समय, यह संपूर्ण वर्कफ़्लो स्वचालित रूप से होता है - LLM मैन्युअल उपकरण आह्वान की आवश्यकता के बिना एक ही वार्तालाप में स्कीमा रूपांतरण, सत्यापन और कोड जनरेशन के माध्यम से आपका मार्गदर्शन करता है।

स्टैंडअलोन उपयोग के लिए, आप इन उपकरणों को सीधे CLI के माध्यम से भी आमंत्रित कर सकते हैं या मैन्युअल रूप से schema.json फ़ाइलों को संपादित कर सकते हैं और आवश्यकतानुसार कोड पुन: उत्पन्न कर सकते हैं।

नोट: डेटा मॉडल सत्यापन (dynamodb_data_model_validation) कोड जनरेशन के लिए वैकल्पिक है। हालाँकि, यदि आप DynamoDB लोकल के विरुद्ध usage_examples.py के साथ उत्पन्न कोड का परीक्षण करने की योजना बनाते हैं, तो पहले सत्यापन चलाने की अनुशंसा की जाती है क्योंकि यह DynamoDB लोकल में स्वचालित रूप से तालिकाएँ और परीक्षण डेटा सेट अप करता है।

डेटा मॉडल को स्कीमा में परिवर्तित करना

dynamodb_data_model_schema_converter उपकरण आपके मानव-पठनीय डेटा मॉडल (dynamodb_data_model.md) को आपकी DynamoDB तालिकाओं, इंडेक्स, एंटिटी और एक्सेस पैटर्न का प्रतिनिधित्व करने वाली एक संरचित JSON स्कीमा में परिवर्तित करता है। यह मशीन-पठनीय प्रारूप कोड जनरेशन को सक्षम करता है और दस्तावेज़ीकरण या इंफ्रास्ट्रक्चर प्रोविज़निंग के लिए बढ़ाया जा सकता है।

यह उपकरण स्वचालित रूप से उत्पन्न स्कीमा को मान्य करता है, यदि सत्यापन विफल होता है तो विस्तृत त्रुटि संदेश और सुधार सुझाव प्रदान करता है। आउटपुट को अलगाव के लिए टाइमस्टैम्प्ड फ़ोल्डर में सहेजा जाता है।

स्कीमा संरचना:

उत्पन्न schema.json एक संरचित प्रतिनिधित्व है जिसमें शामिल है:

  • तालिकाएँ: विभाजन/सॉर्ट कुंजियों के साथ एक या अधिक DynamoDB तालिका परिभाषाएँ
  • GSI परिभाषाएँ: ग्लोबल सेकेंडरी इंडेक्स कॉन्फ़िगरेशन (वैकल्पिक)
  • एंटिटी: टाइप किए गए फ़ील्ड के साथ डोमेन मॉडल (उपयोगकर्ता, ऑर्डर, उत्पाद, आदि)
  • फ़ील्ड प्रकार: string, integer, decimal, boolean, array, object, uuid
  • एक्सेस पैटर्न: पैरामीटर परिभाषाओं और कुंजी टेम्पलेट्स के साथ Query/Scan/GetItem संचालन
  • कुंजी टेम्पलेट्स: विभाजन और सॉर्ट कुंजियाँ उत्पन्न करने के लिए पैटर्न (जैसे, USER#{user_id})

यह संरचित प्रारूप कोड जनरेशन उपकरणों के लिए इनपुट के रूप में कार्य करता है।

स्कीमा फ़ाइलों को मान्य करना

dynamodb_data_model_schema_validator उपकरण यह सुनिश्चित करने के लिए आपकी schema.json फ़ाइल को मान्य करता है कि यह कोड जनरेशन के लिए उचित रूप से स्वरूपित है।

सत्यापन जाँच:

  • आवश्यक अनुभाग (table_config, entities) मौजूद हैं
  • सभी आवश्यक फ़ील्ड मौजूद हैं
  • फ़ील्ड प्रकार मान्य हैं (string, integer, decimal, boolean, array, object, uuid)
  • एनम मान सही हैं (संचालन प्रकार, वापसी प्रकार)
  • सभी एंटिटी में पैटर्न IDs अद्वितीय हैं
  • GSI नाम gsi_list और gsi_mappings के बीच मेल खाते हैं
  • टेम्पलेट्स में संदर्भित फ़ील्ड एंटिटी फ़ील्ड में मौजूद हैं
  • रेंज शर्तें सही पैरामीटर गणनाओं के साथ मान्य हैं
  • एक्सेस पैटर्न में मान्य संचालन और वापसी प्रकार हैं

सुरक्षा:

स्कीमा फ़ाइलें वर्तमान कार्यशील निर्देशिका या उपनिर्देशिकाओं के भीतर होनी चाहिए। सुरक्षा के लिए पथ ट्रैवर्सल प्रयास अवरुद्ध हैं।

सत्यापन आउटपुट उदाहरण:

सफलता:

✅ Schema validation passed!

सुझावों के साथ त्रुटि:

❌ 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

डेटा एक्सेस लेयर उत्पन्न करना

generate_data_access_layer उपकरण आपकी मान्य schema.json फ़ाइल से टाइप-सुरक्षित Python कोड उत्पन्न करता है।

उत्पन्न कोड:

  • एंटिटी क्लासेस: फ़ील्ड सत्यापन और टाइप सुरक्षा के साथ Pydantic मॉडल
  • रिपॉजिटरी क्लासेस: प्रत्येक एंटिटी के लिए CRUD संचालन (बनाएँ, पढ़ें, अपडेट करें, हटाएँ)
  • एक्सेस पैटर्न: आपकी स्कीमा से पूरी तरह कार्यान्वित क्वेरी और स्कैन संचालन
  • बेस रिपॉजिटरी: सभी रिपॉजिटरी के लिए साझा कार्यक्षमता
  • उपयोग उदाहरण: उत्पन्न कक्षाओं का उपयोग करने का तरीका प्रदर्शित करने वाला नमूना कोड (वैकल्पिक)
  • कॉन्फ़िगरेशन: कोड गुणवत्ता और स्वरूपण के लिए ruff.toml

कोड जनरेशन के लिए पूर्वापेक्षाएँ:

उत्पन्न Python कोड को इन रनटाइम निर्भरताओं की आवश्यकता होती है:

  • pydantic>=2.0 - एंटिटी सत्यापन और टाइप सुरक्षा के लिए
  • boto3>=1.38 - DynamoDB संचालनों के लिए

उन्हें अपने प्रोजेक्ट में स्थापित करें:

uv add pydantic boto3
# or
pip install pydantic boto3

वैकल्पिक विकास निर्भरताएँ:

उत्पन्न कोड की लिंटिंग और स्वरूपण के लिए:

  • ruff==0.15.8 - Python लिंटर और फ़ॉर्मेटर (अनुशंसित)

उत्पन्न फ़ाइल संरचना:

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

उत्पन्न कोड का उपयोग करना:

उत्पन्न कोड आपके सभी एक्सेस पैटर्न के लिए टाइप-सुरक्षित एंटिटी क्लासेस और रिपॉजिटरी विधियाँ प्रदान करता है:

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)

ruff के साथ उत्पन्न कोड की लिंटिंग और स्वरूपण के लिए:

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