Skip to content

Python MCP Server to DynamoDB

connectionジェネレーターは、Python MCP ServerPython DynamoDBプロジェクトに接続し、両方が自動的に一緒に起動するようにローカル開発環境を構成します。

このジェネレーターを使用する前に、以下を用意してください:

  1. py#mcp-serverプロジェクト
  2. py#dynamodbプロジェクト
  1. インストール Nx Console VSCode Plugin まだインストールしていない場合
  2. VSCodeでNxコンソールを開く
  3. クリック Generate (UI) "Common Nx Commands"セクションで
  4. 検索 @aws/nx-plugin - connection
  5. 必須パラメータを入力
    • クリック Generate

    MCPサーバープロジェクトをソースとして、DynamoDBプロジェクトをターゲットとして選択します。プロジェクトに複数のMCPサーバーコンポーネントが含まれている場合は、sourceComponentを指定して明確にします。

    パラメータ デフォルト 説明
    sourceProject 必須 string - ソース プロジェクト
    targetProject 必須 string - 接続先のターゲット プロジェクト
    sourceComponent string - 接続元のソース コンポーネント (コンポーネント名、ソース プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをソースとして明示的に選択するには '.' を使用します。
    targetComponent string - 接続先のターゲット コンポーネント (コンポーネント名、ターゲット プロジェクト ルートからの相対パス、またはジェネレーター ID)。プロジェクトをターゲットとして明示的に選択するには '.' を使用します。
    preferInstallDependencies boolean true ジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合はfalseに設定します(後続のジェネレーターがNxプロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。

    ジェネレーターは、MCPサーバーの<mcp-server-name>-devターゲットをproject.json内で更新し、DynamoDBプロジェクトのdevターゲットに依存するようにし、DynamoDBパッケージをワークスペースの依存関係として追加します。ソースファイルは変更されません。

    DynamoDBパッケージからエンティティクラスをインポートし、MCPサーバーツール内で使用します:

    packages/my_project/my_project/my_mcp_server/server.py
    from my_scope.my_table.entities.example import ExampleModel
    @mcp.tool()
    def list_examples() -> str:
    """List all example items."""
    items = list(ExampleModel.scan())
    return str([item.attribute_values for item in items])

    MCPサーバーのLambda関数がDynamoDBテーブルにアクセスできるようにするには、インフラストラクチャで必要な権限を付与します。

    packages/infra/src/stacks/application-stack.ts
    import { MyTable } from ':my-scope/common-constructs';
    const table = new MyTable(this, 'Table');
    const myMcpServer = new MyMcpServer(this, 'MyMcpServer');
    table.grantReadWriteData(myMcpServer);

    grantReadWriteDataは、MCPサーバーの実行ロールにDynamoDBとKMSの両方の権限を付与します。

    connection ジェネレーターは、プロジェクトの dev ターゲットが DynamoDB プロジェクトの dev ターゲットに依存するように設定します。dev を実行すると、DynamoDB Local がプロジェクトと一緒に自動的に起動します。

    LOCAL_DEV=true 環境変数は自動的に設定されるため、is_local()True を返し、PynamoDB エンティティは AWS ではなくローカルの DynamoDB インスタンスに接続します。