Integrando o AWS API MCP Server com o Amazon Quick usando o Amazon Bedrock AgentCore Runtime

O problema que essa integração resolve

Conforme a infraestrutura AWS cresce, as equipes de Engenharia de Confiabilidade de Sites (SRE) e DevOps passam cada vez mais tempo alternando entre o Console de Gerenciamento da AWS, documentação de Interface de Linha de Comando (CLI) e múltiplos dashboards de serviços. Traduzir perguntas de negócio para a sintaxe correta de chamadas de Interface de Programação de Aplicações (API), encadear chamadas entre serviços e reconstruir os mesmos padrões de integração para cada novo caso de uso — tudo isso gera um atrito que se acumula com o tempo.

Investigações de incidentes exigem cruzar logs do Amazon CloudWatch, estados de instâncias do Amazon Elastic Compute Cloud (Amazon EC2) e políticas de Gerenciamento de Identidade e Acesso (IAM) em interfaces separadas. Planejamento de capacidade significa consultar múltiplos serviços manualmente. Auditorias de segurança demandam sequências repetíveis de chamadas de API que são trabalhosas de criar do zero.

A AWS publicou um guia técnico mostrando como usar o Amazon Bedrock AgentCore Runtime com suporte ao Protocolo de Contexto de Modelo (MCP) para conectar o Amazon Quick a serviços AWS por meio do AWS API MCP Server. O resultado é um assistente de Inteligência Artificial (IA) conversacional que traduz linguagem natural em comandos da CLI da AWS, sem precisar trocar de ferramenta nos momentos críticos.

Como a solução funciona

Com o Amazon Bedrock AgentCore Runtime e suporte a MCP, consultas em linguagem natural são traduzidas diretamente em chamadas de API da AWS. É possível perguntar “Mostre todas as instâncias EC2 em execução na us-east-1” e obter resultados imediatos e precisos sem alternar entre ferramentas ou memorizar sintaxe de API. As requisições são executadas com segurança dentro das permissões de IAM existentes, com trilhas completas de auditoria no Amazon CloudWatch para fins de conformidade.

Em vez de reconstruir a lógica de conexão para cada fluxo de trabalho, é possível padronizar como agentes de IA interagem com serviços AWS por meio de uma única integração reutilizável.

O fluxo de funcionamento para operações do dia a dia é o seguinte:

  • O usuário faz uma pergunta em linguagem natural: “Mostre instâncias EC2 em execução na us-east-1”.
  • O agente personalizado do Amazon Quick interpreta a intenção.
  • O Amazon Cognito autentica a requisição: o Quick obtém um token JWT do pool de usuários do Amazon Cognito usando o fluxo de credenciais de cliente OAuth 2.0 com o ID e o segredo de cliente configurados.
  • O agente se conecta ao AWS API MCP Server: a requisição autenticada chega ao Amazon Bedrock AgentCore Runtime, que valida o token JWT em relação à configuração do provedor de identidade (IdP) do Cognito.
  • O AgentCore Runtime autoriza e roteia a requisição: após validar o token, invoca com segurança o AWS API MCP Server em execução no ambiente containerizado.
  • O servidor MCP traduz a requisição: a consulta em linguagem natural é convertida no comando CLI da AWS apropriado.
  • Os serviços AWS executam o comando usando a função de execução IAM configurada, com permissões de privilégio mínimo.
  • Os resultados são retornados em formato legível diretamente na interface do Quick, sem necessidade de sintaxe CLI.

Pré-requisitos

Para seguir o guia publicado pela AWS, são necessários:

  • Conta AWS com acesso administrativo
  • Assinatura Amazon Quick Enterprise (nível Professional no mínimo)
  • Acesso ao AWS Marketplace — AWS API MCP Server
  • Permissões IAM para criar: pools de usuários do Amazon Cognito, funções e políticas IAM, agentes do Amazon Bedrock AgentCore Runtime e grupos de logs do Amazon CloudWatch
  • CLI da AWS instalada e configurada
  • Conhecimento básico de funções e políticas IAM, fluxos de autenticação OAuth 2.0 e conceitos de Token Web JSON (JWT)

