Skip to content

mabedd/Job-Matching-MCP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💼 Job Matching

AI-powered resume analysis & job discovery — Streamlit UI + MCP server

Upload a PDF resume, get instant AI insights, and pull live listings from LinkedIn and Naukri — all in one place.


Python Streamlit OpenAI MCP Apify

Features · Quick Start · Usage · MCP Server · Project Structure


✨ Features

Capability Description
📄 Resume parsing Extracts text from uploaded PDF resumes via PyMuPDF
🧠 AI analysis GPT-4o summarizes skills, experience, and education
🔍 Skill gap detection Identifies missing skills and suggests improvements
🗺️ Career roadmap Generates a personalized preparation strategy
🎯 Smart job search Derives search keywords from your resume automatically
💼 LinkedIn jobs Fetches live listings through Apify actors
🇮🇳 Naukri jobs Pulls India-focused roles from Naukri.com
🔌 MCP integration Exposes job-fetch tools for AI agents (Cursor, Claude Desktop, etc.)

🏗️ Architecture

flowchart TB
    subgraph UI["Streamlit App (app.py)"]
        A[Upload PDF Resume] --> B[Extract Text]
        B --> C[GPT-4o Analysis]
        C --> D[Summary · Skill Gaps · Roadmap]
        D --> E[Generate Search Keywords]
        E --> F[Fetch Jobs]
    end

    subgraph MCP["MCP Server (mcp_server.py)"]
        G[get_linkedin_jobs]
        H[get_naukri_jobs]
    end

    subgraph External["External Services"]
        I[(OpenAI API)]
        J[(Apify — LinkedIn Actor)]
        K[(Apify — Naukri Actor)]
    end

    B --> I
    C --> I
    D --> I
    E --> I
    F --> J
    F --> K
    G --> J
    H --> K

    style UI fill:#1E1E2E,stroke:#FF4B4B,color:#fff
    style MCP fill:#1E1E2E,stroke:#FFD700,color:#fff
    style External fill:#1E1E2E,stroke:#97D700,color:#fff
Loading

📋 Prerequisites

Before you begin, make sure you have:


🚀 Quick Start

1. Clone & enter the project

git clone <your-repo-url>
cd job-matching

2. Install dependencies

Option A — uv (recommended)

uv sync

Option B — pip

python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate
pip install -r requirements.txt

3. Configure environment variables

Create a .env file in the project root:

OPENAI_API_KEY=sk-your-openai-key-here
APIFY_API_KEY=apify_api_your-token-here

⚠️ Never commit .env to version control. It is already listed in .gitignore.

4. Run the Streamlit app

uv run streamlit run app.py
# or
streamlit run app.py

Open http://localhost:8501 in your browser, upload a PDF resume, and follow the on-screen flow.


📖 Usage

Streamlit workflow

  1. Upload your resume (PDF only)
  2. Wait for AI processing:
    • Resume summary
    • Skill gaps & missing areas
    • Future roadmap & preparation strategy
  3. Click Get Job Recommendations to:
    • Auto-extract search keywords from your profile
    • Fetch up to 60 jobs each from LinkedIn and Naukri
  4. Browse results with direct links to apply

What the AI generates

Section Prompt focus
Resume Summary Skills, experience, and education highlights
Skill Gaps Missing skills and improvement suggestions
Future Roadmap Career preparation strategy tailored to your profile
Job Keywords Comma-separated titles/keywords for job board search

🔌 MCP Server

The project includes an MCP (Model Context Protocol) server so AI assistants can fetch jobs programmatically.

Available tools

Tool Parameters Returns
get_linkedin_jobs search_query, location (default: "india"), rows (default: 60) List of LinkedIn job dicts
get_naukri_jobs search_query, location (default: "india"), rows (default: 60) List of Naukri job dicts

Run the MCP server

uv run python mcp_server.py
# or
python mcp_server.py

The server uses stdio transport by default.

Connect in Cursor

Add this to your Cursor MCP settings (.cursor/mcp.json or Settings → MCP):

{
  "mcpServers": {
    "job-matching": {
      "command": "uv",
      "args": ["run", "python", "mcp_server.py"],
      "cwd": "/absolute/path/to/job-matching",
      "env": {
        "APIFY_API_KEY": "your-apify-key"
      }
    }
  }
}

Connect in Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "job-matching": {
      "command": "uv",
      "args": ["run", "python", "mcp_server.py"],
      "cwd": "/absolute/path/to/job-matching"
    }
  }
}

📁 Project Structure

job-matching/
├── app.py                 # Streamlit web application
├── mcp_server.py          # MCP server (stdio transport)
├── pyproject.toml         # Project metadata & dependencies (uv)
├── requirements.txt       # Pip-compatible dependency list
├── uv.lock                # Locked dependency versions
├── .env                   # API keys (local only — not committed)
├── .python-version        # Python version pin (3.13)
└── src/
    ├── helper.py          # PDF extraction & OpenAI chat helper
    └── job_api.py         # Apify-powered LinkedIn & Naukri fetchers

🛠️ Tech Stack

Layer Technology
UI Streamlit
LLM OpenAI GPT-4o
PDF parsing PyMuPDF
Job scraping Apify Client
Agent protocol MCP / FastMCP
Config python-dotenv
Package manager uv

Apify actors used

Platform Actor ID Purpose
LinkedIn hKByXkMQaC5Qt9UMN Scrape LinkedIn job listings by title & location
Naukri alpcnRV9YI9lYVPWk Scrape Naukri.com jobs by keyword

⚙️ Configuration reference

Variable Required Description
OPENAI_API_KEY OpenAI API key for GPT-4o resume analysis
APIFY_API_KEY Apify token for LinkedIn & Naukri job actors

🧪 Development

# Install deps
uv sync

# Run Streamlit with auto-reload
uv run streamlit run app.py

# Run MCP server locally
uv run python mcp_server.py

📝 Notes

  • Job scraping relies on Apify residential proxies for LinkedIn — usage is billed through your Apify account.
  • Default job search location is india; pass a different location when calling the API or MCP tools.
  • Resume uploads are processed in-memory; nothing is persisted to disk.
  • The Streamlit app uses GPT-4o with temperature=0.5 for balanced, consistent outputs.

📄 License

This project is part of the MCP Bootcamp — Next-Gen AI Agents course. Use and modify freely for learning purposes.


Built with ❤️ for smarter job hunting

⭐ Star this repo if it helped you land your next role!

About

Upload a PDF resume, get instant AI insights, and pull live listings from **LinkedIn** and **Naukri** — all in one place.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages