En este tutorial se muestra cómo crear y desplegar un servidor de Model Context Protocol (MCP) remoto en Cloud Run mediante el transporte HTTP de flujo. Con el transporte HTTP de streaming, el servidor de MCP funciona como un proceso independiente que puede gestionar varias conexiones de clientes.
Preparar un proyecto de Python
En los siguientes pasos se describe cómo configurar tu proyecto de Python con el gestor 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 adicionales:
server.py
para el código fuente del servidor MCPtest_server.py
para probar el servidor remoto- Un archivo Dockerfile para desplegar en Cloud Run
touch server.py test_server.py Dockerfile
El directorio de tu proyecto debe tener la siguiente estructura:
├── mcp-on-cloudrun │ ├── pyproject.toml │ ├── server.py │ ├── test_server.py │ └── Dockerfile
Crear un servidor de MCP para operaciones matemáticas
Para proporcionar un contexto valioso que permita mejorar el uso de los LLMs con MCP, configura un servidor de MCP matemático con FastMCP. FastMCP ofrece una forma rápida de crear servidores y clientes de MCP con Python.
Sigue estos pasos para crear un servidor MCP para operaciones matemáticas, como sumas y restas.
Ejecuta el siguiente comando para añadir FastMCP como dependencia en el archivo
pyproject.toml
:uv add fastmcp==2.8.0 --no-sync
Añade el siguiente código fuente del servidor MCP matemático al archivo
server.py
:Incluye el siguiente código en el archivo Dockerfile para usar la herramienta
uv
y ejecutar el archivoserver.py
:
Desplegar en Cloud Run
Puedes desplegar el servidor de MCP como una imagen de contenedor o como código fuente:
Imagen de contenedor
Para desplegar un servidor de MCP empaquetado como 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
Crea 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
Despliega la imagen del 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 desplegar servidores de MCP remotos en Cloud Run desde sus fuentes.
Para desplegar desde el código fuente, ejecuta el siguiente comando:
gcloud run deploy mcp-server --no-allow-unauthenticated --region=us-central1 --source .
Autenticar el cliente de MCP
Si has implementado tu servicio con la marca --no-allow-unauthenticated
, cualquier cliente de MCP que se conecte a tu servidor MCP remoto debe autenticarse.
Asigna el rol Invocador de Cloud Run (
roles/run.invoker
) a la cuenta de servicio. Este enlace de política de gestión de identidades y accesos asegura que se utilice un mecanismo de seguridad sólido para autenticar tu cliente 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 pedirá que lo descargues. Sigue las indicaciones 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.
Probar el servidor MCP remoto
Para probar el servidor MCP remoto y conectarte a él, usa el cliente FastMCP y accede 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 añade el siguiente código:En un nuevo terminal, ejecuta el servidor de prueba:
uv run test_server.py
Deberías ver este resultado:
🛠️ Tool found: add 🛠️ Tool found: subtract 🪛 Calling add tool for 1 + 2 ✅ Result: 3 🪛 Calling subtract tool for 10 - 3 ✅ Result: 7