Voltar as noticias
Construa um Servidor MCP Seguro na AWS com Amazon Bedrock AgentCore
TutoriaisAltaEN

Construa um Servidor MCP Seguro na AWS com Amazon Bedrock AgentCore

Dev.to - MCP·18 de agosto de 2026

Um servidor MCP se torna muito mais útil quando pode acessar sistemas reais. Ele também se torna muito mais perigoso se receber credenciais amplas ou expuser ferramentas de mutação por acidente.

Neste tutorial, construiremos um servidor MCP remoto deliberadamente pequeno que pode:

  • listar documentos de texto sob um prefixo em um bucket Amazon S3;
  • ler um documento UTF-8 selecionado;
  • rejeitar escapes de caminho, arquivos binários e leituras excessivas;
  • autenticar chamadores remotos com Amazon Cognito; e
  • funcionar como um servidor HTTP sem estado e transmitível no Amazon Bedrock AgentCore Runtime.

O resultado tem duas ferramentas MCP—list_documents e read_document—e nenhuma capacidade de upload, sobrescrita ou exclusão.

Nota de validação: Testei localmente o exemplo em 18 de agosto de 2026 com Python 3.12.3, mcp 1.29.0 e boto3 1.43.73. Todos os 17 testes unitários passaram, seguidos por uma inicialização real de HTTP transmitível, descoberta de ferramentas e fluxo de chamada de ferramentas contra um backend S3 simulado. Não criei ou implantei recursos da AWS enquanto preparava este artigo; os comandos da AWS abaixo foram verificados contra a documentação oficial atual.

Arquitetura

Arquitetura mostrando um cliente MCP autenticando com Amazon Cognito, chamando um servidor FastMCP no Amazon Bedrock AgentCore Runtime, lendo um prefixo restrito do Amazon S3 através de um papel IAM da AWS, e enviando telemetria para o Amazon CloudWatch.

O fluxo de solicitação é:

  1. Amazon Cognito autentica o usuário e emite um token de acesso assinado.
  2. O cliente MCP chama o endpoint do AgentCore Runtime via HTTPS usando MCP Streamable HTTP e o token bearer.
  3. AgentCore valida o token contra o documento de descoberta OIDC do Cognito e roteia a solicitação MCP para o FastMCP em 0.0.0.0:8000/mcp.
  4. FastMCP invoca uma ferramenta Python somente leitura. O Boto3 usa automaticamente as credenciais IAM temporárias do runtime.
  5. O papel IAM permite apenas s3:ListBucket e s3:GetObject sob o prefixo configurado. A telemetria do runtime vai para o Amazon CloudWatch.

Streamable HTTP é o transporte remoto padrão do MCP. Cada mensagem JSON-RPC é enviada com HTTP POST, e um servidor pode retornar JSON ou um fluxo SSE. O SDK do cliente lida com os tipos de mídia necessários e os cabeçalhos MCP para nós. Veja a especificação de transporte MCP para o contrato em nível de wire.

O AgentCore Runtime é útil aqui porque já entende os runtimes MCP, sessões, escalabilidade, isolamento de segurança e observabilidade. Este design, portanto, não precisa de um adaptador de streaming API Gateway-to-Lambda personalizado. A AWS documenta o contrato de runtime em Implantar servidores MCP no AgentCore Runtime.

Pré-requisitos

Você precisa:

  • uma conta AWS e um perfil AWS CLI v2 com permissão para criar recursos Cognito, IAM, S3, CloudFormation e AgentCore;
  • Python 3.12;
  • Node.js 20 ou mais recente e npm;
  • jq;
  • o AWS CDK; e
  • o AgentCore CLI.

Instale os dois CLIs e verifique sua identidade AWS:

npm install --global aws-cdk @aws/agentcore
aws sts get-caller-identity
agentcore --help

Use uma região de forma consistente. Este tutorial usa como padrão us-west-2:

export AWS_REGION="us-west-2"
export AWS_ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)"

Aviso de custo e limpeza: Os comandos nas seções de implantação criam recursos da AWS que geram cobrança. Execute a seção de limpeza quando terminar. Não cole senhas reais, tokens, IDs de conta ou nomes de recursos gerados em um artigo público, captura de tela, repositório ou problema.

1. Crie o bucket S3 do tutorial

Crie um nome de bucket globalmente único a partir da sua conta e região:

export S3_BUCKET="s3-document-mcp-${AWS_ACCOUNT_ID}-${AWS_REGION}"
export S3_PREFIX="documents/"

if [ "$AWS_REGION" = "us-east-1" ]; then
  aws s3api create-bucket \
    --bucket "$S3_BUCKET" \
    --region "$AWS_REGION"
else
  aws s3api create-bucket \
    --bucket "$S3_BUCKET" \
    --region "$AWS_REGION" \
    --create-bucket-configuration "LocationConstraint=$AWS_REGION"
fi

aws s3api put-public-access-block \
  --bucket "$S3_BUCKET" \
  --public-access-block-configuration \
  'BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true'

Carregue um documento de exemplo:

mkdir -p tutorial-docs
printf '# Welcome\n\nEste documento veio do prefixo S3 protegido.\n' > tutorial-docs/welcome.md
aws s3 cp tutorial-docs/welcome.md "s3://${S3_BUCKET}"
Contexto Triplo Up

Este tutorial é essencial para empresas brasileiras que desejam implementar servidores MCP seguros na nuvem. A utilização de práticas de segurança e autenticação robustas pode prevenir vazamentos de dados e garantir a integridade das operações. A adoção de tecnologias como AWS e MCP pode impulsionar a inovação e a eficiência nos negócios.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.