Skip to content

MCP Server から DynamoDB へ

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

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

  1. ts#mcp-server プロジェクト
  2. ts#dynamodb プロジェクト

このジェネレーターを実行@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
コマンドを組み立てる5

必須

必須

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

ジェネレーターオプション5 オプション
sourceProject必須string

ソース プロジェクト

targetProject必須string

接続先のターゲット プロジェクト

sourceComponentstring

接続元のソースコンポーネント(コンポーネント名、ソースプロジェクトルートからの相対パス、またはジェネレーターID)。プロジェクトをソースとして明示的に選択するには '.' を使用します。

targetComponentstring

接続先のターゲットコンポーネント(コンポーネント名、ターゲットプロジェクトルートからの相対パス、またはジェネレーターID)。プロジェクトをターゲットとして明示的に選択するには '.' を使用します。

preferInstallDependenciesbooleanデフォルト: true

ジェネレーター実行後に依存関係のインストールを優先するかどうか。複数のジェネレーターをバッチ処理する際にインストールを延期する場合はfalseに設定します(後続のジェネレーターがNxプロジェクトグラフを計算できるよう、必要に応じてインストールは実行されます)。最後に一度だけインストールします。

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

DynamoDB パッケージからエンティティファクトリーをインポートし、createServer 内で使用します:

packages/my-service/src/my-mcp/server.ts
import { createExampleEntity } from '@my-scope/my-table';
export const createServer = async () => {
const server = new McpServer({ name: 'my-service', version: '1.0.0' });
server.registerTool(
'list_examples',
{ description: 'List all example items', inputSchema: {} },
async () => {
const entity = await createExampleEntity();
const result = await entity.scan.go();
return {
content: [{ type: 'text' as const, text: JSON.stringify(result.data) }],
};
},
);
return server;
};

MCP サーバーが 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 ターゲットに依存するように設定します。DynamoDB Local は dev の実行時にプロジェクトと一緒に自動的に起動します。

LOCAL_DEV=true 環境変数は自動的に設定されるため、getDynamoDBClient()resolveTableName() は AWS ではなくローカルの DynamoDB Local インスタンスに接続します。