Labsco
MCP SERVER

Job Ad Intelligence MCP

by dannydaley76

Turn a job advert into structured data — salary parsed, seniority classified, a skills-only CV comparison, and the questions worth asking before you apply.

HR, Recruiting & Workforce
Summary
The salary parser is deterministic, and that is the right call.

Salary strings are where these tools usually fail quietly — a model reading "£45k to £60k per annum" will get it right most of the time, and the times it does not look identical to the times it does. Parsing them with rules instead makes the failures visible. The fit scorer is explicit about staying on skills, experience, tools and seniority with no protected-characteristic inference, and ships a disclaimer saying it should not be the sole basis for a hiring decision — worth honouring, since the output reads authoritative.

What it is

An MCP server over Streamable HTTP that reads job adverts. Five tools cover the pipeline from a raw posting to a decision: extract the structure, normalise the money, classify the level, compare a CV against it on skills alone, and generate the questions the advert leaves unanswered.

What you get
  • A job advert turned into fields — title, company, location, remote policy, employment type, salary, seniority, required and preferred skills, responsibilities, requirements, benefits and application instructions, with a confidence value — from raw text or a URL — `extract_job_ad`
  • Freeform salary strings parsed deterministically into minimum, maximum, currency and period, handling the shapes adverts actually use: `£45k–£60k`, `up to £70,000`, `from £500 per day`, `$120k`, `€80,000 pa`, `competitive`, `DOE` — `normalise_salary`
  • A seniority classification with the signals behind it, across entry, junior, mid, senior, lead, head_of, executive and unknown — `detect_seniority`
  • A CV compared against an advert on skills, experience, tools and seniority only, returning matched and missing skills, experience alignment, red flags and interview talking points — with no protected-characteristic inference — `score_candidate_fit`
  • 5–10 questions to ask before applying or during screening, each with why it matters and a category — role, company, compensation, flexibility, process or expectations — `generate_application_questions`
Requirements

No key to run it locally: build from a clone with `npm install` and `npm run build`, and connect over Streamable HTTP at the `/mcp` endpoint. `PAYMENTS_ENABLED` defaults to `false`, so all requests pass through freely with no wallet; switching it on turns the server into an x402 pay-per-call service settling in USDC. URL fetching is guarded — localhost and private IP ranges are rejected, responses are capped by `FETCH_MAX_BYTES` at 1 MB, and `FETCH_TIMEOUT_MS` bounds the wait at 10 seconds.