We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jsuryanm/mcp-jobs-recommender-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
import streamlit as st
from src.helper import extract_text_from_pdf,ask_groq
from src.job_api import fetch_linkedin_jobs,fetch_naukri_jobs
st.set_page_config(page_title="Job Recommneder",layout="wide")
st.title("AI Job Recommender")
st.markdown("Upload your resume and get recommnedations based on your skills and experience from Linkedin and Naukri.")
uploaded_file = st.file_uploader("Upload your resume in pdf format", type=['pdf'])
if uploaded_file:
with st.spinner("Extracting text from your resume..."):
resume_text = extract_text_from_pdf(uploaded_file)
with st.spinner("Summarizing your resume..."):
summary = ask_groq(f"Summarize this resume highlighting the skills,education and experience:\n\n{resume_text}",max_tokens=500)
with st.spinner("Finding skill gaps...."):
gaps = ask_groq(f"Analyze this resume and highlight the missing skills, certifications and experience needed for better job opportunities:\n\n{resume_text}",max_tokens=400)
with st.spinner("Creating future roadmap..."):
roadmap = ask_groq(f"Based on this resume, suggest a future roadmap to improve this person's career prospects (Skill to learn, certifications needed, industry exposure):\n\n{resume_text}",max_tokens=400)
st.markdown("---")
st.header("Resume Summary")
st.header("π Resume Summary")
st.markdown(f"<div style='background-color: #000000; padding: 15px; border-radius: 10px; font-size:16px; color:white;'>{summary}</div>", unsafe_allow_html=True)
st.markdown("---")
st.header("π οΈ Skill Gaps & Missing Areas")
st.markdown(f"<div style='background-color: #000000; padding: 15px; border-radius: 10px; font-size:16px; color:white;'>{gaps}</div>", unsafe_allow_html=True)
st.markdown("---")
st.header("π Future Roadmap & Preparation Strategy")
st.markdown(f"<div style='background-color: #000000; padding: 15px; border-radius: 10px; font-size:16px; color:white;'>{roadmap}</div>", unsafe_allow_html=True)
st.success("β
Analysis Completed Successfully!")
if st.button("Get Job Recommendations"):
with st.spinner("Fetching job recommendations...."):
keywords = ask_groq(f"Based on this resume suggest the best job titles and keywords for searching jobs. Give a comma-seperated list only, no explanation.\n\nSummary: {summary}",
max_tokens=100)
search_keywords_clean = keywords.replace("\n","").strip()
st.success(f"Extracted Job keywords:{search_keywords_clean}")
with st.spinner("Fetching jobs from Linkedin and Naukri..."):
linkedin_jobs = fetch_linkedin_jobs(search_keywords_clean,rows=60)
naukri_jobs = fetch_naukri_jobs(search_keywords_clean,rows=60)
st.markdown("---")
st.header("Top Linkedin Jobs")
if linkedin_jobs:
for job in linkedin_jobs:
st.markdown(f"**{job.get('title')}** at *{job.get('companyName')}*")
st.markdown(f"- π {job.get('location')}")
st.markdown(f"- π [View Job]({job.get('link')})")
st.markdown("---")
else:
st.warning("No LinkedIn jobs found.")
st.markdown("---")
st.header("πΌ Top Naukri Jobs (India)")
if naukri_jobs:
for job in naukri_jobs:
st.markdown(f"**{job.get('title')}** at *{job.get('companyName')}*")
st.markdown(f"- π {job.get('location')}")
st.markdown(f"- π [View Job]({job.get('url')})")
st.markdown("---")
else:
st.warning("No Naukri jobs found.")