콘텐츠로 이동

AgentCore Gateway에서 MCP Server로

connection 제너레이터는 MCP 서버(TypeScript 또는 Python)를 AgentCore Gateway의 대상으로 등록할 수 있습니다.

연결되면 Gateway는 MCP 서버의 도구를 단일 MCP 엔드포인트로 집계하고, Cedar 정책 엔진에 대해 호출을 평가하며, MCP 서버로 나가는 트래픽에 IAM SigV4로 서명합니다.

이 제너레이터를 사용하기 전에 다음이 필요합니다:

  1. agentcore-gateway 프로젝트
  2. infra: agentcoreauth: iam으로 생성된 MCP 서버 컴포넌트(ts#mcp-server 또는 py#mcp-server)

Gateway는 protocol: mcp를 가져야 하고 MCP 서버는 auth: iam을 가져야 합니다 — 제너레이터는 둘 다 검증합니다. Gateway가 SigV4로 나가는 트래픽에 서명하기 때문에 IAM이 아닌 MCP 서버는 연결할 수 없습니다.

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

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

필수

필수

Gateway 프로젝트를 소스로, MCP 서버 프로젝트를 대상으로 선택합니다. MCP 서버 프로젝트에 여러 컴포넌트가 포함된 경우 targetComponent를 지정하여 명확히 합니다.

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

소스 프로젝트

targetProject필수string

연결할 대상 프로젝트

sourceComponentstring

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

targetComponentstring

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

preferInstallDependenciesboolean기본값: true

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

제너레이터는 새 소스 파일을 생성하는 대신 기존 프로젝트를 함께 연결합니다. 다음 파일이 수정됩니다:

  • 디렉터리packages/<gateway>
    • project.json Gateway의 dev 타겟이 MCP 서버의 <mcp>-dev에 대한 종속성을 얻습니다
    • local-dev.ts ATTACHED_MCP_SERVERS가 업데이트되어 로컬 게이트웨이가 MCP 서버를 집계합니다

Gateway 프로젝트의 dev 타겟은 MCP 서버의 <mcp>-dev 타겟에 대한 종속성을 얻으므로 Gateway를 로컬에서 실행하면 MCP 서버도 시작됩니다. MCP 서버는 Gateway 프로젝트의 local-dev.ts에도 등록되어 로컬 게이트웨이가 해당 도구를 집계합니다.

제너레이터는 Gateway를 인스턴스화하는 스택이나 모듈을 알 수 없기 때문에 MCP 서버 대상을 인프라에 자동으로 연결할 수 없습니다. gateway.addMcpServer(server)에 대한 단일 호출을 직접 추가하세요.

Gateway를 인스턴스화하는 스택에서 MCP 서버를 대상으로 등록합니다:

packages/infra/src/stacks/application-stack.ts
const myMcpServer = new MyMcpServer(this, 'MyMcpServer');
const myGateway = new MyGateway(this, 'MyGateway');
// Register the MCP server as a target of the Gateway. The target name
// defaults to the MCP server's `mcpServerName` (its class name in
// kebab-case, e.g. `MyMcpServer` -> `my-mcp-server`).
myGateway.addMcpServer(myMcpServer);

Gateway 대상 이름(기본적으로 MCP 서버의 mcpServerName)은 Cedar 액션 이름의 접두사로 사용됩니다 — 액션 형식은 AgentCore::Action::"<targetName>___<toolName>"입니다. 정책 작성 섹션을 참조하세요. 대상 이름을 짧고 안정적으로 유지하세요. 나중에 변경하면 이전 이름을 참조하는 Cedar 정책이 무효화됩니다.

기본 대상 이름을 재정의하려면 gatewayTargetName을 전달하세요:

myGateway.addMcpServer(myMcpServer, { gatewayTargetName: 'my-mcp' });

구성은 iamCredentialProvider.service = 'bedrock-agentcore'로 대상을 구성하여 Gateway가 자체 실행 역할을 사용하여 나가는 호출에 서명하도록 합니다.

다음 명령으로 Gateway를 로컬에서 실행하면:

Terminal window
pnpm nx dev <gateway-name>

로컬 게이트웨이와 할당된 로컬 포트의 모든 연결된 MCP 서버가 시작됩니다. 로컬 게이트웨이는 연결된 서버의 도구를 집계하는 단일 MCP 엔드포인트를 노출합니다. TypeScript 또는 Python 게이트웨이 연결 제너레이터를 통해 Gateway에 연결된 에이전트는 LOCAL_DEV=true로 실행할 때 이를 가리킵니다.