O tempo estimado de conclusão é de 30 a 45 minutos. Para referência de custos, a estimativa de custo mensal para um único usuário Enterprise executando aproximadamente 500 consultas por mês é de cerca de US$ 292/mês, principalmente pela assinatura Amazon Quick Enterprise (US$ 40/usuário/mês) e pela taxa de infraestrutura (US$ 250/conta/mês).

Configurando a solução passo a passo

1. Configurar o pool de usuários do Amazon Cognito

O Amazon Cognito fornece autenticação e autorização para a aplicação. Nessa solução, o pool de usuários do Cognito é configurado para gerar tokens JWT que autenticam as requisições ao Amazon Bedrock AgentCore Runtime.

Com a autenticação JWT usando o Amazon Cognito, o autorizador é configurado durante a operação CreateAgentRuntime, especificando a URL de descoberta do IdP e os clientes permitidos. O código existente do agente não precisa de modificação — apenas a configuração do autorizador é adicionada ao deploy do runtime.

Ao criar o pool de usuários com uma aplicação máquina a máquina, o Amazon Cognito cria automaticamente um servidor de recursos com escopos OAuth 2.0 personalizados. Os escopos de leitura e escrita controlam o acesso ao AWS API MCP Server:

  • Escopo de leitura: permite que a aplicação consulte recursos AWS (por exemplo, listar instâncias EC2 ou descrever buckets do Amazon Simple Storage Service — Amazon S3).
  • Escopo de escrita: permite que a aplicação modifique recursos AWS (por exemplo, criar recursos ou atualizar configurações).

Esses escopos mapeiam para as permissões IAM que o servidor MCP usa ao executar comandos CLI da AWS em nome de requisições autenticadas.

2. Criar as funções IAM

Para executar agentes ou ferramentas no Amazon Bedrock AgentCore Runtime, é necessária uma função de execução IAM. Para informações sobre como criar uma função IAM, consulte a documentação de criação de funções IAM. Para detalhes sobre as permissões necessárias, consulte as Permissões IAM para o AgentCore Runtime.

A política de confiança do AgentCore Runtime deve ser configurada da seguinte forma (substitua YOUR_ACCOUNT_ID pelo ID da sua conta AWS):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AssumeRolePolicy",
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock-agentcore.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "YOUR_ACCOUNT_ID"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:bedrock-agentcore:*:YOUR_ACCOUNT_ID:*"
        }
      }
    }
  ]
}

A política de execução concede à função as permissões necessárias para baixar a imagem de container do AWS API MCP Server e gravar logs de runtime. A imagem de container está hospedada em um repositório público do Amazon Elastic Container Registry (Amazon ECR) gerenciado pela AWS — não é necessário construir ou manter a imagem. Para encontrar a URI mais recente do container, acesse o AWS Marketplace — AWS API MCP Server.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ECRImageAccess",
      "Effect": "Allow",
      "Action": [
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ],
      "Resource": [
        "arn:aws:ecr:us-east-1:709825985650:repository/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogStreams",
        "logs:CreateLogGroup"
      ],
      "Resource": [
        "arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": [
        "arn:aws:logs:us-east-1:YOUR_ACCOUNT_ID:log-group:/aws/bedrock-agentcore/runtimes/*:log-stream:*"
      ]
    },
    {
      "Sid": "ECRTokenAccess",
      "Effect": "Allow",
      "Action": [
        "ecr:GetAuthorizationToken"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "xray:PutTraceSegments",
        "xray:PutTelemetryRecords",
        "xray:GetSamplingRules",
        "xray:GetSamplingTargets"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Resource": "*",
      "Action": "cloudwatch:PutMetricData",
      "Condition": {
        "StringEquals": {
          "cloudwatch:namespace": "bedrock-agentcore"
        }
      }
    },
    {
      "Sid": "GetAgentAccessToken",
      "Effect": "Allow",
      "Action": [
        "bedrock-agentcore:GetWorkloadAccessToken",
        "bedrock-agentcore:GetWorkloadAccessTokenForJWT",
        "bedrock-agentcore:GetWorkloadAccessTokenForUserId"
      ],
      "Resource": [
        "arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default",
        "arn:aws:bedrock-agentcore:us-east-1:YOUR_ACCOUNT_ID:workload-identity-directory/default/workload-identity/*"
      ]
    }
  ]
}

