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.
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.
-
Make sure 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.
-
Make sure that billing is enabled for your Google Cloud project.
- 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 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.
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
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
: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
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.
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
Saiba mais sobre como implantar aplicativos de IA no Cloud Run.
Saiba mais sobre hospedar servidores MCP no Cloud Run.
Saiba como usar um servidor MCP para implantar código no Cloud Run.
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
.
Criar um servidor MCP para operações matemáticas
Para fornecer um contexto valioso e 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.
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.
Origem
É possível implantar servidores MCP remotos no Cloud Run das fontes 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 do MCP
que se conectar ao seu servidor MCP remoto precisará se autenticar.
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: