콘텐츠로 이동

Python MCP Server에서 DynamoDB로

connection 생성기는 Python MCP ServerPython DynamoDB 프로젝트에 연결하여 로컬 개발 시 두 프로젝트가 자동으로 함께 시작되도록 구성합니다.

이 생성기를 사용하기 전에 다음이 필요합니다:

  1. py#mcp-server 프로젝트
  2. py#dynamodb 프로젝트

이 제너레이터 실행@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
명령 구성하기5

필수

필수

MCP 서버 프로젝트를 소스로, DynamoDB 프로젝트를 타겟으로 선택합니다. 프로젝트에 여러 MCP 서버 컴포넌트가 포함된 경우 sourceComponent를 지정하여 명확히 구분합니다.

제너레이터 옵션5 옵션
sourceProject필수string

소스 프로젝트

targetProject필수string

연결할 대상 프로젝트

sourceComponentstring

연결할 소스 컴포넌트 (컴포넌트 이름, 소스 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 소스로 명시적으로 선택하려면 '.'을 사용하세요.

targetComponentstring

연결할 대상 컴포넌트 (컴포넌트 이름, 대상 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 대상으로 명시적으로 선택하려면 '.'을 사용하세요.

preferInstallDependenciesboolean기본값: true

생성기 실행 후 의존성 설치를 선호할지 여부입니다. 여러 생성기를 일괄 처리할 때 설치를 연기하려면 false로 설정하세요 (후속 생성기가 Nx 프로젝트 그래프를 계산할 수 있도록 필요한 경우 설치는 여전히 실행됩니다); 마지막에 한 번만 설치합니다.

생성기는 MCP 서버의 project.json에 있는 <mcp-server-name>-dev 타겟을 업데이트하여 DynamoDB 프로젝트의 dev 타겟에 의존하도록 하고, DynamoDB 패키지를 워크스페이스 의존성으로 추가합니다. 소스 파일은 수정되지 않습니다.

DynamoDB 패키지에서 엔티티 클래스를 가져와 MCP 서버 도구 내에서 사용합니다:

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 서버의 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는 MCP 서버의 실행 역할에 DynamoDB 및 KMS 권한을 모두 부여합니다.

connection 생성기는 프로젝트의 dev 타겟이 DynamoDB 프로젝트의 dev 타겟에 의존하도록 구성합니다. DynamoDB Local은 dev를 실행할 때 프로젝트와 함께 자동으로 시작됩니다.

LOCAL_DEV=true 환경 변수가 자동으로 설정되므로 is_local()True를 반환하고 PynamoDB 엔티티가 AWS 대신 로컬 DynamoDB 인스턴스에 연결됩니다.