简历管理服务器

IAM MCP服务器是一款专为求职者设计的工具,提供简历管理、职位搜索、定制简历生成和求职信创建等功能。

  • by alejandrogarcia-hub
  • Python
  • 混合部署
  • 1 星标
  • 更新于
在 GitHub 查看 alejandrogarcia-hub/iam-mcp-server

使用说明

IAM MCP 服务器……有点🤔(表示思考或疑惑)

个人申请人网格(IAM)MCP服务器旨在处理和管理求职者的简历,并促进求职搜索。它提供了专门的工具和提示,用于求职搜索、简历整合、生成针对特定职位的简历,以及撰写量身定制的求职信。

注:此服务器不完全支持系统集成。相反,它提供了专门针对MCP主机的功能——因此才说“有点像🤔”。

💡(灯泡图标,常用于表示灵感、想法或创意) 社区与支持
如果你觉得这个项目有帮助,请考虑给它点个星⭐️。发现了bug或者有建议?请开一个issue——欢迎你的反馈!

🚀 快速入门

1. 使用Claude Desktop作为MCP主机

IAM MCP服务器旨在与Claude Desktop配合使用,后者提供了运行MCP所需的主机环境。有关如何在MCP中设置Claude Desktop的更多详细信息,请参阅 官方MCP快速入门指南。

2. 添加文件系统MCP服务器

添加 filesystem 将MCP服务器与Claude Desktop连接以启用文件系统访问(配置示例请参阅下文的“要求”部分)。

3. 获取JSearch API令牌

在(某网站/平台)创建一个免费账户 JSearch(注:JSearch可能是一个特定的搜索引擎或搜索服务的名称,根据上下文,这里直接保留原名,不做具体翻译) 获取您的API密钥(每月200次免费请求)。

⚠️ 注: 这一步是可选的。您也可以让MCP主机或另一台MCP服务器来处理作业搜索。

4. 配置IAM MCP服务器

在您的Claude Desktop配置中添加以下内容,以便直接从PyPI运行服务器 uvx:

