跳转到内容

Python MCP Server 到 DynamoDB

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

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

  1. 一个 py#mcp-server 项目
  2. 一个 py#dynamodb 项目

运行此生成器@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
构建你的命令5

必需

必需

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

生成器选项5 个选项
sourceProject必需string

源项目

targetProject必需string

要连接到的目标项目

sourceComponentstring

要连接的源组件(组件名称、相对于源项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为源。

targetComponentstring

要连接到的目标组件(组件名称、相对于目标项目根目录的路径或生成器 ID)。使用 '.' 显式选择项目作为目标。

preferInstallDependenciesboolean默认值: true

是否在生成器运行后优先安装依赖项。设置为 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。