Skip to main content
Glama
joelGuerraArias

FGJ Multimedios MCP Server

README.md
# FGJ Multimedios MCP Server

Servidor MCP para envío automático de correos institucionales de FGJ Multimedios.

## Características

- ✅ Envío de correos institucionales vía SMTP (Gmail)
- ✅ Contexto personalizado para respuestas de IA
- ✅ Integración con FastMCP Cloud y desarrollo local
- ✅ Firma automática de Bélgica Jiménez (Gerente General)

## 🔑 Autenticación - IMPORTANTE

**FastMCP Cloud y desarrollo local manejan la autenticación de manera diferente:**

### FastMCP Cloud (Producción)
- ❌ **NO** uses `auth=verifier` en el servidor
- ❌ **NO** envíes headers `Authorization: Bearer` desde el cliente
- ✅ FastMCP Cloud maneja la autenticación automáticamente
- ✅ Usa `app.py` como punto de entrada (sin autenticación)

### Desarrollo Local
- ✅ Usa `auth=verifier` en el servidor (`server.py`)
- ✅ Envía `Authorization: Bearer {token}` desde el cliente
- ✅ Configura `MCP_TOKEN` en `.env`

## Despliegue en FastMCP Cloud

### Paso 1: Preparar el Repositorio

1. Asegúrate de que tu código esté en un repositorio de GitHub
2. Verifica que tengas estos archivos:
   - ✅ `app.py` - Punto de entrada para FastMCP Cloud (SIN autenticación)
   - ✅ `requirements.txt` - Dependencias completas
   - ✅ `server.py` - Servidor local con autenticación (para desarrollo)

### Paso 2: Crear Proyecto en FastMCP Cloud

1. Ve a [FastMCP Cloud](https://fastmcp.cloud) e inicia sesión con tu cuenta de GitHub
2. Haz clic en "New Project" o "Crear Proyecto"
3. Selecciona tu repositorio de GitHub
4. Configura el proyecto:
   - **Nombre del proyecto**: `fgj-multimedios-mcp` (o el que prefieras)
   - **Punto de entrada**: `app.py` ⚠️ **IMPORTANTE: Usar app.py, NO server.py**
   - **Rama**: `main` o tu rama de desarrollo

### Paso 3: Configurar Variables de Entorno

En la configuración del proyecto, añade **SOLO** estas variables:

```
EMAIL_USER=tu-correo@gmail.com
EMAIL_PASS=tu-app-password-de-gmail
```

**⚠️ IMPORTANTE:**
- `EMAIL_PASS` debe ser una **Contraseña de Aplicación** de Gmail (no tu contraseña normal)
- ❌ **NO** agregues `MCP_TOKEN` en FastMCP Cloud - no es necesario
- ✅ FastMCP Cloud maneja la autenticación automáticamente

### Paso 4: Desplegar

1. Haz clic en "Deploy" o "Desplegar"
2. FastMCP Cloud construirá y desplegará tu servidor
3. Una vez completado, recibirás una URL como:
   ```
   https://tu-proyecto.fastmcp.app/api/mcp
   ```

### Paso 5: Actualizar Cliente

Actualiza tu `client.py` para usar la URL de FastMCP Cloud:

```python
client = MultiServerMCPClient(
    {
        "fgj-server": {
            "transport": "streamable_http",
            "url": "https://tu-proyecto.fastmcp.app/api/mcp",  # ← Cambia esto
            "headers": {
                "Authorization": f"Bearer {os.getenv('MCP_TOKEN')}"
            }
        }
    }
)
```

## Variables de Entorno Requeridas

| Variable | Descripción | Ejemplo |
|----------|-------------|---------|
| `EMAIL_USER` | Correo de Gmail para envío | `menymedia@gmail.com` |
| `EMAIL_PASS` | Contraseña de aplicación Gmail | `icph zmog qhlc nocx` |
| `MCP_TOKEN` | Token secreto para autenticación | `my-secret-token` |

## Uso Local

```bash
# Instalar dependencias
pip install -r requirements.txt

# Configurar variables de entorno
cp .env.example .env
# Edita .env con tus credenciales

# Ejecutar servidor
python server.py
```

El servidor estará disponible en `http://localhost:8000/api/mcp`

## Herramientas Disponibles

- `send_email`: Envía correos institucionales
- `email_context`: Prompt con contexto de FGJ Multimedios

## Solución de Problemas

### Error de Autenticación en FastMCP Cloud

Si recibes errores `401 Unauthorized` o problemas de autenticación:

1. **Verifica que usas `app.py` como punto de entrada** en FastMCP Cloud
   - `app.py` NO tiene autenticación (correcto para FastMCP Cloud)
   - `server.py` tiene autenticación (solo para desarrollo local)

2. **Verifica las variables de entorno en FastMCP Cloud:**
   ```bash
   EMAIL_USER=tu-correo@gmail.com
   EMAIL_PASS=app-password-de-gmail
   ```
   ❌ NO agregues `MCP_TOKEN` en FastMCP Cloud

3. **Ejecuta el test de conexión:**
   ```bash
   python test_fastmcp.py
   ```

4. **Revisa los logs en FastMCP Cloud Dashboard**
   - Busca errores de SMTP o autenticación
   - Verifica que el servidor esté "running"

### Error de Autenticación en Local

Si tienes problemas en desarrollo local:

1. **Verifica tu archivo `.env`:**
   ```bash
   EMAIL_USER=tu-correo@gmail.com
   EMAIL_PASS=app-password-de-gmail
   MCP_TOKEN=tu-token-secreto
   ```

2. **Inicia el servidor con autenticación:**
   ```bash
   python server.py
   ```

3. **Verifica que el cliente use localhost:**
   ```bash
   export MCP_URL=http://localhost:8000/api
   python client.py
   ```

### Archivos del Proyecto

- `app.py` → Para FastMCP Cloud (sin autenticación)
- `server.py` → Para desarrollo local (con autenticación)
- `server_cloud.py` → **DEPRECADO** (usar `app.py`)
- `client.py` → Cliente que detecta automáticamente el modo
- `test_fastmcp.py` → Prueba de conexión

## Notas

- Cada push a la rama `main` redeployará automáticamente el servidor
- Los logs están disponibles en el dashboard de FastMCP Cloud
- El servidor se reinicia automáticamente si hay errores
- El cliente detecta automáticamente si conecta a FastMCP Cloud o localhost