Também é necessário anexar permissões específicas que definem quais ações a função pode executar em seu nome. O exemplo a seguir usa uma política de somente leitura com escopo reduzido, concedendo s3:ListBucket e s3:GetObject em todos os buckets — propositalmente ampla apenas para descoberta e exploração inicial:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeInstances",
        "ec2:DescribeImages"
      ],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "ec2:Region": "us-east-1"
        }
      }
    }
  ]
}

Atenção: usar recurso com caractere curinga (arn:aws:s3:::*) concede acesso a todos os buckets S3 da conta. Isso é aceitável para configuração inicial e testes, mas viola o princípio de privilégio mínimo em produção. Antes de implantar em produção, substitua o curinga por ARNs específicos de bucket.

3. Criar o agente Amazon Bedrock AgentCore Runtime

No Amazon AgentCore, acesse o menu de runtime e escolha a opção de hospedar agente/ferramenta. Forneça um nome exclusivo para o agente de runtime. Em Fonte do Agente, selecione a opção de container do ECR e insira a URI da imagem obtida no AWS Marketplace.

Na seção de autenticação de entrada, selecione o protocolo MCP e o token JWT como tipo de autenticação de entrada. Para a configuração do esquema JWT, use o pool de identidade do Cognito criado no primeiro passo. Obtenha a URL de descoberta nas informações do pool de usuários do Cognito — ela segue o formato:

https://cognito-idp.$REGION.amazonaws.com/$POOL_ID/.well-known/openid-configuration

Adicione os clientes permitidos copiando o ID do cliente (Client ID) da seção App Client do pool de usuários do Cognito.

Nas configurações avançadas, mantenha o modo de rede padrão como Público para este guia. Para implantações em produção, escolha a opção de Nuvem Privada Virtual (VPC) para restringir o acesso de rede a ambientes privados e controlados.

Em seguida, adicione as seguintes variáveis de ambiente antes de criar o agente:

AUTH_TYPE: "no-auth"
AWS_API_MCP_HOST: "0.0.0.0"
AWS_API_MCP_PORT: "8000"
AWS_API_MCP_STATELESS_HTTP: "true"
AWS_API_MCP_TRANSPORT: "streamable-http"
AWS_API_MCP_ALLOWED_HOSTS = "*"
AWS_API_MCP_ALLOWED_ORIGINS = "*"

Uma nota importante sobre o AUTH_TYPE: no-auth: o servidor MCP em si não realiza autenticação — isso é intencional e seguro quando implantado por meio do Amazon Bedrock AgentCore Runtime. O AgentCore Runtime atua como fronteira de segurança: antes que uma requisição chegue ao container do servidor MCP, o Runtime já validou o token JWT, verificou assinaturas criptográficas, validou claims do token (emissor, audiência, expiração) e rejeitou requisições sem um token OAuth 2.0 válido. É o mesmo padrão usado por microsserviços internos atrás de um API Gateway.

Atenção: não use AUTH_TYPE: no-auth se estiver executando o servidor MCP fora do AgentCore Runtime — por exemplo, diretamente em uma instância EC2 ou como container avulso. Nesse cenário, o servidor ficaria exposto sem camada de autenticação.

4. Configurar a integração no Amazon Quick e criar o agente de chat

