career-agent-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@career-agent-mcpAnalyse this job posting, score my fit, and tailor my resume"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AI Career Agent
Deterministic job-analysis and resume-tailoring tools, exposed over the Model Context Protocol. An LLM client orchestrates them; it never produces the score and it never decides what is true about the candidate.
The problem this solves
Resume tailoring is the single task where an LLM will most reliably help you lie. Ask it to match a job description and "familiar with Docker" becomes "containerised production workloads", "did a course on Kubernetes" becomes "Kubernetes", and neither of you notices until an interviewer asks a follow-up question you cannot answer.
The fix is not a better prompt. It is a structural separation:
The model may decide what to emphasise. It may never decide what is true.
Everything printable about the candidate lives in one MasterProfile, and every
skill in it carries an evidence label. The tailoring engine may reorder,
select and re-word — it may not add. A validation gate then checks the
generated resume against the profile independently and blocks anything it
cannot trace back.
┌──────────────────────┐
job posting ────▶│ Scorer │──▶ score / decision / gaps
│ (deterministic) │ (learnable vs critical)
└──────────────────────┘
│
MasterProfile ─────────────▶│
(labelled claims) ▼
┌──────────────────────┐
│ ResumeTailor │──▶ tailored resume
│ select + reorder │
└──────────┬───────────┘
▼
┌──────────────────────┐
│ ValidationGate │──▶ FINAL, or BLOCKED with reasons
│ independent check │
└──────────────────────┘Related MCP server: CareerPilot
Evidence labels
Every skill is recorded with how well it is actually supported:
Label | Meaning | Printable? |
| Demonstrable — shipped code, or core to a job held | yes |
| Real but narrower than the word implies | yes |
| Adjacent experience, honestly framed | yes |
| Being learned. Not a competency yet | no |
| Not held | no |
| Unconfirmed | no |
The interesting part is that LEARNING and UNSUPPORTED skills are stored
deliberately. The system needs to know they exist so it can refuse to print
them — and so that when a posting asks for one, it can tell you honestly
whether it is a gap of weeks or a gap of years.
$ career-agent profile
┌────────────────────┬──────────────────────────────────────────────────┐
│ LEARNING │ LangChain, Spring Boot │
│ UNSUPPORTED │ Kubernetes, Machine learning, Microservices │
└────────────────────┴──────────────────────────────────────────────────┘
LEARNING and UNSUPPORTED skills are recorded deliberately - the validation
gate blocks them from ever being printed as competencies.Scoring
Deterministic, weighted, 100 points. Same input, same score — which is what makes it comparable across a hundred applications instead of drifting with whatever the model felt like that day.
Component | Max |
Technical fit (required weighted 4× preferred) | 25 |
Experience against stated requirement | 20 |
AI / GenAI relevance | 15 |
Backend relevance | 10 |
Seniority alignment | 10 |
Location | 5 |
Compensation signal | 5 |
Career growth signal | 5 |
Learnability of the gaps | 5 |
Hard rejects run first and short-circuit. A role requiring a PhD you do not have is not a low score, it is not a job — and pretending otherwise wastes the only genuinely scarce resource in a job search, which is the attention you can give each application.
$ career-agent analyse examples/jpmorgan_hyderabad.yaml
JPMorgan Chase - Software Engineer III - Java/Python - AIML
APPLY · score 87.5/100 (Strong) · ATS keyword coverage 88.9%
Learnable gaps: LangGraph$ career-agent analyse examples/senior_ml_riyadh.yaml
Example Analytics - Principal Machine Learning Engineer
DO_NOT_APPLY · score 21.8/100 (Low Priority)
Hard rejects
· Requires 10+ years; profile has 4.7 - a 5.3 year gap.
· Mandatory qualification not held: PhD in Machine Learning
· Title implies a seniority band above this profile.
· Three or more required skills are multi-year gaps, not learnable ones.
Critical gaps (do not claim): PyTorch, TensorFlow, MLOps, KubernetesGaps are split into learnable (weeks of deliberate work) and critical (years). Conflating the two is how people either give up on winnable roles or waste months on unwinnable ones.
The validation gate
Seven checks, each blocking:
Skill provenance — every printed skill exists in the profile at a printable label. A
LEARNINGskill named in the posting is still refused.Employment integrity — employer, title and dates must match a profile record exactly. Inflating a title at a real employer is caught.
Project provenance — no unknown projects; a public URL is refused unless the profile marks the project shipped, because a link that 404s in front of a recruiter is worse than no link.
Metric verification — any number presented as an achievement must appear in the profile as a whole token.
No placeholders — no
TBD, no[COMPANY], no unresolved templates.No seniority inflation — "principal", "architected the", "expert in" are blocked against a 4.7-year profile.
Required fields — no empty headline or summary.
A resume that fails is returned with is_final: false and every blocking
reason listed. There is no override flag. If the gate is wrong, the fix is to
correct the profile, not to bypass the check.
MCP server
career-agent-mcp # JSON-RPC 2.0 over stdioTool | Determinism |
| fully deterministic |
| selection + reordering, then gated |
| fully deterministic |
| deduplicated, append-only |
| append-only history |
| read |
| read |
The server's initialize instructions tell the client, in as many words, that
it may not decide what is true about the candidate and must report blocking
issues rather than working around them.
Tracker
Append-only JSONL. Two rules, both learned the expensive way:
Never overwrite history. Status changes append; the previous state stays readable. A tracker that silently rewrites itself cannot answer "when did this go quiet?", which is the only question that matters when a pipeline stalls.
Never create a duplicate. Deduplication on company + normalised role + canonical URL, so the same job on LinkedIn and on the company careers page is one row.
Senior AI Engineer IIandAI Engineerat the same company on the same URL are the same job;?utm_source=linkedinis not a different posting.
Quick start
pip install -e ".[dev]"
career-agent profile # what is and isn't claimable
career-agent analyse examples/jpmorgan_hyderabad.yaml # score a posting
career-agent tailor examples/jpmorgan_hyderabad.yaml # generate + validate
career-agent track examples/jpmorgan_hyderabad.yaml # add to the pipeline
career-agent pipeline --export applications.csv
pytest -q # 68 testsNo API key, no network, no cost. Nothing here calls a model — that is the client's job.
Tests found real bugs
Worth recording, because it is the argument for writing them:
Substring metric matching. An invented "47% latency reduction" passed the gate because
47appears inside the LinkedIn URL sluga94479167. Fixed with whole-token numeric extraction.Alias-blind skill promotion. A posting asking for
MCPfailed to promote the skill stored asModel Context Protocol, burying the most relevant item on the resume. Fixed by matching aliases.Punctuation surviving normalisation.
Sr. Java Developerleft a bare.token, so it would not deduplicate againstJava Developer.
Limitations
It does not find jobs. Ingestion is by URL, file or paste. LinkedIn prohibits unauthorised automated collection, and this project does not do it.
It never submits an application. Preparation is automated; submission is a human action.
The ATS score is an estimate of overlap between the profile and a posting's stated skills. It is not any employer's actual ATS score and is labelled as such everywhere it appears.
The master profile is never modified automatically. An agent that can silently edit its own source of truth has no source of truth.
Licence
Apache-2.0.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Job search and interview prep MCP. 11 tools, OAuth 2.1, cross-LLM. four-leaf.ai.
A job-search companion: tailor your CV to a role, score fit, fix ATS issues. Also via MCP.
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that exposes a perpetual, honest job-application pipeline as typed tools an LLM agent can call, with fit scoring, verified resume building, and a submission planner enforced by code, not prompts.16MIT
- AlicenseAqualityAmaintenanceAn AI job-hunt copilot that enables searching live job boards, shortlisting openings, tracking application pipelines, and generating tailored resumes and cover letters from any MCP client.14Apache 2.0
- AlicenseNot gradedqualityAmaintenanceA local-first, open-source MCP server that analyzes jobs, matches your CV, tailors documents, and tracks applications — all on your machine with no data uploaded.AGPL 3.0
- FlicenseAqualityCmaintenanceEnables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.20-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/leelakrishna288/ai-career-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server