콘텐츠로 이동

AgentCore Gateway에서 MCP Server로

connection 생성기는 MCP 서버(TypeScript 또는 Python)를 AgentCore Gateway의 대상으로 등록할 수 있습니다.

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

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

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

Gateway는 protocol: mcp를 가져야 하고 MCP 서버는 auth: iam을 가져야 합니다 — 생성기가 둘 다 검증합니다. Gateway가 SigV4로 아웃바운드 트래픽에 서명하기 때문에 비-IAM MCP 서버는 연결할 수 없습니다.

  1. 설치 Nx Console VSCode Plugin 아직 설치하지 않았다면
  2. VSCode에서 Nx 콘솔 열기
  3. 클릭 Generate (UI) "Common Nx Commands" 섹션에서
  4. 검색 @aws/nx-plugin - connection
  5. 필수 매개변수 입력
    • 클릭 Generate

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

    매개변수 타입 기본값 설명
    sourceProject 필수 string - 소스 프로젝트
    targetProject 필수 string - 연결할 대상 프로젝트
    sourceComponent string - 연결을 시작할 소스 컴포넌트 (컴포넌트 이름, 소스 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 소스로 명시적으로 선택하려면 '.'을 사용하세요.
    targetComponent string - 연결할 대상 컴포넌트 (컴포넌트 이름, 대상 프로젝트 루트 기준 상대 경로, 또는 generator id). 프로젝트를 대상으로 명시적으로 선택하려면 '.'을 사용하세요.
    preferInstallDependencies boolean true 생성기 실행 후 의존성 설치를 선호할지 여부입니다. 여러 생성기를 일괄 처리할 때 설치를 연기하려면 false로 설정하세요 (후속 생성기가 Nx 프로젝트 그래프를 계산할 수 있도록 필요한 경우 설치는 여전히 실행됩니다); 마지막에 한 번만 설치합니다.

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

    • 디렉터리packages/<gateway>
      • project.json <gateway>-serve-local이 MCP 서버의 <mcp>-serve-local에 대한 종속성을 얻음
      • serve-local.ts ATTACHED_MCP_SERVERS가 로컬 gateway가 MCP 서버를 집계하도록 업데이트됨

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

    생성기는 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');
    // MCP 서버를 Gateway의 대상으로 등록합니다. 대상 이름은
    // 기본적으로 MCP 서버 구성의 id를 kebab-case로 변환한 것입니다 (`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>

    로컬 gateway와 할당된 로컬 포트의 모든 연결된 MCP 서버가 시작됩니다. 로컬 gateway는 연결된 서버의 도구를 집계하는 단일 MCP 엔드포인트를 노출합니다. TypeScript 또는 Python gateway-connection 생성기를 통해 Gateway에 연결된 에이전트는 SERVE_LOCAL=true로 실행할 때 이를 가리킵니다.