No console do Amazon Quick, acesse as configurações de integração. No painel de navegação esquerdo, escolha Integrações e selecione Ações. Adicione a integração do protocolo MCP para conectar o Amazon Quick ao servidor MCP hospedado no Amazon Bedrock AgentCore Runtime.

Para configurar o endpoint, recupere o ARN do Amazon Bedrock AgentCore Runtime na seção de Detalhes de Ferramentas do agente. O formato do endpoint deve ser:

https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{url-encoded-arn}/invocations?qualifier=DEFAULT

Para criar um ARN codificado em URL, execute o seguinte comando no terminal:

echo "YOUR_ARN" | sed 's/:/%3A/g; s/\//%2F/g'

Ou no Windows PowerShell:

[System.Uri]::EscapeDataString("YOUR_ARN")

Para estabelecer comunicação segura entre o Amazon Quick e o servidor MCP, configure a autenticação de serviço usando as credenciais do pool de usuários do Amazon Cognito. O console do Amazon Cognito permite localizar o Client ID e o Client Secret na seção de App Clients do pool de usuários. Para a Token URL, construa-a usando o domínio do pool de usuários no formato:

https://your-domain.auth.region.amazoncognito.com/oauth2/token

Importante: trate o Client Secret como uma senha. Armazene-o de forma segura usando o AWS Secrets Manager para implantações em produção. Não o incorpore em código do lado do cliente ou em controle de versão.

Com a integração criada, navegue até Agentes Personalizados no console do Amazon Quick e crie um agente de chat com o seguinte prompt:

Create a conversational agent that allows users to execute AWS CLI commands using natural language. Translates user requests into appropriate AWS API calls through the aws-api-mcp connector.

O Amazon Quick detecta e seleciona automaticamente o conector MCP com base no prompt. Após verificar que a integração correta está associada, acione o agente para disponibilizá-lo para testes.

Implantação automatizada

Para implantação automatizada, a AWS disponibiliza instruções no GitHub para implantar o AWS API MCP Server no Amazon Bedrock Runtime. Para configurar o pool de usuários do Cognito e o app client de forma automatizada, siga as instruções na documentação AWS na seção de Apêndice em Configurar pool de usuários do Cognito para autenticação.

Testando a solução

Para validar o agente de chat personalizado, acesse a interface de chat do agente recém-criado e teste com comandos em linguagem natural. Exemplo de prompt para validação:

Show running EC2 instances in the us-east-1 region.

Limpeza dos recursos

Para evitar cobranças contínuas, a AWS recomenda remover os recursos criados durante o guia:

  • Exclua os recursos do Amazon Quick: o agente de chat personalizado, Spaces e Flows.
  • Remova a integração MCP: delete a ação MCP criada no Amazon Quick.
  • Limpe os recursos do Amazon Bedrock: exclua o agente AgentCore e sua função de execução IAM associada.
  • Exclua o pool de usuários do Amazon Cognito criado para autenticação.

Conclusão

O guia publicado pela AWS demonstra como conectar o Amazon Quick a serviços AWS usando o Amazon Bedrock AgentCore Runtime e o AWS API MCP Server. Ao padronizar como agentes de IA interagem com a infraestrutura por meio do MCP, equipes evitam reconstruir padrões de integração personalizados para cada novo caso de uso.

A partir desse padrão, é possível estender a abordagem para automatizar consultas operacionais comuns, construir agentes específicos para segurança, otimização de custos ou planejamento de capacidade, e integrar com fluxos de gerenciamento de incidentes usando o Amazon Quick Flows e o Amazon Quick Automate.

Fonte

Integrating AWS API MCP Server with Amazon Quick using Amazon Bedrock AgentCore Runtime (https://aws.amazon.com/blogs/machine-learning/integrating-aws-api-mcp-server-with-amazon-quick-suite-using-amazon-bedrock-agentcore-runtime/)

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *