ResumeTailor

ResumeTailor

An MCP server that enables users to automatically tailor LibreOffice resumes by updating specific sections based on job descriptions via the UNO API. It allows Claude to modify skills, projects, and work experience in .odt templates to generate customized resume files.

Category
访问服务器

README

ResumeTailor

A toolkit for automatically tailoring your resume to specific job applications using LibreOffice. The system allows you to maintain a single resume template and quickly generate customized versions for different job applications.

Features

  • Update specific sections of your resume (skills, projects, work experience) for targeted job applications
  • Maintain a master template with all your achievements and experiences
  • Create new tailored resume files without modifying your original template
  • Use with Claude AI to automatically generate tailored content based on job descriptions
  • Command-line tools for direct customization
  • Containerized deployment for consistent execution across macOS and Linux

Prerequisites

  • LibreOffice installed (tested with LibreOffice Writer)
  • Python 3.10+ with venv support
  • libreoffice-script-provider-python system package installed
  • A properly formatted .odt resume with bookmarks
  • For containerized deployment: Docker and Docker Compose

Setup

  1. Clone the repository

    git clone https://github.com/yourusername/ResumeTailor.git
    cd ResumeTailor
    
  2. Create and activate a virtual environment

    python -m venv .venv
    source .venv/bin/activate  # Linux/Mac
    
  3. Install dependencies

    pip install -r requirements.txt
    
  4. Set up the UNO environment

    • Create symbolic links to the system's UNO modules:
    ln -s /usr/lib/python3/dist-packages/uno.py .venv/lib/python3.*/site-packages/uno.py
    ln -s /usr/lib/python3/dist-packages/unohelper.py .venv/lib/python3.*/site-packages/unohelper.py
    
    • Replace python3.* with your actual Python version (e.g., python3.12)
  5. Prepare your resume template

    • Open your resume in LibreOffice Writer
    • Follow the instructions in setup_resume_bookmarks.md to add bookmarks

Usage

Method 1: Direct Python Script Usage

  1. Start LibreOffice in headless mode

    soffice --accept="socket,host=localhost,port=2002;urp;" --headless --norestore --nologo --nodefault &
    
  2. Run one of the test scripts

    # Update just the skills section
    ./test_skill_update.py
    
    # Update a project description
    ./test_canova_update.py
    ./test_project_update.py
    
    # Update multiple sections for a specific job
    ./tailor_for_job.py
    
  3. Check the output

    • The scripts create new .odt files with names like Adityak_For_TechCompany_DataScientist_20250401.odt
    • Open these files in LibreOffice Writer to see the changes

Method 2: Using with Claude AI (MCP)

  1. Start the resume editor service

    ./start_resume_editor_service.sh
    

    This script starts LibreOffice in headless mode and runs the MCP server.

  2. Configure Claude Desktop

    • Make sure you have Claude Desktop installed
    • Create or edit claude_desktop_config.json in your home directory:
    {
      "mcpServers": {
        "libreOfficeResumeEditor": {
          "command": "/home/adi235/ResumeTailor/.venv/bin/python",
          "args": [
            "resume_editor_server.py"
          ],
          "cwd": "/home/adi235/ResumeTailor"
        }
      }
    }
    
    • Adjust paths as needed for your setup
  3. Restart Claude Desktop

    • Close and reopen Claude Desktop to load the new configuration
  4. Ask Claude to update your resume

    • Example prompts:
      • "What sections of my resume can you update?"
      • "Update my Skills section to focus on machine learning and Python for this data science role."
      • "Tailor my Project1 (Cannabis app) description to highlight the technical aspects for a Senior Developer position."

See CLAUDE_MCP_USAGE.md for more detailed instructions on using with Claude.

Method 3: Containerized Deployment (Cross-Platform)

