Bỏ qua để đến nội dung

MCP Server đến DynamoDB

Generator connection kết nối một TypeScript MCP Server với dự án TypeScript DynamoDB, cấu hình phát triển cục bộ để cả hai khởi động cùng nhau tự động.

Trước khi sử dụng generator này, hãy đảm bảo bạn có:

  1. Một dự án ts#mcp-server
  2. Một dự án ts#dynamodb

Chạy generator này@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
Xây dựng lệnh của bạn5

Bắt buộc

Bắt buộc

Chọn dự án MCP server của bạn làm nguồn và dự án DynamoDB của bạn làm đích. Nếu dự án chứa nhiều component MCP server, hãy chỉ định sourceComponent để phân biệt.

Tùy chọn của generator5 tùy chọn
sourceProjectBắt buộcstring

Dự án nguồn

targetProjectBắt buộcstring

Dự án đích để kết nối tới

sourceComponentstring

Component nguồn để kết nối từ đó (tên component, đường dẫn tương đối so với thư mục gốc của dự án nguồn, hoặc id của generator). Sử dụng '.' để chọn rõ ràng dự án làm nguồn.

targetComponentstring

Component đích để kết nối tới (tên component, đường dẫn tương đối so với thư mục gốc của dự án đích, hoặc id của generator). Sử dụng '.' để chọn rõ ràng dự án làm đích.

preferInstallDependenciesbooleanMặc định: true

Có nên cài đặt các dependencies sau khi generator chạy hay không. Đặt thành false để trì hoãn việc cài đặt khi chạy nhiều generator liên tiếp (việc cài đặt vẫn sẽ chạy nếu cần thiết để các generator tiếp theo có thể tính toán Nx project graph); cài đặt một lần vào cuối.

Generator cập nhật target <mcp-server-name>-dev của MCP server trong project.json để phụ thuộc vào target dev của dự án DynamoDB. Không có file nguồn nào được sửa đổi.

Import các entity factory từ package DynamoDB và sử dụng chúng bên trong 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;
};

Để cho phép MCP server truy cập bảng DynamoDB, hãy cấp các quyền cần thiết trong infrastructure của bạn.

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 cấp cả quyền DynamoDB và KMS cho execution role của MCP server.

Trình tạo connection cấu hình target dev của dự án để phụ thuộc vào target dev của dự án DynamoDB. DynamoDB Local sẽ tự động khởi động cùng với dự án của bạn khi chạy dev.

Biến môi trường LOCAL_DEV=true được đặt tự động, do đó getDynamoDBClient()resolveTableName() kết nối với phiên bản DynamoDB Local cục bộ thay vì AWS.