En este instructivo, se muestra cómo compilar e implementar un servidor remoto del Protocolo de contexto del modelo (MCP) en Cloud Run con el transporte HTTP transmitible. Con el transporte HTTP transmitible, el servidor de MCP funciona como un proceso independiente que puede controlar varias conexiones de clientes.
Prepara tu proyecto de Python
En los siguientes pasos, se describe cómo configurar tu proyecto de Python con el administrador de paquetes uv
.
Crea una carpeta llamada
mcp-on-cloudrun
para almacenar el código fuente de la implementación:mkdir mcp-on-cloudrun cd mcp-on-cloudrun
Crea un proyecto de Python con la herramienta
uv
para generar un archivopyproject.toml
:uv init --name "mcp-on-cloudrun" --description "Example of deploying an MCP server on Cloud Run" --bare --python 3.10
El comando
uv init
crea el siguiente archivopyproject.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 = []
Crea los siguientes archivos nuevos adicionales:
server.py
para el código fuente del servidor de MCPtest_server.py
para probar el servidor remoto- Un Dockerfile para la implementación en Cloud Run
touch server.py test_server.py Dockerfile
El directorio de tu proyecto debe contener la siguiente estructura:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Crea un servidor de MCP para operaciones matemáticas
Para proporcionar contexto valioso para mejorar el uso de LLM con MCP, configura un servidor de MCP de matemáticas con FastMCP. FastMCP proporciona una forma rápida de compilar servidores y clientes de MCP con Python.
Sigue estos pasos para crear un servidor de MCP para operaciones matemáticas, como sumas y restas.
Ejecuta el siguiente comando para agregar FastMCP como dependencia en el archivo
pyproject.toml
:uv add fastmcp==2.8.0 --no-sync
Agrega el siguiente código fuente del servidor de MCP de matemáticas en el archivo
server.py
:Incluye el siguiente código en el Dockerfile para usar la herramienta
uv
y ejecutar el archivoserver.py
:
Implementa en Cloud Run
Puedes implementar el servidor de MCP como una imagen de contenedor o como código fuente:
Imagen de contenedor
Para implementar un servidor de MCP empaquetado como una imagen de contenedor, sigue estas instrucciones.
Crea un repositorio de Artifact Registry para almacenar la imagen de contenedor:
gcloud artifacts repositories create remote-mcp-servers \ --repository-format=docker \ --location=us-central1 \ --description="Repository for remote MCP servers" \ --project=PROJECT_ID
Compila la imagen de contenedor y envíala a Artifact Registry con Cloud Build:
gcloud builds submit --region=us-central1 --tag us-central1-docker.pkg.dev/PROJECT_ID/remote-mcp-servers/mcp-server:latest
Implementa la imagen de contenedor del servidor de MCP en 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
Fuente
Puedes implementar servidores de MCP remotos en Cloud Run desde sus fuentes.
Para realizar la implementación desde la fuente, ejecuta el siguiente comando:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Autentica el cliente de MCP
Si implementaste tu servicio con la marca --no-allow-unauthenticated
, cualquier cliente de MCP que se conecte a tu servidor de MCP remoto deberá autenticarse.
Otorga el rol de invocador de Cloud Run (
roles/run.invoker
) a la cuenta de servicio. Esta vinculación de política de Identity and Access Management garantiza que se use un mecanismo de seguridad sólido para autenticar tu cliente de MCP local.Ejecuta el proxy de Cloud Run para crear un túnel autenticado al servidor de MCP remoto en tu máquina local:
gcloud run services proxy mcp-server --region=us-central1
Si el proxy de Cloud Run aún no está instalado, este comando te solicitará que lo descargues. Sigue las instrucciones para descargar e instalar el proxy.
Cloud Run autentica todo el tráfico a http://127.0.0.1:8080
y reenvía las solicitudes al servidor de MCP remoto.
Prueba el servidor de MCP remoto
Probarás y te conectarás al servidor de MCP remoto con el cliente de FastMCP y accederás a la URL http://127.0.0.1:8080/mcp
.
Para probar e invocar el mecanismo de suma y resta, sigue estos pasos:
Antes de ejecutar el servidor de prueba, ejecuta el proxy de Cloud Run.
Crea un archivo de prueba llamado
test_server.py
y agrega el siguiente código:En una terminal nueva, ejecuta el servidor de prueba:
uv run test_server.py
Deberías ver el siguiente resultado:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7