{
  "mcpServers": {
    "iam": {
      "command": "uvx",
      "args": [
        "--from", 
        "iam-mcp-server@latest",
        "mcp-server-iam"
      ],
      "env": {
        "LOG_LEVEL": "INFO",
        "RAPIDAPI_KEY": "<YOUR_API_KEY>",
        "RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

🚀 准备开始使用 IAM MCP 服务器了吗?
查看一下 特点/功能 部分内容学习如何使用可用的工具和提示。

📝 要求

  1. 🗂️ MCP 主机必须对其运行所在的本地文件系统具有读写访问权限。例如,您可以运行 IAM MCP Server 在……之内 Claude Desktop,以及 filesystem MCP服务器提供了这一功能。此文件访问要求适用于(该)版本 1.0 并且对于正常运行是必要的。

    1.1。 添加 filesystem MCP服务器

        {
            "mcpServers": {
                "filesystem": {
                    "command": "npx",
                    "args": [
                        "-y",
                        "@modelcontextprotocol/server-filesystem",
                        "<add directory for filesystem server>"
                    ]
                }
            }
        }
    
  2. 🔍 那个 search job MCP工具需要访问 JSearch(可译为“杰搜索”或根据具体语境保留原名)您可以创建一个账户,每月免费获得200次请求。

✨ 特点/功能

提示

📊 分析就业市场

逐步指导大型语言模型(LLM)执行任务,如进行 job search然后,对生成的职位列表进行总结和分析。请参阅完整的提示以获取详细说明和上下文。

📄 网格简历(或:网格式简历)

轻松将多份针对不同目标的简历合并成一份全面的Markdown文档。

什么是简历网格?
如果你申请过类似的职位,你可能已经为不同的职位描述创建了多个版本的简历。Resume Mesh将所有这些版本整合到一个统一的Markdown文件中。这使MCP主机能够全面了解你的经历,并且便于为未来的申请生成新的、量身定制的简历。

🎯 针对特定职位的简历生成

为每个具体的职位发布生成定制化的简历。

要使用此功能,请确保MCP主机已经可以访问 resume mesh每份量身定制的简历都是根据简历模板和具体的职位描述生成的。您需要附上 resume mesh 提前与MCP主机进行对话,因为恢复生成提示并未指示LLM加载(相关信息) resume mesh 来自文件系统。

求职信生成

利用相应生成的简历,轻松定制一封针对特定职位描述的个性化求职信。

使用方法:
在生成求职信之前,请确保MCP主机能够访问已生成的相关内容 resume 对于目标职位。您必须手动附加此 resume 在MCP主机对话中,因为封面信提示不会自动从文件系统中检索它。

💾 保存工作

逐步指导大型语言模型(LLM)进行 save jobs.

使用方法:

首先,使用(某种方法或平台)来搜索工作 search jobs MCP工具。获取结果后,您可以指示大型语言模型(LLM)保存这些职位招聘信息。

工具

🚀 搜索工作

使用以下参数进行职位搜索:

  • 角色:要搜索的职位名称或岗位
  • 城市:(可选)求职的目标城市
  • 国家:(可选)求职的目标国家
  • 平台:(可选)要使用的特定工作平台
  • 职位数量:(默认5)要检索的职位列表数量
  • 职位描述片段:(可选)可选择仅包含职位描述的一部分

🛠️ 安装与设置

IAM MCP 服务器可以通过多种方式进行安装:

📦 桌面扩展(DXT)- 推荐使用

一键安装MCP主机! DXT(Desktop Extension)格式提供了安装和使用IAM MCP Server的最简便方式。

为什么选择DXT?

桌面扩展程序通过将所有内容打包成一个可安装的单一程序包,消除了手动设置MCP服务器的复杂性:

  • 无需安装Python - 包含所有依赖项
  • 一键安装 - 就像浏览器扩展一样
  • 自动更新 - MCP 主机可以管理更新
  • 跨平台 - 支持在 macOS、Windows 和 Linux 上运行
  • 自给自足的 - 没有环境冲突

下载最新版DXT

从我们的GitHub发布页面获取最新的预构建DXT文件:

📥 下载最新DXT →

🐳 容器伴生容器(或边车容器)

构建一个自包含的镜像,并与您的MCP主机并行运行:

# Build image using published wheel (set APP_VERSION to released tag)
docker build --no-cache --build-arg APP_VERSION=2.1.0 -t iam-mcp-server:2.1.0 .

# For local source builds, omit APP_VERSION or pass APP_VERSION=local
docker build -t iam-mcp-server:dev .

# Start the server with a writable data volume and required secrets
docker run --rm \
  --name iam-mcp-server \
  -e RAPIDAPI_KEY=your_rapidapi_key \
  -e LOG_LEVEL=INFO \
  -e MCP_TRANSPORT=stdio \
  -v $(pwd)/data:/data \
  iam-mcp-server:2.1.0

# OR
docker run --rm -i \
    -e RAPIDAPI_KEY="your-api-key-here" \
    -e LOG_LEVEL=DEBUG \
    -v $(pwd)/data:/data \
    iam-mcp-server:dev

# Interactive stdio communication with Docker

When running the container interactively, you can send JSON-RPC messages directly:

```bash
# Start the container in interactive mode
docker run -i --rm ghcr.io/alejandrogarcia-hub/iam-mcp-server:latest

# 1. Initialize the server (send this JSON and press Enter)
{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"0.1.0","capabilities":{},"clientInfo":{"name":"client","version":"1.0.0"}},"id":1}

# 2. Send initialized notification
{"jsonrpc":"2.0","method":"notifications/initialized","params":{"capabilities":{}}}

# 3. List available prompts
{"jsonrpc":"2.0","method":"prompts/list","params":{},"id":2}

# 4. List available tools
{"jsonrpc":"2.0","method":"tools/list","params":{},"id":3}

# 5. Graceful shutdown (optional - see note below)
{"jsonrpc":"2.0","id":4,"method":"shutdown"}
# Server responds with: {"jsonrpc":"2.0","id":4,"result":null}

# 6. Exit notification
{"jsonrpc":"2.0","method":"exit"}

关于关闭的说明: 而MCP支持通过(某种方式)实现优雅关闭 shutdown 请求随后是 exit 在实践中,通知:

  • Ctrl+C 立即终止容器(发送SIGINT信号)——快速但不优雅
  • Ctrl+D 发送EOF以关闭标准输入 - 比Ctrl+C更干净
  • 优雅的关闭序列 允许服务器在终止前正确清理资源、保存状态并确认

在生产环境中,优雅关闭尤为重要,因为服务器可能正在处理正在进行的操作,或者需要在终止前持久化状态。


#### Production Deployment with Kubernetes

For production environments, deploy the MCP server to Kubernetes and connect via HTTP/SSE:

##### Step 1: Deploy to Kubernetes

```bash
# Deploy to local Docker Desktop Kubernetes
./ops/k8s/deploy-local.sh

# Or deploy to production cluster
kubectl apply -k ops/k8s/

部署完成后,服务器可通过以下地址访问:

  • 当地的: http://localhost:9999 (使用端口转发)
  • 生产您配置的入口URL
步骤2:为Kubernetes连接配置Claude Desktop

Claude Desktop 通过支持 HTTP/SSE MCP 服务器实现(功能) 设置 > 连接器 (Pro、Max、Team 和 Enterprise 计划):

对于本地Kubernetes部署:

  1. 确保服务器已部署且端口转发已启用:

    ./ops/k8s/deploy-local.sh
    # This will set up port-forward on localhost:9999
    
  2. 打开Claude桌面版并导航至 设置 > 连接器

  3. 点击 “添加自定义连接器” 在底部

  4. 输入MCP服务器URL:

    • 对于本地Kubernetes: http://localhost:9999
    • 对于生产环境的Kubernetes: https://your-mcp-server.domain.com
  5. (可选)配置身份验证 “高级设置”

  6. 点击 “Add” 为了节省

重要注意事项:

  • HTTP/SSE 连接器通过“设置”>“连接器”进行配置,而非在(其他位置) claude_desktop_config.json
  • 此功能目前处于测试阶段
  • 对于本地Kubernetes,确保 kubectl port-forward 正在运行(部署脚本会处理这个)
  • 服务器使用SSE(服务器发送事件)技术将响应流式传输回Claude桌面版
步骤3:测试HTTP/SSE连接

HTTP/SSE 传输与 stdio 的工作方式不同。以下是测试方法:

步骤1: 首先,建立SSE连接以获取会话ID:

# Connect to SSE endpoint and get the session ID
curl -N -H "Accept: text/event-stream" "http://localhost:9999/sse"
# Response will include: data: /messages/?session_id=YOUR_SESSION_ID

步骤2: 初始化MCP会话(两步过程):

# Step 1: Send initialize request
curl -X POST "http://localhost:9999/messages/?session_id=YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"0.1.0","capabilities":{"prompts":{},"tools":{}},"clientInfo":{"name":"test-client","version":"1.0.0"}},"id":1}'
# Response: "Accepted" (actual response comes via SSE)

# Step 2: Send initialized notification
curl -X POST "http://localhost:9999/messages/?session_id=YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized","params":{"capabilities":{}}}'
# Response: "Accepted"

步骤3: 列出可用的提示和工具:

# List prompts
curl -X POST "http://localhost:9999/messages/?session_id=YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"prompts/list","params":{},"id":2}'
# Response: "Accepted" (actual list comes via SSE)

# List tools
curl -X POST "http://localhost:9999/messages/?session_id=YOUR_SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","params":{},"id":3}'
# Response: "Accepted" (actual list comes via SSE)

注: 所有HTTP POST请求都会立即返回“已接受”。实际的MCP响应会通过SSE连接进行流式传输。

使用 Docker 进行本地开发

对于不使用 Kubernetes 的本地开发,使用带有 stdio 传输的 Docker:

{
  "mcpServers": {
    "iam-docker": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "--name", "iam-mcp-claude",
        "-e", "RAPIDAPI_KEY=your_api_key",
        "-e", "LOG_LEVEL=INFO",
        "-e", "MCP_TRANSPORT=stdio",
        "-v", "/path/to/data:/data",
        "iam-mcp-server:latest"
      ]
    }
  }
}

