IAM MCP 服务器……有点🤔(表示思考或疑惑)
  ](https://www.python.org/downloads/)
个人申请人网格(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": "",
"RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
"MCP_TRANSPORT": "stdio"
}
}
}
}______________________________________________________________________
🚀 准备开始使用 IAM MCP 服务器了吗?\ 查看一下 特点/功能 部分内容学习如何使用可用的工具和提示。
📝 要求
- 🗂️ MCP 主机必须对其运行所在的本地文件系统具有读写访问权限。例如,您可以运行
IAM MCP Server在……之内Claude Desktop,以及filesystemMCP服务器提供了这一功能。此文件访问要求适用于(该)版本1.0并且对于正常运行是必要的。
1.1。 添加 filesystem MCP服务器
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
""
]
}
}
}- 🔍 那个
search jobMCP工具需要访问 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文件:
🐳 容器伴生容器(或边车容器)
构建一个自包含的镜像,并与您的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:
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
# 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部署:
- 确保服务器已部署且端口转发已启用:
./ops/k8s/deploy-local.sh
# This will set up port-forward on localhost:9999- 打开Claude桌面版并导航至 设置 > 连接器
- 点击 “添加自定义连接器” 在底部
- 输入MCP服务器URL:
- 对于本地Kubernetes: http://localhost:9999 - 对于生产环境的Kubernetes: https://your-mcp-server.domain.com
- (可选)配置身份验证 “高级设置”
- 点击 “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中的安装
- 下载 最新的
.dxt来自发布版本的文件 - 打开Claude桌面版 → 设置 → 扩展
- 安装 下载的
.dxt文件 - 配置 在安装过程中,使用以下设置:
- jsearch_api_key您从(某处获得的)RapidAPI密钥 JSearch(注:这可能是一个特定搜索工具或服务的名称,直接翻译为“J搜索”可能不够准确,具体翻译需根据上下文或该工具的实际用途来确定。但在此处,我们仅提供直译。) (可选 - 每月200次免费请求) - path_to_uvx您uvx可执行文件的路径(通常 ~/.local/bin 在 macOS/Linux 上, %USERPROFILE%\.local\bin (在Windows上)
本地构建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主机:
- 找到你的
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": "",
"RAPIDAPI_HOST": "jsearch.p.rapidapi.com",
"MCP_TRANSPORT": "stdio"
}
}
}选项2:使用源代码
{
"mcpServers": {
"iam": {
"command": "
/uv",
"args": [
"--directory",
"
/iam-mcp-server/src/mcp_server_iam",
"run",
"__main__.py"
],
"env": {
"LOG_LEVEL": "INFO",
"RAPIDAPI_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 在项目根目录中放置文件或在您的系统中设置这些变量:
| 变量 | 默认值 | 描述 | ||
|---|---|---|---|---|
| 中文翻译 | 英文原文 | 其他(如适用) | APP_NAME | iam |
| 用于日志记录和识别的应用程序名称 | LOG_LEVEL | INFO | DEBUG | 日志级别: INFO, WARNING, ERROR, CRITICAL , |
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传输方式的容器化部署配置文件
项目设置、代码检查(或格式化)和依赖管理
📝 许可证
