PDF Generator MCP Server
README.md
# MCP Server — PDF Generator
Servidor MCP custom (Databricks App) para **generar un documento PDF a partir de título/contenido y guardarlo en un volumen de Unity Catalog**.
## Tools expuestas
> Todas las tools de este servidor están **namespaced con el prefijo `pdf_generator_`** para evitar colisiones cuando un agente orquestador registra varios MCPs a la vez (ajuste reciente — antes se llamaban `health`, `get_current_user`, `generate_pdf_to_volume` sin prefijo, coincidiendo con los nombres de otros MCPs del mismo workspace).
| Tool (nombre MCP) | Función Python | Descripción |
| :--- | :--- | :--- |
| `pdf_generator_health` | `health()` | Health check del servidor. |
| `pdf_generator_get_current_user` | `get_current_user()` | Usuario autenticado que llama al MCP (auth de usuario). |
| `pdf_generator_generate_pdf_to_volume` | `generate_pdf_to_volume(title, content, ...)` | Genera el PDF en memoria (ReportLab, con fallback sin dependencias) y lo sube a un volumen de UC. |
## Modelo de autenticación
- `pdf_generator_get_current_user`: usa `get_user_authenticated_workspace_client()` (identidad del usuario que llama).
- `pdf_generator_generate_pdf_to_volume`: sube el PDF con `get_workspace_client()` (identidad de servicio de la app), porque escribir en el volumen se trata como una operación de sistema — ver comentario en `server/tools.py::_upload_pdf_to_volume`. El service principal de la app necesita permiso de escritura sobre el volumen destino.
## Destino del PDF
Se puede indicar de tres formas (en orden de precedencia), resueltas en `_normalize_volume_path`:
1. `volume_path`: ruta completa explícita (ej. `/Volumes/cat/sch/vol/archivo.pdf`).
2. `catalog` + `schema` + `volume` (los tres juntos): la ruta se compone automáticamente.
3. `target_volume` (o el default `PDF_TARGET_VOLUME` / `/Volumes/sbx_migration_development/default/test_target_pdf_mcp`): solo la carpeta, el nombre de archivo se genera con el título + timestamp si no se indica `filename`.
## Correr localmente
```bash
cd src/apps/mcp_pdf_generator
./scripts/dev/start_server.sh
# equivalente manual: uv sync && uv run pdf-generator-mcp
```
## Tests
```bash
cd src/apps/mcp_pdf_generator
uv run pytest
```
`tests/test_generate_pdf.py` mockea `server.tools.requests.put` y `server.tools.utils.get_workspace_client` — no hace llamadas reales al workspace.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues