FastMCP Public Server Demo con Docker & Traefik
Este es un proyecto de demostración que muestra cómo configurar y desplegar un servidor FastMCP para que sea accesible públicamente en internet de forma segura.
Utiliza Docker para la contenedorización, uv como gestor de paquetes de Python, y Traefik como proxy inverso para gestionar el enrutamiento de dominios y la generación automática de certificados SSL/TLS con Let's Encrypt.
Descripción del Proyecto
El objetivo de este repositorio es servir como una plantilla o guía de inicio rápido para cualquier persona que desee exponer una API de herramientas creada con FastMCP. El proyecto incluye:
- Un servidor FastMCP simple con una herramienta de ejemplo (src/main.py). - Un Dockerfile optimizado con un build multi-etapa para crear una imagen ligera y eficiente. - Un archivo docker-compose.yml preconfigurado para integrarse con una instancia existente de Traefik. - Un ejemplo de configuración de cliente para la extensión MCP Client de Visual Studio Code (.vscode/mcp.json).
Prerrequisitos
Antes de empezar, asegúrate de tener lo siguiente:
- Docker y Docker Compose instalados en tu servidor.
- Un nombre de dominio apuntando a la dirección IP pública de tu servidor.
- Una instancia de Traefik v2+ ya configurada y en ejecución.
- La red de Traefik debe ser una red externa a la que nuestros contenedores puedan conectarse (en este ejemplo, se llama
traefik-net). - Un
certresolverde Let's Encrypt configurado en Traefik (en este ejemplo, se llamaletsencryptresolver).
Uso
Sigue estos pasos para desplegar tu propio servidor.
1\. Clonar el Repositorio
git clone
cd mcp-server-docker-demo2\. Configurar el Dominio
El paso más importante es decirle a Traefik qué dominio debe dirigir a nuestro servicio.
Abre el archivo docker-compose.yml y busca la siguiente línea:
- "traefik.http.routers.mcp-server-demo.rule=Host(`mcp-server-demo.yourdomain.com`)"Reemplaza mcp-server-demo.yourdomain.com con tu propio dominio o subdominio.
3\. Desplegar el Servidor
Una vez configurado tu dominio, levanta el servicio usando Docker Compose:
docker-compose up -d --build- --build: Fuerza la construcción de la imagen de Docker la primera vez. - -d: Ejecuta el contenedor en segundo plano (detached mode).
Docker construirá la imagen y lanzará el contenedor. Traefik detectará automáticamente el nuevo servicio a través de las etiquetas (labels) definidas en docker-compose.yml y configurará el enrutamiento y el SSL.
4\. Agregar a VS Code
- Crea un archivo de configuración en tu proyecto local:
.vscode/mcp.json.
- Añade la siguiente configuración, asegurándote de usar tu dominio:
{
"servers": {
"mcp-server-demo": {
"url": "https://mcp-server-demo.yourdomain.com/mcp/",
"type": "http"
}
},
"inputs": []
}