使用说明
JOBSY-基于人工智能的求职与职业管理平台
一个复杂的多代理人工智能平台,通过协调求职、电子邮件通信、日历事件和个性化见解来智能地管理你的职业生涯。采用现代AI/LLM集成、MCP(模型上下文协议)服务器和全栈架构构建。
🎯 概述
MCP 集成 是一个智能职业管理系统,结合了:
- 人工智能驱动的工作匹配 -根据您的个人资料查找和排名工作机会
- 智能电子邮件处理 -起草、管理和优先处理与工作相关的沟通
- 日历智能 -自动从电子邮件中提取和安排面试事件
- 会话代理 -向Jobsy聊天机器人寻求职业指导和见解
- 简历分析 -智能文档处理和配置文件管理
- 工作流程编排 -复杂职业工作流程的多智能体协调
该平台使用 模型上下文协议(MCP) 与外部服务(Gmail、谷歌日历、工作板)进行安全、标准化的通信,并利用多个LLM提供商进行智能决策。
🏗️ 项目结构
mcpintegrat/
├── backend/ # Node.js Express API server
│ ├── src/
│ │ ├── app.js # Express application setup
│ │ ├── index.js # Server entry point
│ │ ├── config/ # Configuration files
│ │ ├── controllers/ # Route handlers
│ │ ├── routes/ # API route definitions
│ │ ├── models/ # MongoDB/Mongoose schemas
│ │ ├── services/ # Business logic services
│ │ ├── middleware/ # Express middleware
│ │ ├── jobs/ # Scheduled job runners
│ │ ├── db/ # Database connections
│ │ └── utils/ # Utility functions
│ ├── package.json
│ └── requirements.txt
│
├── client/ # Python AI orchestration layer
│ ├── ask_jobsy/ # Chatbot & conversation engine
│ │ ├── chat_api.py # FastAPI endpoints
│ │ ├── executor.py # Task execution logic
│ │ ├── planner.py # Planning & workflow management
│ │ ├── memory.py # Conversation memory
│ │ └── rag.py # Retrieval Augmented Generation
│ │
│ ├── orchestrator/ # Multi-agent orchestration
│ │ ├── runner.py # Workflow execution engine
│ │ ├── client.py # entrypoint
│ │ ├── calendar_agent.py # Calendar event management
│ │ ├── email_agent.py # Email processing & drafting
│ │ ├── job_agent.py # Job search & matching
│ │ ├── planner.py # Workflow planning
│ │ └── redis_client.py # State management
│ │
│ ├── mcp/ # MCP client & integration
│ │ ├── client.py # MCP client wrapper
│ │ ├── server.py # MCP server management
│ │ └── manual_test*.py # Testing utilities
│ │
│ ├── backend_client/ # Backend API client
│ │ ├── agent_api.py # Agent endpoints
│ │ ├── user_api.py # User management
│ │ ├── email_api.py # Email operations
│ │ ├── job_wrapper.py # Job search wrapper
│ │ └── ... # Other API clients
│ │
│ ├── llm/ # LLM provider integrations
│ │ ├── groq_client.py # Groq API client
│ │ ├── openai_client.py # OpenAI API client
│ │ ├── llm_service.py # LLM abstraction layer
│ │ ├── job_matching_service.py
│ │ └── prompts/ # LLM prompt templates
│ │
│ ├── rag/ # Retrieval Augmented Generation
│ │ ├── embeddings.py # Embedding generation
│ │ ├── vector_store.py # Vector database
│ │ ├── ingest.py # Document ingestion
│ │ └── retrieve.py # Query & retrieval
│ │
│ ├── schemas/ # Pydantic & data schemas
│ │ ├── job.py
│ │ ├── email.py
│ │ ├── calendar.py
│ │ ├── resume.py
│ │ └── memory.py
│ │
│ ├── evaluators/ # Response evaluation
│ │ ├── confidence.py
│ │ ├── usefulness.py
│ │ └── retention.py
│ │
│ ├── wrappers/ # External service wrappers
│ │ ├── gmail_wrapper.py
│ │ ├── calendar_wrapper.py
│ │ ├── resume_wrapper.py
│ │ └── job_wrapper.py
│ │
│ ├── utils/
│ ├── tests/
│ └── requirements.txt
│
├── mcp_servers/ # Model Context Protocol servers
│ ├── calendar_mcp/ # Google Calendar MCP server
│ │ ├── calendar_service.py
│ │ ├── auth.py
│ │ └── credentials.json
│ ├── gmail_mcp/ # Gmail MCP server
│ ├── job_search_mcp/ # Job search MCP server
│ └── resume_mcp/ # Resume analysis MCP server
│ ├── main.py # FastMCP server entry point (parse_resume, ats_score, ping)
│ ├── pipelines/
│ │ ├── extract_pipeline.py # PDF text → structured sections + entities
│ │ └── score_pipeline.py # ATS + optional Groq LLM scoring pipeline
│ ├── services/
│ │ ├── pdf_loader.py # PDF/DOCX text extraction (PyMuPDF + pdfplumber fallback)
│ │ ├── section_splitter.py # Regex-based section detection (12 section types)
│ │ ├── entity_extractor.py # Extracts skills, roles, companies, experience duration
│ │ ├── ats_scorer.py # Profile-aware ATS scoring (student / early / professional)
│ │ ├── llm_scorer.py # Groq LLM feedback (strengths, improvements, critical)
│ │ └── groq_client.py # Groq API wrapper with 429 retry logic
│ └── utils/
│ ├── text_utils.py # Unicode normalization, bullet char cleanup
│ └── date_utils.py # Date utilities
│
├── frontend/ # React + Vite application
│ ├── src/
│ │ ├── App.jsx
│ │ ├── main.jsx # Entry point
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API service calls
│ │ ├── hooks/ # Custom React hooks
│ │ ├── utils/ # Utility functions
│ │ ├── styles/ # CSS modules
│ │ └── assets/ # Static assets
│ ├── public/
│ ├── index.html
│ ├── vite.config.js
│ ├── package.json
│ └── eslint.config.js
│
├── infra/ # Infrastructure as Code
│ ├── docker/ # Docker configuration
│ ├── k8s/ # Kubernetes manifests
│ └── terraform/ # Terraform IaC
│
├── docs/ # Documentation
│ ├── architecture.md # System architecture
│ ├── agent_flow.md # Agent workflow diagrams
│ └── mcp_contracts.md # MCP protocol specifications
│
├── package.json # Root package configuration
├── requirements.txt # Python dependencies
├── email.css # Global styles
└── README.md # This file
🚀 主要特点
1. 人工智能驱动的工作匹配
- 智能求职和排名算法
- 使用基于规则的过滤和groq llm进行基于配置文件的匹配
- 实时作业跟踪和通知
- 应用历史管理
2. 智能电子邮件处理
- 人工智能为求职申请生成电子邮件草稿
- 电子邮件分类和优先级排序(摘要生成)
- 自动回复建议
- 电子邮件线程跟踪和分析
3. 日历智能
- 通过电子邮件邀请自动安排面试
- 使用AI进行事件提取
- 通过MCP与谷歌日历同步日历
- 会议准备和提醒
4. 对话式人工智能(Ask Jobsy)
- 基于FastAPI的聊天机器人端点
- 多回合对话记忆
- 使用RAG的上下文感知响应
- 与求职、电子邮件和日历代理集成
5. 多代理编排
- 日历代理-管理事件创建和日程安排
- 电子邮件代理-处理电子邮件起草和沟通
- Job Agent-推动求职和匹配
- Planner-协调工作流执行
- 用于复杂任务的统一工作流引擎
6. MCP服务器集成
- 日历MCP -谷歌日历操作
- Gmail MCP -电子邮件阅读和撰写
- 求职MCP -工作板集成
- 恢复MCP -文档解析和分析
7. 简历分析和ATS评分
- PDF和DOCX文本提取(PyMuPDF主,pdfplumber回退)
- 12种类型的部分检测:经验、项目、技能、教育、认证、成就等
- 实体提取:技能、角色、公司、资历和总经验持续时间
- 具有自适应权重的个人资料感知ATS评分(学生/早期职业/专业)
- Groq LLM的可选反馈:优势、改进和关键问题
- 职位描述匹配以实现目标匹配评分
8. LLM提供商支持
- 格罗克API -利用开放模型进行快速推理
- OpenAI API -用于高级任务的GPT模型
- 可插拔LLM服务层
- 快速模板管理
📋 技术栈
后端
- 运行时:带ES模块的Node.js
- 框架:Express.js 5.2+
- 数据库:MongoDB与Mongoose ODM
- 认证:智威汤逊+谷歌OAuth 2.0
- 缓存:Redis
- 作业调度器:节点cron
- 文件上传:Multer
- 安全:bcrypt用于密码哈希
- 应用程序编程接口:谷歌API(Gmail、日历、云端硬盘)
客户端/Python层
- 框架:FastAPI
- LLM客户:Groq SDK、OpenAI
- 矢量数据库:[配置于
rag/] - 异步:异步,aiohttp
- 数据验证:Pydantic
- PDF解析:PyMuPDF、pdfplumber、python docx
- 测试:pytest
- 公用事业:python dotenv,Redis客户端
前端
- 框架:反应19.2
- 构建工具:快7.2
- 路由:React路由器7.11
- 样式:CSS模块+Lucide React图标
- 认证:@react-oauth/google
- 标记语言:反应标记
- 公用事业:用于日期处理的日期fns
基础设施
- 容器化:Docker
- 编排:库贝内特斯
- IAC公司:地形
- 协议:模型上下文协议(MCP)
🔧 安装和设置
先决条件
- Node.js 18+和npm/yarn
- Python 3.9+
- MongoDB实例
- Redis实例
- 谷歌OAuth凭据(谷歌云控制台)
- Groq和/或OpenAI的API密钥
后端设置
cd backend
npm install
# Create .env file
cp .env.example .env
# Configure: MONGODB_URI, JWT_SECRET, CORS_ORIGIN, Google API credentials, etc.
# Start development server
npm run dev
# Seed test data (optional)
npm run seed:emails
环境变量 (.env):
MONGODB_URI=mongodb://localhost:27017/mcpintegrat
JWT_SECRET=your_jwt_secret_key
PORT=5000
CORS_ORIGIN=http://localhost:5173
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
前端设置
cd frontend
npm install
# Start development server
npm run dev
# Build for production
npm run build
# Lint code
npm run lint
前端继续运行: http://localhost:5173
Python客户端设置
cd client
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Create .env file
cp .env.example .env
# Configure: LLM API keys, backend URLs, MCP server details, etc.
#run client from root folder
python -m uvicorn client.orchestrator.client:app --reload
# Run tests
pytest
环境变量 (.env):
GROQ_API_KEY=your_groq_api_key
OPENAI_API_KEY=your_openai_api_key
BACKEND_URL=http://localhost:5000
REDIS_URL=redis://localhost:6379
JWT_SECRET=your_jwt_secret_key
MCP服务器设置
每个MCP服务器都需要特定的配置:
日历MCP
cd mcp_servers/calendar_mcp
python -m server
# Requires: Google Calendar API credentials (credentials.json)
Gmail MCP
cd mcp_servers/gmail_mcp
python -m server
# Requires: Gmail API credentials
恢复MCP
cd mcp_servers/resume_mcp
pip install groq pymupdf pdfplumber python-docx
python main.py
# Requires: GROQ_API_KEY in root .env (runs on port 8001)
求职MCP
cd mcp_servers/job_search_mcp
python -m server
# Requires: Job board API keys
🔌 API终点
核心后端API
认证
POST /api/auth/register-注册新用户POST /api/auth/login-使用凭据登录POST /api/auth/google-谷歌OAuth登录GET /api/auth/me-获取当前用户
用户档案
GET /api/user/:id-获取用户资料PUT /api/user/:id-更新个人资料
简历
POST /api/resume-上传并解析简历PDF(运行MCP管道→ 存储到Cloudinary+MongoDB)GET /api/resume-获取简历元数据、解析部分和ATS分数POST /api/resume/recalculate-使用最新的ATS评分员对存储的简历进行重新评分(无需重新上传)DELETE /api/resume-删除简历GET /api/resume/file-打开简历PDF文件
乔布斯
GET /api/jobs-列出作业POST /api/jobs/search-搜索职位GET /api/jobs/:id-获取作业详细信息POST /api/jobs/apply-申请工作GET /api/jobs/tracking-获取应用程序跟踪
电子邮件
GET /api/emails-列出电子邮件POST /api/emails/draft-生成电子邮件草稿POST /api/emails/send-发送电子邮件POST /api/emails/digest-生成电子邮件摘要GET /api/emails/query-查询电子邮件
日历
GET /api/calendar/events-列出日历事件POST /api/calendar/events-创建事件PUT /api/calendar/events/:id-更新事件DELETE /api/calendar/events/:id-删除事件
人工智能/聊天
POST /api/ai/ask-询问Jobsy聊天机器人
🤖 代理工作流
求职工作流程
- 用户操作:启动求职或接收工作推荐
- 工作代理 使用MCP职位搜索服务器获取匹配的职位
- LLM分析 基于用户资料评估工作契合度
- 结果 缓存在Redis中并返回到前端
电子邮件管理工作流程
- Gmail MCP 获取用户电子邮件
- 电子邮件代理 对消息进行分类和分析
- LLM 生成上下文响应草稿
- 用户 通过后端API进行审核和发送
日历集成工作流
- 电子邮件代理 检测日历邀请
- 日历MCP 提取事件详细信息
- 日历代理 使用AI增强的细节创建事件
- 提醒事项 在谷歌日历中配置
会话流(Ask Jobsy)
- 快速API 接收用户消息
- JWT验证 和授权
- 内存模块 加载对话历史记录
- 规划师 确定所需的操作/代理
- 执行者 运行相关代理
- 检索增强生成 检索上下文信息
- LLM 生成响应
- 记忆 商店互动
- 回应 返回给用户
简历分析工作流程
- 用户 通过前端上传简历PDF或DOCX
- 后端 base64对文件进行编码并调用Resume-MCP
parse_resume - pdf加载器 提取原始文本(PyMuPDF主,pdfplumber回退)
- 分段分流器 检测并分离简历部分(经验、项目、技能、教育等)
- 实体提取器 提取技能、角色、公司、资历和经验持续时间
- ats_scorer 自动检测候选人个人资料(学生/早期职业/专业)并评分0-100
- llm_scorer (可选)致电Groq寻求优势、改进和关键反馈
- 分数细分和标志 返回前端
📊 MCP(模型上下文协议)
该平台使用MCP与外部服务进行标准化通信:
MCP服务器架构
- 位置:
mcp_servers/目录 - 协议:基于stdio/HTTP的JSON-RPC 2.0
- 认证:特定于服务(OAuth、API密钥)
可用工具(每台服务器)
每个MCP服务器都公开了工具和资源:
- 日历:create_event、update_event、list_event、extract_rom_email
- Gmail:list_emails、read_email、send_email和draft_email
- 求职:search_jobs、get_job_details、track_applications
- 简历:parse_resume、ats_score、ping
保护MCP连接
- 使用环境变量作为凭据
- 在Python客户端中实现JWT验证
- MCP端点的速率限制
- 日志记录和审计跟踪
🧪 测试
后端测试
cd backend
npm test
Python客户端测试
cd client
pytest # Run all tests
pytest tests/ -v # Verbose output
pytest tests/test_agent.py # Specific test file
pytest --cov=client # With coverage report
MCP服务器测试
cd mcp_servers/calendar_mcp
python manual_test.py
cd mcp_servers/resume_mcp
# Health check
curl http://127.0.0.1:8001/mcp/ping
📝 环境配置
根层级
.env-共享配置(Redis、MongoDB、GROQ_API_KEY)
后端(backend/.env)
- 数据库连接
- JWT机密
- Google OAuth凭据
- CORS设置
- API端口
客户(client/.env)
- LLM API密钥(Groq、OpenAI)
- 后端API URL
- Redis配置
- MCP服务器端点
前端(frontend/.env)
- 后端API基本URL
- 谷歌OAuth客户端ID
- 功能标志
🔐 安全考虑
- API身份验证:JWT令牌已过期
- OAuth集成:用于用户身份验证的Google OAuth 2.0
- 密码安全性:使用盐轮进行bcrypt哈希
- 跨域资源共享:针对特定来源进行配置
- 输入验证:Pydantic模式和Express中间件
- 速率限制:在关键端点上实施
- 秘密管理:使用环境变量,从不提交.env文件
- 数据隐私:符合GDPR的数据处理
🤝 贡献
- 克隆仓库
git clone https://github.com/Sid-MNNIT/MCP.git
cd MCP
- 创建要素分支
git checkout -b feature/your-feature-name
- 进行更改并提交
git commit -m "Add your feature description"
- 推到叉子上,创建一个拉动请求
git push origin feature/your-feature-name
代码标准
- 后端:JavaScript ES6+,符合Express.js规范
- 客户端:Python 3.9+,PEP 8风格指南,推荐类型提示
- 前端:React功能组件、钩子、CSS模块
📚 文档
详细文档可在 docs/ 目录:
🐛 故障排除
后端问题
- 连接被拒绝:确保MongoDB和Redis正在运行
- JWT错误:验证JWT_SECRET在后端和客户端之间的匹配
- Google API错误:检查Google Cloud控制台中的凭据和范围
前端问题
- API 404错误:验证后端是否正在运行以及CORS_ORIGIN是否正确
- OAuth登录失败:确认.env中的Google客户端ID
- Vite-dev服务器问题:清除node_modules并重新安装依赖项
Python客户端问题
- 导入错误:确保虚拟环境已激活
- LLM API错误:验证Groq/OpenAI仪表盘中的API键和费率限制
- Redis连接:检查Redis服务器是否在配置的端口上运行
📄 许可证
[指定您的许可证-MIT、Apache等。]
👥 联系与支持
- 项目存储库:[GitHub链接]
- 问题:GitHub问题
- 电子邮件:[您的电子邮件]
- 不协调/松弛:[社区频道(如适用)]
🗓️ 路线图
即将推出的功能
- []使用ML模型进行高级作业匹配
- []原生移动应用程序(React Native)
- []面试准备模块
- []薪资谈判助理
- []多语言支持
- []高级分析仪表板
- []与更多招聘板集成
- []自定义简历生成器
性能改进
- []矢量数据库优化
- []Redis缓存策略
- []GraphQL API(替代REST)
- []WebSocket用于实时更新
建于❤️ 为了事业成功
