Neste tutorial, mostramos como criar e implantar um servidor remoto do Model Context Protocol (MCP) no Cloud Run usando o transporte HTTP transmitível. Com o transporte HTTP de streaming, o servidor MCP opera como um processo independente que pode processar várias conexões de clientes.
Objetivos
Com este tutorial, você vai:
Custos
Neste documento, você vai usar os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na sua projeção de uso, utilize a calculadora de preços.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud 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 Google Cloud project.
-
Enable the Artifact Registry, Cloud Run Admin API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - Configure o ambiente de desenvolvimento do Cloud Run no seu projeto do Google Cloud .
- Verifique se você tem as permissões adequadas para implantar serviços e se os papéis Administrador do Cloud Run (
roles/run.admin) e Usuário da conta de serviço (roles/iam.serviceAccountUser) foram concedidos à sua conta. - Conceda o papel Invocador do Cloud Run (
roles/run.invoker) à sua conta. Essa função permite que o servidor MCP remoto acesse o serviço do Cloud Run. -
No console do Google Cloud , acesse a página IAM.
Acessar o 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 adicional.
- Clique em Salvar.
- PROJECT_NUMBER: o número do projeto do Google Cloud .
- PROJECT_ID: o ID do projeto Google Cloud .
- PRINCIPAL: o endereço de e-mail da conta a que você está concedendo o papel.
- ROLE: o papel que você está adicionando à conta do implantador.
Se você precisa seguir uma política da organização de restrição de domínio que restringe invocações não autenticadas para seu projeto, será necessário acessar o serviço implantado, conforme descrito em Como testar serviços particulares.
- Instale o Uv, um gerenciador de projetos e pacotes do Python.
Saiba como conceder os papéis
Console
gcloud
Para conceder os papéis do IAM necessários à sua conta no projeto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=ROLE
Substitua:
Preparar seu projeto Python
As etapas a seguir descrevem como configurar seu projeto Python com o gerenciador de pacotes uv.
Crie uma pasta chamada
mcp-on-cloudrunpara armazenar o código-fonte da implantação:mkdir mcp-on-cloudrun cd mcp-on-cloudrunCrie um projeto em Python com a ferramenta
uvpara gerar um arquivopyproject.toml:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10O comando
uv initcria o seguinte arquivopyproject.toml:[project] name = "mcp-server" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" readme = "README.md" requires-python = ">=3.10" dependencies = []Crie os seguintes arquivos adicionais:
server.pypara o código-fonte do servidor MCPtest_server.pypara testar o servidor remoto- Um Dockerfile para implantação no Cloud Run
touch server.py test_server.py DockerfileO diretório do projeto precisa ter a seguinte estrutura:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Criar um servidor MCP para operações matemáticas
Para fornecer um contexto valioso para melhorar o uso de LLMs com o MCP, configure um servidor MCP de matemática com o FastMCP. O FastMCP oferece uma maneira rápida de criar servidores e clientes MCP com Python.
Siga estas etapas para criar um servidor MCP para operações matemáticas, como adição e subtração.
Execute o comando a seguir para adicionar o FastMCP como uma dependência no arquivo
pyproject.toml:uv add fastmcp==2.13.1 --no-syncAdicione o seguinte código-fonte do servidor MCP de matemática ao arquivo
server.py:Inclua o código a seguir no Dockerfile para usar a ferramenta
uve executar o arquivoserver.py:
Implantar no Cloud Run
É possível implantar o servidor MCP como uma imagem de contêiner ou como código-fonte:
Imagem do contêiner
Para implantar um servidor MCP empacotado como uma imagem de contêiner, siga estas instruções.
Crie um repositório do Artifact Registry para armazenar a imagem do contêiner:
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_IDCrie a imagem do contêiner e envie-a para o Artifact Registry com o Cloud Build:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latestImplante a imagem do contêiner do servidor MCP no Cloud Run:
gcloud run deploy mcp-server \ --image us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest \ --region=us-central1 \ --no-allow-unauthenticated
Origem
É possível implantar servidores MCP remotos no Cloud Run das origens deles.
Implante a partir da origem executando o seguinte comando:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Autenticar o cliente MCP
Se você implantou o serviço com a flag --no-allow-unauthenticated, qualquer cliente MCP
que se conectar ao servidor MCP remoto precisará se autenticar.
Conceda o papel Invocador do Cloud Run (
roles/run.invoker) à conta de serviço. Essa vinculação de política do Identity and Access Management garante que um mecanismo de segurança forte seja usado para autenticar seu cliente MCP local.Execute o proxy do Cloud Run para criar um túnel autenticado para o servidor MCP remoto na sua máquina local:
gcloud run services proxy mcp-server --region=us-central1Se o proxy do Cloud Run ainda não estiver instalado, esse comando vai pedir que você faça o download dele. Siga as instruções para fazer o download e instalar o proxy.
O Cloud Run autentica todo o tráfego para http://127.0.0.1:8080 e encaminha
solicitações para o servidor MCP remoto.
Testar o servidor MCP remoto
Teste e conecte-se ao servidor MCP remoto usando o cliente FastMCP e acessando o URL http://127.0.0.1:8080/mcp.
Para testar e invocar o mecanismo de adição e subtração, siga estas etapas:
Antes de executar o servidor de teste, execute o proxy do Cloud Run.
Crie um arquivo de teste chamado
test_server.pye adicione o seguinte código:Em um novo terminal, execute o servidor de teste:
uv run test_server.pyVocê verá esta resposta:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7
Limpar
Para evitar cobranças extras na sua conta do Google Cloud , exclua todos os recursos implantados com este tutorial.
Excluir o projeto
Se você criou um novo projeto para este tutorial, exclua-o. Se você usou um projeto atual e precisa mantê-lo sem as mudanças adicionadas neste tutorial, exclua os recursos criados para o tutorial.
O jeito mais fácil de evitar cobranças é excluindo o projeto que você criou para o tutorial.
Para excluir o projeto:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir recursos do tutorial
Exclua o serviço do Cloud Run que você implantou neste tutorial. Os serviços do Cloud Run não geram custos até receberem solicitações.
Para excluir o serviço do Cloud Run, execute o seguinte comando:
gcloud run services delete SERVICE-NAME
SERVICE-NAME pelo nome do serviço;
Também é possível excluir os serviços do Cloud Run no console doGoogle Cloud .
Remova a configuração da região padrão do
gcloudque você adicionou durante a configuração do tutorial:gcloud config unset run/regionRemova a configuração do projeto:
gcloud config unset project