AI职业管理平台

一个多代理AI平台,通过协调求职、电子邮件通信、日历事件和个性化见解智能管理用户的职业生涯。

  • by Sid-MNNIT
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Sid-MNNIT/MCP

使用说明

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聊天机器人

🤖 代理工作流

求职工作流程

  1. 用户操作:启动求职或接收工作推荐
  2. 工作代理 使用MCP职位搜索服务器获取匹配的职位
  3. LLM分析 基于用户资料评估工作契合度
  4. 结果 缓存在Redis中并返回到前端

电子邮件管理工作流程

  1. Gmail MCP 获取用户电子邮件
  2. 电子邮件代理 对消息进行分类和分析
  3. LLM 生成上下文响应草稿
  4. 用户 通过后端API进行审核和发送

日历集成工作流

  1. 电子邮件代理 检测日历邀请
  2. 日历MCP 提取事件详细信息
  3. 日历代理 使用AI增强的细节创建事件
  4. 提醒事项 在谷歌日历中配置

会话流(Ask Jobsy)

  1. 快速API 接收用户消息
  2. JWT验证 和授权
  3. 内存模块 加载对话历史记录
  4. 规划师 确定所需的操作/代理
  5. 执行者 运行相关代理
  6. 检索增强生成 检索上下文信息
  7. LLM 生成响应
  8. 记忆 商店互动
  9. 回应 返回给用户

简历分析工作流程

  1. 用户 通过前端上传简历PDF或DOCX
  2. 后端 base64对文件进行编码并调用Resume-MCP parse_resume
  3. pdf加载器 提取原始文本(PyMuPDF主,pdfplumber回退)
  4. 分段分流器 检测并分离简历部分(经验、项目、技能、教育等)
  5. 实体提取器 提取技能、角色、公司、资历和经验持续时间
  6. ats_scorer 自动检测候选人个人资料(学生/早期职业/专业)并评分0-100
  7. llm_scorer (可选)致电Groq寻求优势、改进和关键反馈
  8. 分数细分和标志 返回前端

📊 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
  • 功能标志

🔐 安全考虑

  1. API身份验证:JWT令牌已过期
  2. OAuth集成:用于用户身份验证的Google OAuth 2.0
  3. 密码安全性:使用盐轮进行bcrypt哈希
  4. 跨域资源共享:针对特定来源进行配置
  5. 输入验证:Pydantic模式和Express中间件
  6. 速率限制:在关键端点上实施
  7. 秘密管理:使用环境变量,从不提交.env文件
  8. 数据隐私:符合GDPR的数据处理

🤝 贡献

  1. 克隆仓库
   git clone https://github.com/Sid-MNNIT/MCP.git
   cd MCP
  1. 创建要素分支
   git checkout -b feature/your-feature-name
  1. 进行更改并提交
   git commit -m "Add your feature description"
  1. 推到叉子上,创建一个拉动请求
   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用于实时更新

建于❤️ 为了事业成功