重要提示:

  • 容器必须以交互模式运行(-i) 用于stdio传输
  • 使用 --rm 断开连接后清理容器
  • 挂载一个卷(-v在会话之间持久保存数据
  • 替换 /path/to/data 使用你实际的数据目录

测试容器

echo '{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "0.1.0", "capabilities": {}, 
  "clientInfo": {"name": "test", "version": "1.0.0"}}, "id": 1}' | docker run --rm -i iam-mcp-server:dev

# List available tools
echo '{"jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 2}' | docker run --rm -i iam-mcp-server:dev

# List available prompts
echo '{"jsonrpc": "2.0", "method": "prompts/list", "params": {}, "id": 3}' | docker run --rm -i iam-mcp-server:dev

关键运行时环境变量:

  • RAPIDAPI_KEY / RAPIDAPI_HOST – JSearch 集成所需的凭据。
  • IAM_DATA_ROOT (默认为 /data) – 求职简历网格和导出文件的存储位置。
  • LOG_LEVEL – 通过标准输出(stdout)发射的结构化JSON日志。
  • MCP_TRANSPORT – 保持 stdio 用于侧车(Sidecar)使用,或在需要时替换为另一种支持的传输方式。

通过将主机的配置指向容器的入口点,将容器附加到您的MCP(Microsoft Cloud Platform,或根据具体上下文可能指其他含义)主机上。共享(资源/配置等,具体根据上下文确定) /data 如果需要直接访问生成的工件,则与主机共享卷。

