daniielyan commited on
Commit
616c6d0
Β·
2 Parent(s): ea1df06 62ac9fe

Merge branch 'main' of https://github.com/daniel7an/jobsearch-mcp-server; branch 'main' of https://huggingface.co/spaces/Agents-MCP-Hackathon/jobsearch-mcp-server

Browse files
.gitattributes CHANGED
@@ -17,4 +17,4 @@
17
  job_search_results.json -filter
18
  pyproject.toml -filter
19
  package.json -filter
20
- *.lock -filter
 
17
  job_search_results.json -filter
18
  pyproject.toml -filter
19
  package.json -filter
20
+ *.lock -filter
README.md CHANGED
@@ -1,213 +1,12 @@
1
  ---
2
- title: Job Search MCP Server
3
- emoji: πŸ”
4
- colorFrom: blue
5
- colorTo: purple
6
  sdk: gradio
7
- sdk_version: "5.0.0"
8
  app_file: app.py
9
  pinned: false
10
- license: mit
11
- tags:
12
- - mcp-server-track
13
- - job-search
14
- - mcp
15
- - ai-agents
16
- - gradio
17
- - embeddings
18
- - cover-letter
19
- - career
20
  ---
21
 
22
- # πŸ” Job Search MCP Server
23
-
24
- **Smart job matching and instant application helper** - A comprehensive MCP server that revolutionizes the job search process using GPU embeddings and LLM-powered assistance.
25
-
26
- ## 🎯 Hackathon Entry - Track 1: MCP Server/Tool
27
-
28
- This project is submitted for the **Gradio Agents & MCP Hackathon 2025** under **Track 1: MCP Server/Tool**.
29
-
30
- **Tag:** `mcp-server-track`
31
-
32
- ## πŸš€ What It Does
33
-
34
- This MCP server provides 4 core endpoints that transform how people search and apply for jobs:
35
-
36
- ### πŸ“Š Core MCP Endpoints:
37
-
38
- 1. **`profile.upsert`** - Store user rΓ©sumΓ©, skills, salary expectations, and career goals
39
- 2. **`jobs.search`** - Pull fresh job posts, rank with GPU embeddings, return fit scores
40
- 3. **`letter.generate`** - Create personalized cover letters using LLM
41
- 4. **`qa.reply`** - Draft concise answers to client questions
42
-
43
- ## 🎬 Demo Video
44
-
45
- > **Note:** A demo video showing the MCP server in action with various MCP clients (Claude Desktop, Cursor, etc.) will be added here.
46
-
47
- ## ✨ Key Features
48
-
49
- ### 🧠 GPU-Powered Job Matching
50
- - **Sentence Embeddings**: Uses state-of-the-art transformer models to understand job descriptions and user profiles
51
- - **FAISS Vector Search**: Real-time similarity matching between user skills and job requirements
52
- - **Intelligent Ranking**: Returns jobs with personalized fit scores (0-100%)
53
-
54
- ### πŸ€– LLM-Enhanced Applications
55
- - **Smart Cover Letters**: Context-aware cover letter generation in multiple tones
56
- - **Interview Q&A**: Instant responses to common interview questions
57
- - **Career Guidance**: Personalized suggestions based on user profile
58
-
59
- ### πŸ“ˆ Efficiency Benefits
60
- - **80%+ Time Savings**: Automates the most tedious parts of job searching
61
- - **Quality Improvement**: Reduces copy-pasted applications with personalized content
62
- - **Better Matching**: AI-driven job-to-skill matching vs. keyword search
63
-
64
- ## πŸ—οΈ Architecture
65
-
66
- ### GPU Processing (T4-small)
67
- - Embeds user profiles and job descriptions using sentence-transformers
68
- - Maintains FAISS index for real-time similarity search
69
- - Efficient vector operations for large job databases
70
-
71
- ### LLM Integration
72
- - Supports multiple providers (OpenAI, Anthropic, etc.)
73
- - Optimized prompts for cover letters and Q&A responses
74
- - Average calls under 300 tokens for cost efficiency
75
-
76
- ### MCP Protocol Implementation
77
- - Full MCP server capabilities using Gradio
78
- - RESTful API endpoints for all core functions
79
- - Stateful user profile management
80
-
81
- ## πŸ› οΈ Installation & Setup
82
-
83
- 1. **Clone the repository:**
84
- ```bash
85
- git clone <your-repo-url>
86
- cd jobsearch-mcp-server
87
- ```
88
-
89
- 2. **Install dependencies:**
90
- ```bash
91
- uv sync
92
- ```
93
-
94
- 3. **Set up environment variables:**
95
- ```bash
96
- # Create .env file with:
97
- OPENAI_API_KEY=your_openai_key
98
- ANTHROPIC_API_KEY=your_anthropic_key
99
- HUGGINGFACE_TOKEN=your_hf_token
100
- ```
101
-
102
- 4. **Run the server:**
103
- ```bash
104
- uv run python app.py
105
- ```
106
-
107
- ## πŸ“± Usage Examples
108
-
109
- ### 1. Profile Setup
110
- ```python
111
- # Store user profile
112
- result = mcp_server.profile_upsert(
113
- user_id="john_doe",
114
- profile_data={
115
- "resume": "Full resume text...",
116
- "skills": ["Python", "React", "Node.js"],
117
- "salary_wish": "$80,000 - $120,000",
118
- "career_goals": "Senior full-stack developer role"
119
- }
120
- )
121
- ```
122
-
123
- ### 2. Job Search with AI Ranking
124
- ```python
125
- # Find and rank jobs
126
- results = mcp_server.jobs_search(
127
- user_id="john_doe",
128
- query="Python developer",
129
- location="Remote",
130
- job_type="full-time"
131
- )
132
- # Returns jobs with 0-100% fit scores
133
- ```
134
-
135
- ### 3. Generate Cover Letter
136
- ```python
137
- # Create personalized cover letter
138
- letter = mcp_server.letter_generate(
139
- user_id="john_doe",
140
- job_description="Job posting text...",
141
- tone="professional"
142
- )
143
- ```
144
-
145
- ### 4. Interview Q&A Assistant
146
- ```python
147
- # Get help with interview questions
148
- response = mcp_server.qa_reply(
149
- user_id="john_doe",
150
- question="Why should we hire you?",
151
- context="Software engineering role"
152
- )
153
- ```
154
-
155
- ## πŸ’» Technology Stack
156
-
157
- - **Framework**: Gradio 5.0+ with MCP support
158
- - **Embeddings**: sentence-transformers, FAISS
159
- - **LLM**: OpenAI GPT/Anthropic Claude APIs
160
- - **ML**: PyTorch, scikit-learn, pandas
161
- - **Web**: httpx, aiohttp, requests
162
- - **Data**: Beautiful Soup for job scraping
163
-
164
- ## πŸš€ Typical User Flow
165
-
166
- 1. **One-time Setup**: Upload rΓ©sumΓ© and skills using `profile.upsert`
167
- 2. **Job Discovery**: Search for roles with `jobs.search` (e.g., "LLM engineer")
168
- 3. **Smart Ranking**: Get ranked list with AI-powered fit percentages
169
- 4. **Quick Apply**: Generate cover letter with `letter.generate`
170
- 5. **Interview Prep**: Use `qa.reply` for instant responses to recruiter questions
171
-
172
- ## 🎯 Impact & Benefits
173
-
174
- - **For Job Seekers**: Reduces application time by 80%+, improves match quality
175
- - **For Recruiters**: Better-matched candidates, higher-quality applications
176
- - **For Platforms**: Enhanced user engagement, data-driven insights
177
-
178
- ## πŸ† Innovation Highlights
179
-
180
- 1. **Hybrid AI Approach**: Combines GPU embeddings with LLM generation for optimal cost/performance
181
- 2. **MCP Integration**: Native MCP server that works with any MCP client
182
- 3. **Real-time Processing**: Sub-second job ranking for thousands of postings
183
- 4. **Contextual Understanding**: Deep semantic matching beyond keyword search
184
-
185
- ## πŸ”§ MCP Client Integration
186
-
187
- This server works seamlessly with:
188
- - **Claude Desktop** (Anthropic)
189
- - **Cursor** IDE
190
- - **Custom Gradio Apps** as MCP clients
191
- - Any MCP-compatible application
192
-
193
- ## πŸ“Š Technical Specifications
194
-
195
- - **Python**: 3.10+
196
- - **Memory**: Optimized for efficient embedding storage
197
- - **GPU**: T4-small compatible, CPU fallback available
198
- - **API**: RESTful endpoints with full MCP protocol support
199
- - **Scalability**: Designed for production deployment
200
-
201
- ## 🀝 Contributing
202
-
203
- This project is part of the Gradio Agents & MCP Hackathon 2025. Contributions and feedback are welcome!
204
-
205
- ## πŸ“„ License
206
-
207
- MIT License - see LICENSE file for details.
208
-
209
- ---
210
-
211
- **Built for the Gradio Agents & MCP Hackathon 2025** πŸš€
212
-
213
- *Transforming job search through intelligent automation and AI-powered matching*
 
