# 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