Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Resume Filter MCP Serversearch for resumes with Java skills and 3+ years experience for backend engineer position"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
简历筛选 MCP 服务器
基于 Nest.js 开发的 Model Context Protocol (MCP) 服务器,用于从邮箱中智能筛选和排序简历。
功能特性
📧 邮件集成: 自动从邮箱中提取简历附件
📄 多格式支持: 支持 PDF、DOC、DOCX 格式的简历解析
🔍 智能搜索: 基于关键词、职位、技能、经验等多维度搜索
📊 智能排序: 支持按相关性、日期、经验、姓名排序
📈 数据分析: 提供简历统计信息(按职位、经验、教育背景分布)
🛠️ MCP 协议: 与 AI 助手(Claude、ChatGPT)无缝集成
📝 完整日志: 文件日志和控制台日志
技术栈
框架: Nest.js + TypeScript
MCP 协议: @modelcontextprotocol/sdk
邮件处理: imap-simple
文件解析: pdf-parse + mammoth
数据验证: class-validator + class-transformer
配置管理: @nestjs/config
安装
# 安装依赖
npm install
# 或使用 yarn
yarn install配置
复制环境变量示例文件:
cp .env.example .env编辑
.env文件,配置邮件服务器信息:
# 邮件服务器配置
IMAP_HOST=imap.163.com
IMAP_PORT=993
IMAP_SECURE=true
IMAP_USER=your-email@163.com
IMAP_PASS=your-authorization-code
IMAP_MAILBOX=INBOX
# 其他配置...163 邮箱配置说明
如果使用 163 邮箱,需要:
登录 163 邮箱网页版:https://mail.163.com
进入"设置" → "POP3/SMTP/IMAP"
开启"IMAP/SMTP服务"
生成授权码(不是登录密码)
使用授权码作为
IMAP_PASS,邮箱地址作为IMAP_USER
部署
详细的部署指南请参考 DEPLOYMENT.md,包含以下部署方式:
✅ 直接部署:适用于快速测试和开发
✅ PM2 部署:推荐用于生产环境,支持进程管理和自动重启
✅ Docker 部署:容器化部署,便于管理和扩展
✅ 系统服务部署:使用 systemd 实现开机自启
使用
开发模式
npm run start:dev生产模式
# 构建
npm run build
# 运行
npm run start:prod作为 MCP 服务器使用
在 Claude Desktop 或其他支持 MCP 的客户端中配置:
{
"mcpServers": {
"resume-filter": {
"command": "node",
"args": ["/path/to/mcp-resume/dist/src/main.js"]
}
}
}注意: NestJS 构建后的文件在 dist/src/ 目录下,路径应该是 dist/src/main.js。
MCP 工具
服务器提供以下工具供 AI 助手调用:
1. fetch_resumes_from_email
从邮箱中获取新的简历。
参数:
since(可选): ISO 8601 格式的日期,获取此日期之后的邮件limit(可选): 最多获取的邮件数量,默认 50
示例:
{
"since": "2024-01-01T00:00:00Z",
"limit": 20
}2. search_resumes
根据条件搜索和排序简历。
参数:
keyword(可选): 搜索关键词position(可选): 职位名称skills(可选): 技能数组minYearsOfExperience(可选): 最低工作年限maxYearsOfExperience(可选): 最高工作年限education(可选): 教育背景sortBy(可选): 排序方式 (relevance/date/experience/name)sortOrder(可选): 排序顺序 (asc/desc)limit(可选): 返回结果数量offset(可选): 分页偏移量
示例:
{
"keyword": "Java",
"position": "后端工程师",
"skills": ["Spring", "MySQL"],
"minYearsOfExperience": 3,
"sortBy": "relevance",
"limit": 20
}3. get_resume_by_id
根据 ID 获取单个简历的详细信息。
参数:
id(必需): 简历 ID
4. get_all_resumes
获取所有简历的列表。
5. delete_resume
根据 ID 删除简历及其文件。
参数:
id(必需): 要删除的简历 ID
6. get_statistics
获取简历统计信息。
MCP 资源
服务器提供以下资源:
resume://all: 所有简历列表resume://statistics: 简历统计信息
项目结构
src/
├── common/ # 通用模块
│ ├── dto/ # 数据传输对象
│ ├── interfaces/ # 接口定义
│ └── logger/ # 日志服务
├── config/ # 配置
├── email/ # 邮件服务
├── mcp/ # MCP 服务器
├── parser/ # 文件解析
├── resume/ # 简历服务
├── search/ # 搜索服务
├── app.module.ts # 应用模块
└── main.ts # 入口文件搜索算法
搜索使用多维度评分系统:
关键词匹配 (30%): 在姓名、职位、摘要、技能中搜索
职位匹配 (25%): 职位名称匹配
技能匹配 (20%): 技能列表匹配
经验匹配 (15%): 工作年限匹配
教育背景 (10%): 教育背景匹配
最终分数在 0-1 之间,分数越高表示匹配度越高。
日志
日志文件保存在 ./logs 目录下,按日期命名(例如:app-2024-01-01.log)。
可以通过环境变量配置日志级别和文件设置。
开发
# 代码格式化
npm run format
# 代码检查
npm run lint
# 运行测试
npm test许可证
MIT
贡献
欢迎提交 Issue 和 Pull Request!
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.