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 projeção de uso deste tutorial, use 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. 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.enable
permission. 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, insira seu identificador de usuário. Normalmente, esse é o endereço de e-mail da Conta do Google usado para implantar o serviço do Cloud Run.
- Na lista Selecionar um 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 Google Cloud .
- PROJECT_ID: o ID do projeto do 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-cloudrun
para armazenar o código-fonte da implantação:mkdir mcp-on-cloudrun cd mcp-on-cloudrun
Crie um projeto em Python com a ferramenta
uv
para gerar um arquivopyproject.toml
:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10
O comando
uv init
cria 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.py
para o código-fonte do servidor MCPtest_server.py
para testar o servidor remoto- Um Dockerfile para implantação no Cloud Run
touch server.py test_server.py Dockerfile
O 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 e melhorar o uso de LLMs com MCP, configure um servidor MCP de matemática com 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.8.0 --no-sync
Adicione 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
uv
e 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 de 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_ID
Crie 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:latest
Implante 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 seu 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-central1
Se 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.py
e adicione o seguinte código:Em um novo terminal, execute o servidor de teste:
uv run test_server.py
Você 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 consoleGoogle Cloud .
Remova a configuração da região padrão do
gcloud
que você adicionou durante a configuração do tutorial:gcloud config unset run/region
Remova a configuração do projeto:
gcloud config unset project