Cover Letter
Genera cartas de presentación profesionales en PDF usando LaTeX. Requiere Docker para ejecución local.
Documentación
Servidor MCP de Cover Letter
Un servidor de Model Context Protocol (MCP) que genera cartas de presentación profesionales en PDF usando LaTeX. Este servidor se integra perfectamente con Claude Desktop para crear cartas de presentación con un formato elegante, un diseño limpio y profesional, y capacidades avanzadas de gestión de carpetas.
Características
- 🎯 Diseño profesional: Diseño limpio y moderno que cumple con los estándares de currículums profesionales
- 📄 Generación de PDF: Salida PDF de alta calidad usando LaTeX
- 🔧 Integración con Claude Desktop: Funciona directamente dentro de la interfaz de Claude Desktop
- 📁 Gestión avanzada de carpetas: Crea carpetas personalizadas y organiza cartas de presentación por puesto, empresa o categoría
- 🗂️ Navegación de directorios: Lista y explora tu colección de cartas de presentación con el explorador de archivos integrado
- ⚡ Generación rápida: Entorno Dockerizado para un procesamiento consistente y rápido
- 🛡️ Sanitización de entrada: Escape automático de caracteres especiales para la seguridad de LaTeX
- 🔒 Rutas seguras: Sanitización de rutas integrada que previene problemas de seguridad
Requisitos previos
- Docker: Asegúrate de que Docker Desktop esté instalado y en ejecución
- Claude Desktop: Última versión con soporte MCP
- Git: Para clonar el repositorio
Inicio rápido
1. Clona el repositorio
git clone https://github.com/YOUR_USERNAME/cover-letter-mcp.git
cd cover-letter-mcp
2. Crea el directorio de descargas
mkdir downloads
3. Construye la imagen de Docker
docker build -t cover-letter-mcp .
4. Configura Claude Desktop
Añade la siguiente configuración a tu archivo de configuración de Claude Desktop:
Ubicación del archivo de configuración:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Configuración:
{
"mcpServers": {
"cover-letter-generator": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-v",
"/path/to/your/cover-letter-mcp/downloads:/downloads",
"cover-letter-mcp",
"python",
"server.py"
]
}
}
}
Reemplaza /path/to/your/cover-letter-mcp/downloads con tu ruta real:
- Windows:
"C:/Users/YourUsername/path/to/cover-letter-mcp/downloads:/downloads" - macOS/Linux:
"/Users/YourUsername/path/to/cover-letter-mcp/downloads:/downloads"
5. Reinicia Claude Desktop
Reinicia Claude Desktop para cargar la nueva configuración del servidor MCP.
Uso
Una vez configurado, puedes generar cartas de presentación directamente en Claude Desktop con funciones avanzadas de organización:
Ejemplo de uso
Generación básica de carta de presentación
Generate a cover letter for:
- Name: John Smith
- Company: Tech Innovations Inc
- Position: Software Engineer
- Body: I am writing to express my interest in the Software Engineer position at your company. With 5 years of experience in software development, I believe I would be a great fit for your team. My skills in JavaScript and Python align well with your requirements. I look forward to discussing this opportunity further.
Carta de presentación organizada con carpeta personalizada
Generate a cover letter for Jane Doe applying to Google for a Senior Developer position and save it in the "FAANG-applications/google" folder
Organización avanzada
Create a cover letter for the Product Manager role at Netflix. Save it in "streaming-companies/netflix" with filename "pm-application-2024"
Gestión de carpetas
Create a folder structure for organizing my job applications: "job-search-2024/tech-companies" and "job-search-2024/startups"
Show me what cover letters I have in my "tech-companies" folder
Funciones inteligentes de organización
- 🗂️ Creación automática de carpetas - Las carpetas se crean automáticamente al generar cartas de presentación
- 📁 Estructura de directorio personalizada - Organiza por empresa, tipo de puesto, industria o cualquier sistema que funcione para ti
- 🔍 Explorador de directorios - Lista el contenido de cualquier carpeta para ver tu colección de cartas de presentación
- 📊 Información de archivos - Consulta tamaños de archivo, fechas de creación y organiza por metadatos
- 🛡️ Seguridad de rutas - La sanitización integrada previene el recorrido de directorios y caracteres no válidos
Ejemplos de organización
Por empresa:
applications/google/applications/microsoft/applications/amazon/
Por tipo de puesto:
roles/software-engineer/roles/product-manager/roles/data-scientist/
Por industria:
industries/fintech/industries/healthcare/industries/gaming/
Por estado:
drafts/submitted/2024/archived/old-versions/
Opciones avanzadas
Nombre de archivo personalizado con organización:
Generate a cover letter with filename "tech_innovations_application" for John Smith applying to Tech Innovations Inc and save it in the "applications/tech-startups" folder
Organización de múltiples solicitudes:
I'm applying to several FAANG companies. Create cover letters for:
1. Google - Software Engineer role (save in "faang/google")
2. Meta - Frontend Developer role (save in "faang/meta")
3. Amazon - Backend Engineer role (save in "faang/amazon")
Referencia de API
Herramientas disponibles
generate_cover_letter
Genera una carta de presentación en PDF a partir de datos estructurados con organización de carpetas opcional.
Parámetros:
name(string): Nombre completo del solicitantecompany(string): Nombre de la empresaposition(string): Puesto al que se postulabody(string): Texto principal del cuerpo de la carta de presentaciónfilename(string, opcional): Nombre de archivo personalizado (sin extensión .pdf)folderPath(string, opcional): Ruta de carpeta personalizada dentro del directorio de descargas
Ejemplo:
{
"name": "John Smith",
"company": "Tech Corp",
"position": "Software Engineer",
"body": "I am writing to express my strong interest...",
"filename": "john-smith-tech-corp-application",
"folderPath": "job-applications/tech-companies/tech-corp"
}
create_folder
Crea una nueva carpeta dentro del directorio de descargas.
Parámetros:
folderPath(string): Ruta de carpeta a crear (admite carpetas anidadas)
Ejemplo:
{
"folderPath": "applications/2024/q1"
}
list_folders
Lista todas las carpetas y archivos en el directorio de descargas.
Parámetros:
path(string, opcional): Subdirectorio específico a listar
Ejemplo:
{
"path": "applications/tech-companies"
}
Estructura de archivos
cover-letter-mcp/
├── server.py # Main MCP server with folder management
├── Dockerfile # Docker container configuration
├── requirements.txt # Python dependencies
├── downloads/ # Generated PDFs organized in folders
│ ├── applications/
│ │ ├── google/
│ │ │ ├── john-smith-swe-2024.pdf
│ │ │ └── jane-doe-pm-2024.pdf
│ │ ├── microsoft/
│ │ └── startups/
│ ├── drafts/
│ └── templates/
└── README.md # This file
Detalles técnicos
Plantilla LaTeX
El servidor utiliza una plantilla LaTeX personalizada que crea:
- Encabezado limpio y centrado con el nombre del solicitante
- Espaciado y tipografía profesionales
- Inserción automática de la fecha
- Formato adecuado de carta comercial
- Salida PDF de alta calidad
Funciones de seguridad
- Sanitización de entrada: Toda la entrada del usuario se escapa correctamente para LaTeX
- Seguridad de nombres de archivo: Los nombres de archivo generados se sanitizan para prevenir el recorrido de rutas
- Seguridad de rutas: Las rutas de carpetas se sanitizan para prevenir ataques de recorrido de directorios
- Entorno aislado: El contenedor Docker proporciona una ejecución segura y aislada
- Filtrado de caracteres: Elimina o reemplaza caracteres no válidos del sistema de archivos
Protocolo MCP
Este servidor implementa la especificación del Model Context Protocol:
- Herramientas:
generate_cover_letter,create_folder,list_folders - Recursos: Lista y proporciona acceso a los PDF generados (incluyendo carpetas anidadas)
- Capacidades: Acceso completo de lectura/escritura para la generación de cartas de presentación y gestión de carpetas
Solución de problemas
Problemas comunes
"Comando Docker no encontrado"
- Asegúrate de que Docker Desktop esté instalado y en ejecución
- Verifica que Docker esté en el PATH de tu sistema
"Permiso denegado" en Windows
- Asegúrate de que Docker Desktop tenga acceso a tu unidad
- Intenta ejecutar PowerShell como Administrador
- Asegúrate de que la carpeta de descargas tenga permisos de escritura
"Contenedor no encontrado"
- Reconstruye la imagen de Docker:
docker build -t cover-letter-mcp . - Verifica que el nombre de la imagen coincida con tu configuración
"La compilación de LaTeX falló"
- Esto generalmente indica caracteres especiales en la entrada
- El servidor escapa automáticamente la mayoría de los caracteres, pero algunos formatos complejos pueden necesitar ajustes
"Errores de creación de carpetas"
- Verifica los permisos de escritura en el directorio de descargas
- Comprueba que las rutas de carpetas no contengan caracteres no válidos
- Asegúrate de que Docker tenga acceso al volumen montado
"Problemas relacionados con rutas"
- Las rutas de carpetas se sanitizan automáticamente por seguridad
- Los caracteres no válidos se reemplazan con guiones bajos
- Los intentos de recorrido de directorios (../) se bloquean automáticamente
Modo de depuración
Para ver registros detallados del servidor MCP, revisa la consola de desarrollador de Claude Desktop o ejecuta el contenedor Docker manualmente:
docker run --rm -i -v "./downloads:/downloads" cover-letter-mcp python server.py
Para depuración detallada:
docker run --rm -i -v "./downloads:/downloads" -e DEBUG=1 cover-letter-mcp python server.py
Desarrollo
Desarrollo local
Para desarrollo sin Docker:
-
Instala las dependencias de Python:
pip install -r requirements.txt -
Instala LaTeX (varía según el sistema):
# Ubuntu/Debian sudo apt-get install texlive-latex-base texlive-latex-recommended # macOS with Homebrew brew install --cask mactex # Windows # Download and install MiKTeX or TeX Live -
Ejecuta el servidor:
python server.py
Consideraciones de seguridad
- Validación de rutas: Todas las rutas de carpetas se validan y sanitizan
- Escape de entrada: Los caracteres especiales de LaTeX se escapan correctamente
- Aislamiento de contenedor: Docker proporciona aislamiento de procesos y del sistema de archivos
- Montaje de volúmenes: Solo el directorio de descargas es accesible para el contenedor
Contribuciones
- Haz un fork del repositorio
- Crea una rama de características:
git checkout -b feature-name - Realiza tus cambios
- Prueba exhaustivamente con varias estructuras de carpetas
- Envía una solicitud de extracción (pull request)
Licencia
Licencia MIT - consulta el archivo LICENSE para más detalles.
Soporte
Si encuentras problemas:
- Consulta la sección de solución de problemas
- Revisa la documentación de MCP de Claude Desktop
- Abre un issue en GitHub con:
- Tu sistema operativo
- Versión de Claude Desktop
- Versión de Docker
- Mensajes de error completos
- Pasos para reproducir
Registro de cambios
v2.0.0 - Actualización de gestión de carpetas
- ✨ NUEVO: Organización de carpetas personalizadas dentro del directorio de descargas
- ✨ NUEVO: Herramienta
create_folderpara crear estructuras de directorio organizadas - ✨ NUEVO: Herramienta
list_folderspara explorar y gestionar colecciones de cartas de presentación - ✨ NUEVO:
generate_cover_lettermejorado con el parámetrofolderPath - 🛡️ NUEVO: Sanitización de rutas y funciones de seguridad
- 📊 NUEVO: Visualización de metadatos de archivos (tamaño, fecha) en listados de directorios
- 🗂️ NUEVO: Creación automática de rutas de carpetas al generar cartas de presentación
- 📁 NUEVO: Soporte para estructuras de carpetas anidadas
- 🔍 NUEVO: Herramientas de navegación de directorios y organización de archivos
- 🔒 NUEVO: Seguridad mejorada con aislamiento de volúmenes Docker
v1.0.0
- Versión inicial
- Generación profesional de cartas de presentación en LaTeX
- Contenerización Docker
- Integración con Claude Desktop
- Salida PDF básica a la carpeta de descargas
Hecho con ❤️ para la comunidad de Claude Desktop y MCP