콘텐츠로 이동

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 서버는 연결할 수 없습니다.

Terminal window
pnpm nx g @aws/nx-plugin:connection
어떤 파일이 변경될지 확인하기 위해 드라이 런을 수행할 수도 있습니다
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

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

매개변수타입기본값설명
sourceProject 필수string-소스 프로젝트
targetProject 필수string-연결할 대상 프로젝트
sourceComponent string-연결을 시작할 소스 컴포넌트 (컴포넌트 이름, 소스 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 소스로 명시적으로 선택하려면 '.'을 사용하세요.
targetComponent string-연결할 대상 컴포넌트 (컴포넌트 이름, 대상 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 대상으로 명시적으로 선택하려면 '.'을 사용하세요.
preferInstallDependencies booleantrue생성기 실행 후 의존성 설치를 선호할지 여부입니다. 여러 생성기를 일괄 처리할 때 설치를 연기하려면 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로 실행할 때 이를 가리킵니다.