寻找 iam_mcp_server-[version].dxt 在发布资源中。

在Claude Desktop中的安装

  1. 下载 最新的 .dxt 来自发布版本的文件
  2. 打开Claude桌面版 → 设置 → 扩展
  3. 安装 下载的 .dxt 文件
  4. 配置 在安装过程中,使用以下设置:

本地构建DXT

想创建自己的DXT文件吗?

make dxt

构建好的DXT文件将可在 dxt/ 目录作为 iam_mcp_server-[version].dxt。

🐍 从 PyPI 获取的 Python 包

你也可以从PyPI将此项目作为Python包进行安装: iam-mcp-server 可以翻译为“IAM MCP 服务器”或根据具体上下文可能翻译为“身份管理 MCP 服务器”(如果 IAM 是 Identity and Access Management 的缩写,即身份和访问管理)。这里,“iam”通常代表“身份和访问管理”(Identity and Access Management),而“mcp”可能代表某种特定的组件、平台或服务名称,具体含义需根据上下文确定。在没有具体上下文的情况下,“IAM MCP 服务器”是一个较为通用的翻译。

🖥️ 替代方案:手动配置MCP

对于手动安装或其他MCP主机:

  1. 找到你的 claude_desktop_config.json 文件:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json

选项1:使用 uvx 使用PyPI包

