DocFiller
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DocFillerfill the invoice template with customer details and generate PDF"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DocFiller - Sistema de Generación de PDFs desde Plantillas
Sistema modular para rellenar plantillas DOCX/ODT y generar PDFs usando Model Context Protocol (MCP) con diferentes backends (OpenAI, Ollama local).
📁 Estructura del Proyecto
mcp-server/
├── mcp-sse/ # Servidor MCP puro (SSE transport)
├── mcp-adaptado/ # Streamlit + OpenAI
├── mcp-adaptado-ollama/ # Streamlit + Ollama (modelos locales)
└── requirements.txt # Dependencias compartidasCada módulo contiene:
server.py- Servidor MCPclient.py- Cliente MCPapp.py- Interfaz Streamlit (en mcp-adaptado y mcp-adaptado-ollama)templates/- Plantillas DOCX/ODT con variables$campo$outputs/- PDFs generadosresources/- Guías y documentación
Related MCP server: docxtpl MCP Server
🚀 Requisitos Previos
Python 3.9+
LibreOffice (para conversión a PDF)
Windows:
choco install libreofficeo descargar desde https://www.libreoffice.org/macOS:
brew install libreofficeLinux:
sudo apt install libreoffice
Opcional (según el módulo)
OpenAI API key (para
mcp-adaptado)Ollama (para
mcp-adaptado-ollama) - https://ollama.ai/
📦 Instalación
1. Clonar el repositorio y crear entorno virtual
# Clonar o descargar el proyecto
cd mcp-server
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual
# En Windows:
venv\Scripts\activate
# En macOS/Linux:
source venv/bin/activate2. Instalar dependencias
pip install -r requirements.txt🎯 Uso por Módulo
opción 1: mcp-sse (Servidor MCP puro)
Servidor MCP que expone herramientas para rellenar plantillas y generar PDFs.
cd mcp-sse
# Ejecutar servidor
python server.pyEl servidor expone las siguientes herramientas:
listar_variables_plantilla(template_path)- Listar variables de una plantillavalidar_datos_plantilla(datos, template_path)- Validar datosgenerar_pdf_desde_plantilla(output_pdf_path, datos, template_path)- Generar PDF
Ejemplo con cliente MCP:
from client import DocFillerClient
client = DocFillerClient("http://localhost:8000")
# Listar variables
variables = client.listar_variables_plantilla()
# Generar PDF
result = client.generar_pdf_desde_plantilla(
output_pdf_path="resultado.pdf",
datos={"nombre": "Juan", "fecha": "2026-06-17"}
)Opción 2: mcp-adaptado (Streamlit + OpenAI)
Interfaz web completa con OpenAI como LLM.
Configuración
cd mcp-adaptado
# Crear archivo .env
cat > .env << EOF
OPENAI_API_KEY=sk-your-key-here
EOFEjecución
streamlit run app.pyAbre http://localhost:8501 en tu navegador.
Opción 3: mcp-adaptado-ollama (Streamlit + Ollama)
Interfaz web con modelos locales vía Ollama (privacidad total, sin APIs externas).
Configuración
Instalar Ollama:
Descargar desde https://ollama.ai/
Ejecutar:
ollama pull mistral(o tu modelo preferido)
Verificar que Ollama está corriendo:
ollama serve(En otra terminal)
Ejecución
cd mcp-adaptado-ollama
# Crear archivo .env (opcional)
cat > .env << EOF
OLLAMA_API_URL=http://localhost:11434
EOF
# Ejecutar app
streamlit run app.pyAbre http://localhost:8501 en tu navegador.
📋 Crear Plantillas
Las plantillas usan la sintaxis $VARIABLE$ para campos reemplazables.
Ejemplo DOCX
Nombre: $nombre$
Fecha: $fecha$
Total: $total$Pasos
Abre Word o LibreOffice
Crea un documento con variables en formato
$campo_nombre$Guarda como
.docxo.odten[modulo]/templates/La herramienta detectará automáticamente las variables
Importante: Los nombres de variables deben ser:
Alfanuméricos y guiones bajos:
[A-Za-z0-9_]Sin espacios ni caracteres especiales
Máximo 200 variables por plantilla
🔧 Configuración Avanzada
Variables de entorno
Crear .env en el directorio del módulo:
# Para mcp-adaptado
OPENAI_API_KEY=sk-...
OPENAI_MODEL=gpt-4o-mini # o tu modelo preferido
# Para mcp-adaptado-ollama
OLLAMA_API_URL=http://localhost:11434
OLLAMA_MODEL=mistral # o tu modelo
# Global
DEBUG=trueLímites configurables
En server.py:
MAX_TEMPLATE_MB- Tamaño máximo de plantilla (default: 20 MB)MAX_VARIABLES- Máximo de variables por plantilla (default: 200)LIBREOFFICE_TIMEOUT- Timeout de conversión (default: 60s)
🐛 Solución de Problemas
"LibreOffice no encontrado"
# Windows
choco install libreoffice
# macOS
brew install libreoffice
# Linux (Debian/Ubuntu)
sudo apt install libreofficeError de conversión a PDF
LibreOffice superó el límite de 60sAumentar
LIBREOFFICE_TIMEOUTenserver.pyVerificar que LibreOffice no tiene otras instancias corriendo
Ollama no responde
# Verificar que está corriendo
ollama serve
# Descargar modelo si falta
ollama pull mistralPort 8501 ya en uso (Streamlit)
streamlit run app.py --server.port 8502📚 API Reference
Herramientas MCP
listar_variables_plantilla(template_path="")
Analiza una plantilla y devuelve sus variables.
Respuesta:
{
"estado": "exito",
"plantilla": "/ruta/a/plantilla.docx",
"formato": ".docx",
"variables": ["nombre", "fecha", "total"],
"total": 3
}validar_datos_plantilla(datos, template_path="")
Valida que los datos cubran todas las variables.
Respuesta:
{
"estado": "exito",
"valido": true,
"variables_requeridas": ["nombre", "fecha"],
"faltantes": [],
"sobrantes": ["extra"],
"valores_vacios": []
}generar_pdf_desde_plantilla(output_pdf_path, datos, template_path="")
Rellena la plantilla y genera un PDF.
Respuesta:
{
"estado": "exito",
"pdf": "/ruta/a/outputs/resultado.pdf",
"motor_conversion": "libreoffice",
"variables_sin_reemplazar": []
}📄 Recursos
📝 Licencia
MIT - Libre para uso personal y comercial.
🤝 Soporte
Para issues o consultas, contactar al equipo de desarrollo.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adriangonzalezIABD/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server