mcp-server-docker-demo

jaimey/mcp-server-docker-demo

3.1

If you are the rightful owner of mcp-server-docker-demo and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This project demonstrates how to set up and deploy a FastMCP server for secure public internet access using Docker and Traefik.

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:

  1. Docker y Docker Compose instalados en tu servidor.
  2. Un nombre de dominio apuntando a la dirección IP pública de tu servidor.
  3. Una instancia de Traefik v2+ ya configurada y en ejecución.
  4. La red de Traefik debe ser una red externa a la que nuestros contenedores puedan conectarse (en este ejemplo, se llama traefik-net).
  5. Un certresolver de Let's Encrypt configurado en Traefik (en este ejemplo, se llama letsencryptresolver).

Uso

Sigue estos pasos para desplegar tu propio servidor.

1. Clonar el Repositorio

git clone <URL-del-repositorio>
cd mcp-server-docker-demo

2. 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

  1. Crea un archivo de configuración en tu proyecto local: .vscode/mcp.json.

  2. 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": []
    }