跳转到内容

Python MCP Server 到 DynamoDB

connection 生成器将 Python MCP Server 连接到 Python DynamoDB 项目,配置本地开发环境使两者自动一起启动。

在使用此生成器之前,请确保您拥有:

  1. 一个 py#mcp-server 项目
  2. 一个 py#dynamodb 项目
Terminal window
pnpm nx g @aws/nx-plugin:connection
您还可以执行试运行以查看哪些文件会被更改
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

选择您的 MCP server 项目作为源,选择您的 DynamoDB 项目作为目标。如果项目包含多个 MCP server 组件,请指定 sourceComponent 以消除歧义。

参数类型默认值描述
sourceProject 必需string-源项目
targetProject 必需string-要连接到的目标项目
sourceComponent string-要从其连接的源组件(组件名称、相对于源项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为源。
targetComponent string-要连接到的目标组件(组件名称、相对于目标项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为目标。
preferInstallDependencies booleantrue是否在生成器运行后优先安装依赖项。设置为 false 可在批量运行多个生成器时延迟安装(如果后续生成器需要计算 Nx 项目图,仍会运行安装);在最后统一安装一次。

生成器会更新 MCP server 的 <mcp-server-name>-dev 目标(在 project.json 中),使其依赖于 DynamoDB 项目的 dev 目标,并将 DynamoDB 包添加为工作区依赖项。不会修改任何源文件。

从 DynamoDB 包中导入实体类,并在您的 MCP server 工具中使用它们:

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 server 的 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 将 DynamoDB 和 KMS 权限授予 MCP server 的执行角色。

connection 生成器会配置您的项目的 dev 目标,使其依赖于 DynamoDB 项目的 dev 目标。当运行 dev 时,DynamoDB Local 将与您的项目一起自动启动。

LOCAL_DEV=true 环境变量会自动设置,因此 is_local() 返回 True,您的 PynamoDB 实体将连接到本地 DynamoDB 实例而不是 AWS。