{
  "mcpServers": {
    "iam": {
        "command": "uvx",
        "args": [
            "--from", 
            "iam-mcp-server@latest",
            "mcp-server-iam"
        ],
        "env": {
            "LOG_LEVEL": "INFO",
            "RAPIDAPI_KEY": "<API KEY>",
            "RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
            "MCP_TRANSPORT": "stdio"
        }
    }
}

选项2:使用源代码

{
  "mcpServers": {
    "iam": {
      "command": "<path to>/uv",
      "args": [
        "--directory",
        "<path to>/iam-mcp-server/src/mcp_server_iam",
        "run",
        "__main__.py"
      ],
      "env": {
        "LOG_LEVEL": "INFO",
        "RAPIDAPI_KEY": "<API KEY>",
        "RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
        "MCP_TRANSPORT": "stdio"
      }
    }
  }
}

重启您的MCP主机

  • 完全关闭并重新启动您的MCP主机
  • 主机启动时,服务器将自动初始化

验证连接

在您的MCP主机中,询问:“有哪些可用的MCP工具?”或“列出所有可用的MCP服务器”

🔍 MCP 检测器(或:MCP 检查工具)

在终端中运行 PYTHONPATH=src mcp dev src/mcp_server_iam/__main__.py 并接受安装MCP Inspector。 在网页检查器用户界面中,点击 connect 并与MCP服务器进行交互。

⚠️(警告符号,无具体文字含义,可理解为“注意”或“警告”) 重要的,这是为了 dev 仅用于目的。

⚙️ 环境变量

IAM 支持通过环境变量进行配置。创建一个 .env 在项目根目录中放置文件或在您的系统中设置这些变量:

变量 默认值 描述
中文翻译 英文原文 其他(如适用)
用于日志记录和识别的应用程序名称 LOG_LEVEL INFO
MCP_TRANSPORT stdio
应用传输版本 RESUME_MESH_FILENAME resume_mesh
恢复网格的默认文件名 RAPIDAPI_KEY ""
外部API访问的RapidAPI密钥(可选) RAPIDAPI_HOST jsearch.p.rapidapi.com

| RapidAPI 主机终端节点 |

iam-mcp-server/
├── ops/                        # Production deployment configuration
│   ├── k8s/                    # Kubernetes manifests and scripts
│   │   ├── deploy-local.sh     # Local Docker Desktop deployment script
│   │   ├── teardown-local.sh   # Local deployment teardown script
│   │   ├── deployment.yaml     # Kubernetes deployment manifest
│   │   ├── deployment-local.yaml # Local deployment manifest
│   │   ├── namespace.yaml      # Namespace configuration
│   │   ├── service.yaml        # Service configuration
│   │   └── ingress.yaml        # Ingress configuration
│   └── README.md               # Deployment documentation
├── src/                        # Source code
│   └── mcp_server_iam/         # Main MCP server package
│       ├── __init__.py         # Package initialization
│       ├── __main__.py         # Entry point for running the server
│       ├── config.py           # Configuration management
│       ├── logging.py          # Logging configuration
│       ├── prompt.py           # LLM prompts and instructions
│       ├── server.py           # MCP server implementation
│       ├── server_http.py      # HTTP/SSE transport wrapper
│       ├── tool.py             # MCP tools implementation
│       └── utils.py            # Utility functions
├── tests/                      # Test suite
│   ├── __init__.py
│   ├── test_config.py          # Configuration tests
│   ├── test_logging.py         # Logging tests
│   ├── test_manifest.py        # Manifest tests
│   ├── test_mcp_tools.py       # MCP tools tests
│   └── test_utils.py           # Utility tests
├── .dockerignore               # Docker ignore file
├── .env_example                # Environment variables template
├── AGENTS.md                   # Agent documentation
├── CLAUDE.md                   # Claude Code instructions
├── Dockerfile                  # Docker container definition
├── LICENSE                     # MIT License
├── makefile                    # Build and development tasks
├── manifest.json               # Package manifest
├── pyproject.toml              # Project configuration and dependencies
├── pytest.ini                  # Pytest configuration
├── README.md                   # This file
├── requirements.txt            # Python dependencies
├── requirements-dev.txt        # Development dependencies
├── ruff.toml                   # Ruff linter configuration
└── uv.lock                     # UV dependency lock file

📂 仓库结构

  • ops/🔑 关键组件

    • k8s/生产部署与运营
    • Kubernetes 部署清单和自动化脚本
    • 生产环境中的HTTP/SSE服务器配置
  • **src/mcp_server_iam/**本地Docker Desktop Kubernetes部署支持

    • server.py核心MCP服务器实现
    • server_http.py主要MCP服务器类和协议处理
    • tool.pyHTTP/SSE 传输实现
    • prompt.py实施MCP工具(如职位搜索等)
    • config.py用于简历生成和职位分析的大型语言模型(LLM)提示
    • logging.py配置管理和环境变量
    • utils.py结构化日志配置
  • **tests/**辅助函数和实用工具

  • 针对MCP工具和功能的全面测试套件Docker 支持

  • 使用stdio和HTTP/SSE传输方式的容器化部署配置文件

项目设置、代码检查(或格式化)和依赖管理

📝 许可证