The containerized deployment provides consistent execution across macOS and Linux systems without the need to install LibreOffice or UNO libraries on the host system. The container includes both the Resume Editor service and the JD Keyword Extractor service.

  1. Ensure Docker and Docker Compose are installed

    • Install Docker
    • Docker Compose typically comes with Docker Desktop (macOS/Windows) or can be installed separately on Linux
  2. Run the containerized application

    ./run_container.sh
    

    This script will:

    • Build the Docker image if it doesn't exist
    • Start the container in the background
    • Start both the Resume Editor (port 5001) and JD Keyword Extractor (port 5002) services
    • Map the ports to the host system
    • Create an Output directory on your host that maps to the container's output directory
  3. Accessing the services

    • Resume Editor service: http://localhost:5001
    • JD Keyword Extractor service: http://localhost:5002
    • Generated resume files will appear in the ./Output directory
  4. Managing the container

    # View container logs
    docker logs resume-tailor
    
    # Stop the container
    docker-compose down
    
    # Restart the container
    docker-compose restart resume-tailor
    
  5. Configure Claude Desktop for containerized use

    • Use the provided claude_desktop_config_docker.json file:
    # For macOS (adjust path as needed)
    cp claude_desktop_config_docker.json ~/claude_desktop_config.json
    
    # For Linux (adjust path as needed)
    cp claude_desktop_config_docker.json ~/.claude_desktop_config.json
    
    • This configuration points Claude Desktop to both services running in the container:
    {
      "mcpServers": {
        "LibreOfficeResumeEditor": {
          "url": "http://localhost:5001"
        },
        "JDKeywordExtractor": {
          "url": "http://localhost:5002"
        }
      }
    }
    
    • Restart Claude Desktop to apply the changes
  6. How the services work together

    • The JD Keyword Extractor service analyzes job descriptions to extract key requirements and skills
    • The Resume Editor service then uses this information to tailor your resume specifically for the job
    • Claude can leverage both services to automate your job application process

Available Resume Sections

When asking Claude to update your resume, use these section names:

  • Skills: Technical skills section
  • Summary: Professional summary
  • Project1: Cannabis Tracking app (Canova)
  • Project2: RAG-Based-Brainstorming-Archive
  • Project3: Ethereum AI Agent
  • WorkExp1: IMPROSYS work experience

Troubleshooting

LibreOffice Connection Issues

  • Make sure LibreOffice is running in headless mode:
    nc -z localhost 2002 || soffice --accept="socket,host=localhost,port=2002;urp;" --headless --norestore --nologo --nodefault &
    

UNO Module Errors

  • If you get ModuleNotFoundError: No module named 'uno', check your symlinks:
    ls -la .venv/lib/python3.*/site-packages/uno.py
    
  • If they're missing or incorrect, recreate them using the setup steps above

MCP Server Not Showing in Claude

  • Check if your claude_desktop_config.json is correctly formatted
  • Verify the paths in the config file are correct
  • Make sure both LibreOffice and the MCP server are running
  • Restart Claude Desktop completely

Bookmark Not Found Errors

  • Open your resume in LibreOffice Writer
  • Press F5 to open the Navigator
  • Verify that all required bookmarks exist
  • Check setup_resume_bookmarks.md for the correct naming convention

Container Issues

  • Container fails to start:

    • Check Docker logs: docker logs resume-tailor
    • Ensure port 5001 isn't already in use: netstat -tuln | grep 5001
    • Verify Docker is running: docker info
  • Cannot access the service:

    • Verify the container is running: docker ps | grep resume-tailor
    • Check if the service is listening: curl -v http://localhost:5001
    • Restart the container: docker-compose restart resume-tailor
  • Output files not appearing:

    • Check permissions on the ./Output directory
    • Verify the volume mapping: docker inspect resume-tailor | grep -A 10 Mounts

Project Structure

  • edit_resume_uno.py - Core LibreOffice UNO API interaction
  • resume_editor_server.py - MCP server for Claude integration
  • start_resume_editor_service.sh - Script to start LibreOffice and the MCP server
  • test_*.py - Test scripts for different resume sections
  • setup_resume_bookmarks.md - Guide for adding bookmarks to your resume
  • CLAUDE_MCP_USAGE.md - Detailed instructions for using with Claude

License

MIT # ResumeTailor

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选