Python MCP Server から DynamoDB への接続
connection ジェネレーターは、Python MCP Server を Python DynamoDB プロジェクトに接続し、両方が自動的に一緒に起動するようにローカル開発を構成します。
このジェネレーターを使用する前に、以下を確認してください:
py#mcp-serverプロジェクトpy#dynamodbプロジェクト
ジェネレーターの実行
Section titled “ジェネレーターの実行”このジェネレーターを実行@aws/nx-plugin:connection
pnpm nx g @aws/nx-plugin:connection yarn nx g @aws/nx-plugin:connection npx nx g @aws/nx-plugin:connection bunx nx g @aws/nx-plugin:connection- インストール Nx Console VSCode Plugin まだインストールしていない場合
- VSCodeでNxコンソールを開く
- クリック
Generate (UI)"Common Nx Commands"セクションで - 検索
@aws/nx-plugin - connection - 必須パラメータを入力
- クリック
Generate
コマンドを組み立てる5
必須
必須
MCP サーバープロジェクトをソースとして、DynamoDB プロジェクトをターゲットとして選択します。プロジェクトに複数の MCP サーバーコンポーネントが含まれている場合は、sourceComponent を指定して明確にします。
sourceProject必須stringソース プロジェクト
targetProject必須string接続先のターゲット プロジェクト
sourceComponentstring接続元のソースコンポーネント(コンポーネント名、ソースプロジェクトルートからの相対パス、またはジェネレーターID)。プロジェクトをソースとして明示的に選択するには '.' を使用します。
targetComponentstring接続先のターゲットコンポーネント(コンポーネント名、ターゲットプロジェクトルートからの相対パス、またはジェネレーターID)。プロジェクトをターゲットとして明示的に選択するには '.' を使用します。
preferInstallDependenciesbooleanデフォルト:trueジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合はfalseに設定します(後続のジェネレーターがNxプロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。
ジェネレーターの出力
Section titled “ジェネレーターの出力”ジェネレーターは、MCP サーバーの project.json 内の <mcp-server-name>-dev ターゲットを更新して、DynamoDB プロジェクトの dev ターゲットに依存するようにし、DynamoDB パッケージをワークスペースの依存関係として追加します。ソースファイルは変更されません。
ツールでの DynamoDB の使用
Section titled “ツールでの DynamoDB の使用”DynamoDB パッケージからエンティティクラスをインポートし、MCP サーバーツール内で使用します:
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])インフラストラクチャ
Section titled “インフラストラクチャ”MCP サーバーの Lambda 関数が DynamoDB テーブルにアクセスできるようにするには、インフラストラクチャで必要な権限を付与します。
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 の両方の権限を付与します。
additional_iam_policy_statements を介して、MCP サーバーのランタイムロールにテーブルとその KMS 暗号化キーへのアクセスを許可します:
module "my_table" { source = "../../common/terraform/src/app/dynamodb/my-table"}
module "my_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/my-mcp-server"
additional_iam_policy_statements = [ { Effect = "Allow" Action = [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", ] Resource = [ module.my_table.table_arn, "${module.my_table.table_arn}/index/*", ] }, { Effect = "Allow" Action = [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", ] Resource = [module.my_table.kms_key_arn] }, ]}ローカル開発
Section titled “ローカル開発”connection ジェネレーターは、プロジェクトの dev ターゲットが DynamoDB プロジェクトの dev ターゲットに依存するように設定します。dev を実行すると、DynamoDB Local がプロジェクトと一緒に自動的に起動します。
LOCAL_DEV=true 環境変数は自動的に設定されるため、is_local() は True を返し、PynamoDB エンティティは AWS ではなくローカルの DynamoDB インスタンスに接続します。