1
  ---
2
+ title: Jobsearch Mcp Server
3
+ emoji: πŸ“ˆ
4
+ colorFrom: pink
5
+ colorTo: yellow
6
  sdk: gradio
7
+ sdk_version: 5.33.0
8
  app_file: app.py
9
  pinned: false
 
 
 
 
 
 
 
 
 
 
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
src/config/__pycache__/__init__.cpython-313.pyc ADDED
Binary file (333 Bytes). View file
 
src/config/__pycache__/settings.cpython-313.pyc ADDED
Binary file (4.05 kB). View file
 
src/services/__pycache__/__init__.cpython-313.pyc ADDED
Binary file (493 Bytes). View file
 
src/services/__pycache__/embedding_service.cpython-313.pyc ADDED
Binary file (11.2 kB). View file
 
src/services/__pycache__/job_search_service.cpython-313.pyc ADDED
Binary file (19.8 kB). View file
 
src/services/__pycache__/llm_service.cpython-313.pyc ADDED
Binary file (14.7 kB). View file
 
src/services/__pycache__/profile_service.cpython-313.pyc ADDED
Binary file (6.4 kB). View file
 
src/tools/__pycache__/__init__.cpython-313.pyc ADDED
Binary file (466 Bytes). View file
 
src/tools/__pycache__/cover_letter_tool.cpython-313.pyc ADDED
Binary file (8.91 kB). View file
 
src/tools/__pycache__/job_search_tool.cpython-313.pyc ADDED
Binary file (5.78 kB). View file
 
src/tools/__pycache__/profile_tool.cpython-313.pyc ADDED
Binary file (4.05 kB). View file
 
src/tools/__pycache__/qa_tool.cpython-313.pyc ADDED
Binary file (13.3 kB). View file