Volver al blog

Síguenos y suscríbete

Construyendo un servidor MCP verdaderamente seguro con Fastly Compute

Kay Sawada

Arquitecto sénior de Enterprise sin servidores, Fastly

Todos sabemos que los LLMs pueden hacer cosas increíbles, pero desplegarlos en el mundo real puede significar encontrarse con problemas reales. Por ejemplo, MCP (Model Context Protocol) está recibiendo mucha atención ahora mismo por los escenarios increíblemente creativos que puede permitir. Pero las vulnerabilidades de seguridad que MCP puede exponer deberían ser una auténtica pesadilla para cualquier organización, sin mencionar otras preocupaciones importantes, como escalar o gestionar un endpoint de MCP a lo largo del tiempo. Pero oye, buenas noticias: ¡seguridad, escalabilidad, resiliencia y capacidad de gestión es lo que hacemos! Así que vamos a mostrarte cómo usar Fastly Compute para crear un servidor MCP listo para el mundo real: seguro, escalable y fiable.

¿Qué es MCP?

El Protocolo de Contexto de Modelo (MCP) es un protocolo abierto diseñado para estandarizar cómo las aplicaciones proporcionan el contexto esencial a los Modelos de Lenguaje Grande (LLMs). MCP actúa como una interfaz universal, permitiendo que las aplicaciones de IA se conecten de manera fluida con diversas fuentes de datos.

MCP también ofrece la flexibilidad de cambiar entre proveedores de LLM y prioriza la seguridad de los datos dentro de tu infraestructura mediante una arquitectura cliente-servidor en la que las aplicaciones (Hosts MCP) se conectan a fuentes de datos (Fuentes de Datos Locales y Servicios Remotos) a través de servidores y clientes MCP ligeros. Este enfoque unificado ofrece integraciones preconstruidas, permitiendo a los desarrolladores utilizar rápidamente diversas fuentes de datos. 

Hablaremos de cómo crear un servidor MCP usando Fastly Compute, pero si te interesa acceder a la interfaz de programación de aplicaciones de la plataforma de Fastly a través de MCP, el paquete fastly-mcp-server puede ayudarte, y hablaremos más sobre eso en el futuro.

Por qué la plataforma de Fastly hace que MCP funcione mejor

Como arquitecto Enterprise sin servidores, a menudo me encuentro asesorando a clientes sobre el mejor enfoque para sus cargas de trabajo, específicamente si podrían obtener ventaja de la informática en el edge. Considero varios factores, como el nivel esperado de concurrencia y los posibles picos en la carga de trabajo, así como la necesidad de baja latencia en las aplicaciones orientadas al usuario. Y, como habrás adivinado, MCP, en el que profundizaremos más adelante en este artículo, es un muy buen ejemplo de una carga de trabajo que se beneficia significativamente del diseño único de la plataforma de Fastly y Fastly Compute. A continuación, se presenta una demostración del cliente MCP en acción.

Te darás cuenta de que el agente de LLM realiza varias llamadas simultáneas a herramientas de MCP, como "GetHistoricalStats" y "GetServiceDetail". Si fueras responsable de gestionar este servidor MCP, ¿cuánta carga estimarías y cómo provisionarías la infraestructura del servidor? Para un entorno relativamente nuevo como MCP, no es ideal tener una infraestructura masiva y compleja. Aunque serverless es conveniente para empezar en pequeño, naturalmente debes evitar problemas comunes como los arranques en frío (sin muchas complicaciones, por supuesto). Dada la posibilidad de picos, donde varios usuarios puedan llamar simultáneamente a las herramientas de MCP, es crucial elegir un entorno escalable. Además, dado que la comunicación a menudo ocurre a través del chat, es crucial mantener la latencia de respuesta lo más baja posible. 

Una ventaja notable de usar Fastly Compute para casos como este es que su tiempo de ejecución basado en WebAssembly utiliza la tecnología de sandbox de aislamiento, permitiendo una ejecución más segura del código tanto localmente como de forma remota. Esto significa que tu servidor MCP es más seguro ejecutándose en Fastly. Como hemos visto, el diseño de Fastly Compute aborda muchas de las debilidades arquitectónicas inherentes a MCP. En las siguientes secciones, te guiaré a través del proceso específico de desplegar un servidor MCP remoto usando esta plataforma.

Cómo crear un servidor MCP remoto con Fastly Compute

Comenzaremos desplegando un endpoint HTTP transmisible que no incluya endpoints SSE antiguos. Esto se puede lograr fácilmente siguiendo estos pasos. Ten en cuenta que necesitas reemplazar el token de API en dos lugares dentro del archivo main.go antes de publicar. (Para obtener información sobre cómo conseguir tu token de API, consulta este documento guía.)

$ git clone https://gist.github.com/d829a6a58ce359b1aa99ecae12ba79f1.git fastly-compute-mcp-server
$ cd fastly-compute-mcp-server
$ vi main.go # Replace __PUT_YOUR_FASTLY_API_TOKEN__ with your own TOKEN
$ fastly compute publish 
...
✓ Activating service (version 1)

Manage this service at:
	https://manage.fastly.com/configure/services/mMnYw4qeGq81xga89Mq8O0

