Este guia mostra como hospedar um servidor do Protocolo de Contexto de Modelo (MCP, na sigla em inglês) com transporte HTTP transmissível no Cloud Run e fornece orientações para autenticar clientes do MCP. Se você não conhece o MCP, leia os seguintes recursos:
O MCP é um protocolo aberto que padroniza a interação dos agentes de IA com o ambiente. O agente de IA hospeda um cliente do MCP, e as ferramentas e recursos com que ele interage são servidores MCP. O cliente do MCP pode se comunicar com o servidor do MCP em dois tipos de transporte distintos:
- Eventos enviados pelo servidor (SSE, na sigla em inglês) ou HTTP transmissível
- Entrada/saída padrão (stdio)
É possível hospedar clientes e servidores do MCP na mesma máquina local, hospedar um cliente do MCP localmente e fazer com que ele se comunique com servidores do MCP remotos hospedados em uma plataforma de nuvem como o Cloud Run ou hospedar o cliente e o servidor do MCP em uma plataforma de nuvem.
O Cloud Run oferece suporte à hospedagem de servidores MCP com transporte HTTP transmissível, mas não de servidores MCP com transporte stdio.
O diagrama a seguir mostra como o cliente do MCP recebe a intenção do agente de IA e envia uma solicitação padronizada aos servidores MCP, especificando a ferramenta a ser executada. Depois que o servidor MCP executa a ação e recupera os resultados, o servidor MCP retorna o resultado ao cliente MCP em um formato consistente.
As orientações nesta página se aplicam se você estiver desenvolvendo seu próprio servidor MCP ou usando um servidor MCP atual.
- Se você estiver desenvolvendo seu próprio servidor MCP, recomendamos que use um SDK do servidor MCP, como os SDKs de linguagem oficiais (TypeScript, Python, Go, Kotlin, Java, C#, Ruby ou Rust) ou FastMCP.
- Se você estiver usando um servidor MCP atual, encontre uma lista de servidores MCP oficiais e da comunidade no repositório do GitHub de servidores MCP. O Docker Hub também oferece uma lista selecionada de servidores do MCP.
Antes de começar
-
In the Cloud de Confiance console, on the project selector page, select or create a Cloud de Confiance project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Cloud de Confiance project.
- Configure seu ambiente de desenvolvimento do Cloud Run no seu Cloud de Confiance projeto.
- Verifique se você tem as
permissões adequadas para implantar serviços e os papéis de administrador do Cloud Run (
roles/run.admin) e usuário da conta de serviço (roles/iam.serviceAccountUser) concedidos à sua conta. -
No Cloud de Confiance console, acesse a página IAM.
Acessar IAM - Selecione o projeto.
- Clique em Conceder acesso.
-
No campo Novos principais, digite seu identificador de usuário. Normalmente, esse é o endereço de e-mail usado para implantar o serviço do Cloud Run.
- Na lista Selecionar papel, escolha um.
- Para conceder outros papéis, clique em Adicionar outro papel e adicione cada papel extra.
- Clique em Salvar.
- PROJECT_NUMBER pelo número do seu Cloud de Confiance projeto número.
- PROJECT_ID pelo ID do seu Cloud de Confiance projeto.
- PRINCIPAL com a conta para a qual você está adicionando a vinculação. Normalmente, esse é o endereço de e-mail que é usado para implantar o serviço do Cloud Run.
- ROLE pelo papel que você está adicionando à conta do implantador.
- Consulte os preços do Cloud Run ou estime os custos com a calculadora de preços.
Saiba como conceder os papéis
Console
gcloud
Para conceder os papéis necessários do IAM à sua conta no seu projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
Hospedar servidores remotos do MCP de SSE ou HTTP transmissível
Os servidores MCP que usam os eventos enviados pelo servidor (SSE) ou o transporte HTTP transmissível podem ser hospedados remotamente dos clientes MCP.
Para implantar esse tipo de servidor MCP no Cloud Run, você pode implantar o servidor MCP como uma imagem do contêiner ou como código-fonte (geralmente Node.js ou Python), dependendo de como o servidor MCP é empacotado.
Imagens do Container
Os servidores MCP remotos distribuídos como imagens do contêiner são servidores da Web que ficam à espera de solicitações HTTP em uma porta específica, o que significa que eles aderem ao contrato de ambiente de execução de contêiner do Cloud Run e podem ser implantados em um serviço do Cloud Run.
Para implantar um servidor MCP empacotado como uma imagem do contêiner, é necessário ter o URL da imagem do contêiner e a porta em que ele espera receber solicitações. Eles podem ser implantados usando o seguinte comando da CLI gcloud:
gcloud run deploy --image IMAGE_URL --port PORT
Substitua:
IMAGE_URLpelo URL da imagem de contêiner, por exemplo,us-docker.pkg.dev/cloudrun/container/mcp.PORTpela porta em que ele fica à espera, por exemplo,3000.
Depois de implantar o servidor MCP HTTP no Cloud Run, o servidor MCP recebe um URL HTTPS e a comunicação pode usar o suporte integrado do Cloud Run para streaming de respostas HTTP.
Autenticar clientes do MCP para agentes de IA
Dependendo de onde você hospedou o cliente do MCP, consulte a seção relevante para você:
Autenticar clientes locais do MCP
Se o agente de IA que hospeda o cliente do MCP for executado em uma máquina local, use um dos seguintes métodos para autenticar o cliente do MCP:
Para mais informações, consulte a especificação do MCP sobre autenticação.
Permissão de invocador do IAM
Por padrão, o URL dos serviços do Cloud Run exige que todas as solicitações
sejam autorizadas com o
papel do IAM de invocador do Cloud Run
(roles/run.invoker). Essa vinculação de política do IAM garante que um mecanismo de segurança forte seja usado para autenticar o cliente local do MCP.
Depois de implantar o servidor MCP em um serviço do Cloud Run em uma região, execute o proxy do Cloud Run na máquina local para expor com segurança o servidor MCP remoto ao cliente usando suas próprias credenciais:
gcloud run services proxy MCP_SERVER_NAME --region REGION --port=3000
Substitua:
- MCP_SERVER_NAME pelo nome do seu serviço do Cloud Run.
- REGION pela Cloud de Confiance by S3NS
região em que você implantou o serviço. Por exemplo,
europe-west1.
O comando de proxy do Cloud Run cria um proxy local na porta 3000 que encaminha solicitações para o servidor MCP remoto e injeta sua identidade.
Atualize o arquivo de configuração do MCP do cliente do MCP com o seguinte:
{
"mcpServers": {
"cloud-run": {
"url": "http://localhost:3000/sse"
}
}
}
Se o cliente do MCP não oferecer suporte ao url atributo, use o
mcp-remote pacote npm:
{
"mcpServers": {
"cloud-run": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:3000/sse"
]
}
}
}
Token de ID do OIDC
Dependendo se o cliente do MCP expõe cabeçalhos ou usa uma maneira de fornecer um transporte autenticado personalizado, você pode autenticar o cliente do MCP com um token de ID do OIDC.
É possível usar várias bibliotecas de autenticação do Google para receber um token de ID do
ambiente de execução, por exemplo, a
Biblioteca de autenticação do Google para Python.
Esse token precisa ter a declaração de público-alvo correta que corresponda ao URL *.s3nsrun.fr do serviço de recebimento, a menos que você use
públicos-alvo personalizados. Você também precisa
incluir o token de ID em solicitações de cliente, como
Authorization: Bearer <token value>.
Se o cliente do MCP não expuser cabeçalhos ou transporte, use um método de autenticação diferente.
Autenticar clientes locais do MCP com o IAP
Esta seção descreve como autenticar clientes locais do MCP que estão em execução no Cloud Run.
Para criar a política de entrada, faça o seguinte:
Conceda o papel de invocador do Cloud Run (
roles/run.invoker) ao agente de serviço do IAP.gcloud run services add-iam-policy-binding SERVICE_NAME \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-iap.s3ns-system.iam.gserviceaccount.com' \ --role='roles/run.invoker'Substitua o seguinte:
SERVICE_NAME: o nome do serviço ao qual adicionar a vinculação de políticaPROJECT_NUMBER: o número do projeto que contém o serviço
Ative o IAP no serviço do Cloud Run.
Criar
Para ativar a autenticação do IAP para um novo serviço, execute o seguinte comando:
gcloud run deploy SERVICE_NAME --image=MCP_SERVER_IMAGE --functional-type=MCP_SERVER \ --region=REGION \ --iap
Substitua o seguinte:
SERVICE_NAME: o nome do serviço ao qual adicionar a vinculação de políticaMCP_SERVER_IMAGE: o caminho da imagem do servidor MCPREGION: a Cloud de Confiance região em que você quer implantar o serviço, por exemplo,europe-west1
Atualizar
Para ativar a autenticação do IAP para um serviço atual, execute o seguinte comando:
gcloud run services update SERVICE_NAME \ --region=REGION \ --functional-type=MCP_SERVER \ --iap
Substitua o seguinte:
SERVICE_NAME: o nome do serviço a ser atualizadoREGION: a Cloud de Confiance by S3NS região em que você implantou o serviço, por exemplo,europe-west1
Autenticar clientes do MCP em execução no Cloud Run
Se o agente de IA que hospeda o cliente do MCP for executado no Cloud Run, use um dos seguintes métodos para autenticar o cliente do MCP:
Implantar o servidor MCP como um arquivo secundário
O servidor MCP pode ser implantado como um arquivo secundário em que o cliente do MCP é executado.
Nenhuma autenticação específica é necessária para esse caso de uso, já que o cliente e o servidor MCP estão na mesma instância. O cliente pode se conectar ao servidor do MCP
usando uma porta em http://localhost:PORT. Substitua
PORT por uma porta diferente da usada para enviar
solicitações ao serviço do Cloud Run.
Autenticar serviço para serviço
Se o servidor MCP e o cliente MCP forem executados como serviços distintos do Cloud Run, consulte Autenticação de serviço para serviço.
A seguir
- Hospedar agentes de IA no Cloud Run.
- Siga um tutorial para criar e implantar um servidor MCP remoto no Cloud Run.
- Siga estes codelabs do MCP: