简历定制服务

一个基于AI的简历定制服务,可根据特定职位描述自动生成优化后的Markdown和LaTeX/PDF版本简历。

  • by aarangop
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 aarangop/resume-mcp

使用说明

恢复MCP服务器

用于人工智能简历定制的模型上下文协议(MCP)服务器 该服务允许您根据特定的职位描述定制简历 自动创建针对ATS优化的Markdown和LaTeX/PDF版本 系统。

🚀 特性

  • 简历定制:生成针对特定工作的自定义简历 描述
  • LaTeX支持:使用LaTeX模板导出为专业PDF格式
  • 黑曜石融合:从黑曜石保管库中搜索和管理文件
  • 职业指导:获取有关简历和职业选择的反馈
  • MCP协议:遵循无缝AI的模型上下文协议 整合

📋 先决条件

  • Python 3.10或更高版本
  • Docker或Podman(用于LaTeX编译服务)
  • Node.js/npm(用于MCP检查器)
  • 黑曜石(可选,用于vault集成)
    • 如果不使用Obsidian,您可以使用文件系统上的任何目录,只需 请确保设置 OBSIDIAN_VAULT 变量在你的 .env 文件。

⚙️ 安装

  1. 克隆存储库:

    git clone https://github.com/yourusername/resume-mcp.git
    cd resume-mcp
    
  2. 安装所需的Python依赖项:

    pip install -r requirements.txt
    # Or using uv (recommended for better dependency resolution)
    uv pip install -e .
    
  3. 启动LaTeX编译服务器(生成PDF所需):

    # Using Docker
    cd latex-compilation-server
    docker-compose up -d
    cd ..
    
    # OR using Podman
    cd latex-compilation-server
    podman-compose up -d
    cd ..
    

    您可以验证服务器是否正在运行:

    curl http://localhost:7474/health
    
  4. 安装MCP检查器(用于调试/开发):

    npm install -g @modelcontextprotocol/inspector
    

初始存储库设置

如果克隆存储库时没有 --recursive 旗帜,你可能需要 初始化LaTeX编译服务器子模块:

git submodule init
git submodule update

这确保您在.NET Framework中拥有完整的LaTeX编译服务器代码 latex-compilation-server 目录。

🔧 配置

创建一个 .env 根目录中包含以下变量的文件(或 在您的环境中配置它们):

# Server configuration
SERVER_NAME="Resume Tailoring Server"

# File paths
BASELINE_RESUME_PATH="./templates/baseline_resume.md"
PROMPT_TEMPLATE_PATH="./templates/prompt_template.md"
LATEX_TEMPLATE_PATH="./templates/latex_template.tex"
OUTPUT_DIRECTORY="./templates/tailored_resumes"

# Obsidian vault configuration (optional)
OBSIDIAN_VAULT="/path/to/your/obsidian/vault"

# LaTeX compilation server configuration
LATEX_SERVER_URL="http://localhost:7474"
LATEX_OUTPUT_DIR="./templates/latex_output"

# Logging
LOG_LEVEL="INFO"

# Anthropic API key (if using Anthropic models)
ANTHROPIC_API_KEY="your_anthropic_api_key"

🏃‍♂️ 运行服务器

标准模式

要在标准模式下运行服务器,请执行以下操作:

python main.py

服务器将以stdio传输模式启动,这允许它连接 任何MCP兼容客户端。

带检查器(开发/调试模式)

对于开发和测试,您可以使用MCP Inspector运行服务器:

# Using the provided script
./inspect.sh

# Or manually
npx @modelcontextprotocol/inspector uv run main.py

调试问题

如果您遇到服务器问题,可以运行调试脚本:

python debug_server.py

这将对您的设置执行各种检查,并帮助识别任何问题。

🧠 使用恢复MCP服务器

服务器为简历定制提供了几个提示和工具:

提示

与服务器交互的最简单方法是通过提供的提示:

  1. 定制简历 -根据职位描述创建自定义简历
  2. 职业指导 -获取职业建议和简历反馈

这些提示需要模板存在于您的系统中,并进行配置 通过.env文件。

或者,您可以修改提示,使LLM要求您提供 所需输入。您还可以使用MCP工具访问您的 包含相关信息的文件系统,例如您的基线简历或工作 描述。

工具

  1. 管理工具:

    • list_templates:列出可用模板
    • get_baseline_resume:检索您的基线简历
  2. 验证工具:

    • validate_latex_template:检查您的LaTeX模板是否有效
    • check_latex_server:检查LaTeX编译服务器是否可用
    • check_latex_server_status:获取LaTeX服务器的详细状态
    • start_latex_server_help:获取启动LaTeX服务器的说明
  3. 黑曜石工具:

    • search_obsidian:搜索黑曜石保险库中的文件
    • read_obsidian_file:从黑曜石文件中读取内容
  4. CV工具:

    • save_tailored_cv:以Markdown格式保存定制的简历
    • generate_latex_cv:使用安全工具将定制的简历转换为LaTeX/PDF 容器化LaTeX编译服务器

🖨️ LaTeX编译服务器

该项目包括一个容器化的LaTeX编译服务 从LaTeX文档生成PDF文件,无需在上安装LaTeX 您的本地系统。该服务在Docker中作为单独的微服务运行 容器,并作为子模块包含在此存储库中 latex-compilation-server 目录。

优点:

  • 安全:将LaTeX编译隔离在Docker容器中,防止 潜在的系统命令利用
  • 一致性:适用于所有平台(macOS、Windows、Linux)
  • 简化设置:无需在本地安装LaTeX及其依赖项

它是如何工作的:

  1. MCP服务器将LaTeX内容发送到容器化HTTP服务
  2. 该服务在隔离环境中编译文档
  3. 编译后的PDF返回给MCP服务器
  4. PDF已保存到指定的输出目录

有关详细的体系结构信息,请参见 LaTeX服务器架构

管理层:

使用Docker启动/停止服务:

cd latex-compilation-server
docker-compose up -d    # Start server
docker-compose down     # Stop server
docker-compose logs -f  # View logs

或者与波德曼:

cd latex-compilation-server
podman-compose up -d    # Start server
podman-compose down     # Stop server
podman-compose logs -f  # View logs

🛡️ 安全考虑

LaTeX编译安全

此项目使用容器化的LaTeX编译服务,而不是直接的 系统调用有几个安全原因:

  1. 隔离LaTeX编译过程在Docker容器中运行, 与主机系统隔离
  2. 无Shell命令MCP服务器从不直接执行shell命令, 防止潜在的命令注入
  3. 沙盒环境:LaTeX代码在受控环境中运行 有限权限
  4. 基于API的交互:所有的沟通都是通过一个定义明确的 HTTP API而不是外壳执行
  5. 无状态处理:文件不会持久化在容器中 编译

这种架构确保即使恶意LaTeX文档 提交后,它将无法访问或影响您的主机系统。

📄 模板文件

基线简历

您的Markdown格式的起始简历,其中包含定制版本 创建。该项目包括一个示例基线简历,您可以使用它进行修改 您的信息。

LaTeX模板

用于生成专业PDF的LaTeX模板。模板必须包括 必需的占位符(如 $name, $profile, $technical_skills等等) 将替换为您量身定制的简历中的相应部分。

📚 工作流示例

  1. 在中设置您的基线简历 templates/baseline_resume.md
  2. 在中配置LaTeX模板 templates/latex_template.tex
  3. 启动LaTeX编译服务器:
    cd latex-compilation-server
    docker-compose up -d
    cd ..
    
  4. 运行MCP服务器: python main.py
  5. 与MCP客户端(如集成LLM)连接
  6. 向“裁缝简历”提示提交职位描述
  7. 使用CV工具生成LaTeX/PDF版本
  8. 查看并使用您量身定制的简历!

🔍 故障排除

常见问题及解决方案

LaTeX模板问题

如果您在LaTeX模板中看到关于缺少占位符的警告,请检查 它包括所有必填字段,如 $name, $profile, $technical_skills等等。

初始化问题

如果你遇到 RuntimeError: Received request before initialization was complete:

  1. 导入组件后添加一点延迟
  2. 在中检查您的导入结构 resume_mcp/mcp/__init__.py -确保所有 组件已正确导入
  3. 尝试使用调试服务器运行以识别特定问题:
    python debug_server.py
    

MCP连接问题

如果客户端无法连接到服务器:

  1. 检查stdio传输是否正常工作
  2. 验证是否导入了所有必需的组件
  3. 与检查员一起查看详细日志:
    ./inspect.sh
    

黑曜石整合问题

如果黑曜石集成不起作用:

  1. 验证 OBSIDIAN_VAULT 你的路 .env 文件
  2. 检查Obsidian vault目录的文件权限
  3. 通过调试服务器测试基本的黑曜石操作

LaTeX编译服务器问题

如果PDF生成失败:

  1. 检查LaTeX服务器是否正在运行:

    curl http://localhost:7474/health
    
  2. 如果没有运行,请启动它:

    cd latex-compilation-server
    docker-compose up -d
    
  3. 如果遇到问题,请检查服务器日志:

    docker-compose logs latex-server
    
  4. 如果需要重新启动服务器:

    docker-compose restart latex-server
    
  5. 验证您的 .env 文件具有正确的服务器URL:

    LATEX_SERVER_URL="http://localhost:7474"
    

高级调试

有关更详细的调试:

  1. 集 LOG_LEVEL="DEBUG" 在你的 .env 文件
  2. 使用检查器运行服务器以获取详细日志
  3. 检查 inspect.log 用于错误消息和执行流
  4. 使用 debug_server.py 验证组件初始化的脚本

🧩 扩展服务器

添加新提示

在中创建新的提示文件 resume_mcp/mcp/prompts 目录:

from resume_mcp.mcp.base import mcp

@mcp.prompt(name="My Custom Prompt")
def my_custom_prompt():
    return {
        "description": "Description of what this prompt does",
        "prompt": "Your prompt template here"
    }

添加新工具

在中创建新的工具文件 resume_mcp/mcp/tools 目录:

from resume_mcp.mcp.base import mcp

@mcp.tool()
def my_custom_tool(param1, param2=None):
    """Documentation for the tool.

    Args:
        param1: Description of param1
        param2: Description of param2
    """
    # Tool implementation
    return {"result": "Tool output"}

自定义模板

您可以在 templates/ 目录。确保 致:

  1. 包括所有必需的占位符
  2. 使用验证工具进行测试
  3. 更新您的 .env 配置以使用新模板

📜 许可证

此项目根据MIT许可证获得许可-请参阅许可证文件 细节。