View this service at:
	https://highly-proper-orange.edgecompute.app

Durante el proceso de publicación, te harán varias preguntas. Responde "sí" a cualquier pregunta de sí/no y, para todos los demás elementos, solo tienes que pulsar la tecla «Enter» para aceptar los valores predeterminados (vacíos). Al cabo de un rato, verás un mensaje que indica que tu servicio ya está disponible, como se muestra arriba. 

A continuación, vamos a usar el comando npx para lanzar la herramienta de verificación del inspector MCP y comprobar si vuestro servidor desplegado está funcionando correctamente. Una vez que el comando npx @modelcontextprotocol/inspector se complete con éxito, accede a http://127.0.0.1:6274 para abrir la interfaz oficial de prueba. Desde la barra lateral izquierda, selecciona «streamable http» como tipo de conexión e introduce la dirección del servicio (https://*.edgecompute.app) se muestra como resultado del comando de publicación.

Cuando veas "Connected" debajo del botón Conectar en la barra lateral izquierda, significa que la conexión fue exitosa. En el panel de control de la derecha, haz clic en la pestaña Herramientas y prueba acciones como Listar herramientas para comprobar la funcionalidad. Esto significa que has operado con éxito un servidor MCP remoto que se comunica utilizando HTTP-Streamable no SSE.

Adición de compatibilidad con clientes antiguos con SSE

A fecha de este escrito en mayo de 2025, muchos clientes de MCP todavía no admiten HTTP en streaming, y algunos servidores remotos solo ofrecen transporte SSE. Para asegurar la compatibilidad con versiones anteriores de estos clientes, llevaremos el servidor MCP que hemos creado un paso más allá añadiendo soporte para SSE. (Ten en cuenta que en este ejemplo, usaremos Fanout para establecer conexiones SSE. Este es un servicio de mensajería push de Fastly que requiere su propio registro. )

Primero, crea un nuevo servicio siguiendo los mismos pasos que antes. Sin embargo, esta vez al publicar, cread dos backends en la siguiente etapa de la pantalla. Para el primer backend, especifica la dirección de *.edgecompute.app en el campo Dominio y asígnale el nombre «self». Para el segundo backend, registra api.fastly.com con el nombre «fastly» como se muestra a continuación.

✓ Creating service

Domain: [put-your-favorite-name-here.edgecompute.app] 

Backend (hostname or IP address, or leave blank to stop adding backends): put-your-favorite-name-here.edgecompute.app
Backend port number: [443] 
Backend name: [backend_1] self

Backend (hostname or IP address, or leave blank to stop adding backends): api.fastly.com
Backend port number: [443] 
Backend name: [backend_2] fastly

Una vez que hayas publicado con éxito, ejecuta el comando que se muestra a continuación como un paso adicional para habilitar Fanout. Cuando veas la notificación de ÉXITO, tu configuración estará lista para usar.

$ fastly products --enable=fanout
SUCCESS: Successfully enabled product 'fanout'

Finalmente, configura tu cliente MCP (como Claude Desktop o Cursor) para verificar la funcionalidad. Para los clientes que admiten SSE de forma nativa, no hay muchas dificultades: solo tienes que seguir las instrucciones de configuración de la aplicación. En este caso, configuraremos LibreChat, un cliente MCP que solo admite STDIO, como ejemplo. (A continuación se muestra un ejemplo de configuración YAML para LibreChat, pero el método de ejecución del comando npx es consistente para cualquier cliente. No olvides utilizar la URL de tu servicio edgecompute.app cuando configures el comando "mcp-remote".

mcpServers:
  fastly-mcp-server:
    command: npx
    args:
      - -y
      - "mcp-remote"
      - https://highly-adequate-adder.edgecompute.app/sse
      - --transport
      - sse-only

A partir de mayo de 2025, el paquete mcp-remote usará por defecto conexiones HTTP transmisibles, a menos que uses la opción --transport sse-only. Para asegurar una conexión mediante SSE, necesitas incluir esta opción.

Cuando inicies LibreChat con esta configuración, verás una pantalla como la que se muestra a continuación. Esto completa la configuración.

Este ejemplo muestra una herramienta MCP que descarga el Varnish Configuration Language de un servicio Fastly VCL, pero puedes ampliarla fácilmente con características adicionales. Es importante tener en cuenta que la especificación de Fanout limita el tamaño del mensaje a unos 64 KB. Así que, cuando apoyes la SSE antigua, asegúrate de que los mensajes de resultado de las llamadas a la herramienta MCP no se vuelvan demasiado grandes.

Conclusión: ¿Qué sigue?

En este artículo, hemos presentado cómo el entorno de desarrollo flexible y eficiente de Fastly Compute simplifica el proceso de configurar rápidamente un servidor MCP de alto rendimiento. Como siguiente paso, planeo explorar la construcción de un servidor más avanzado basado en la especificación OAuth. ¡No os lo perdáis!

También nos encantaría saber cómo tu organización está aprovechando los LLM y la IA, y cómo estás abordando los desafíos asociados. Comparte tus pensamientos y únete a las discusiones de la comunidad. Agradecemos todo tipo de comentarios.