MCP Server

jobstack-mcp

io.github.IsaiahDupree/jobstack-mcp
Business & Operations Search & Research Public & reachable MCP 2025-11-25

What this MCP does

Searches and retrieves job postings from government, job boards, and applicant-tracking-system feeds in a unified format.

get_job
Get a single job by source + id
Fetch one job posting by its source engine and native id, returned as { meta, job } with the same flat Job shape search_jobs yields. The id is the native upstream id as returned by that source in search results (NOT prefixed with the source name). Exception: for source="ats" the id is a composite "board:company:nativeId" string (e.g. "greenhouse:airbnb:7995153") so the lookup can round-trip to the right ATS board. Not every source supports single-job lookup — a search-only source returns a not_supported / not_found error.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['source', 'id'], 'properties': {'id': {'type': 'string', 'description': 'Native upstream job id as returned by that source. For source="ats", the composite "board:company:nativeId" string.'}, 'source': {'enum': ['usajobs', 'adzuna', 'jooble', 'themuse', 'reed', 'ats'], 'type': 'string', 'description': 'The engine that produced the job (matches the Job.source field from search_jobs).'}}}
search_jobs
Search jobs (unified feed)
Search job postings across every configured source and merge the results into one flat Job shape. Fans out in parallel to USAJOBS, Adzuna, Jooble, The Muse, Reed, and the ats engine (Greenhouse/Lever/Ashby/Workable/SmartRecruiters), then merges + sorts by postedDate (newest first) and paginates the combined set. Each Job has id, source, title, company, location, remote, url, description, postedDate, salaryMin, salaryMax, salaryCurrency, department, and employmentType. The response envelope carries meta, the echoed query, sources_requested, an optional sources_errored map, total, count, limit, offset, and results. Use sources= to restrict to specific engines.
Read only Open world Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Max results in the merged page, clamped 1-100. Default 20.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Zero-based offset into the merged result set for pagination. Default 0.'}, 'remote': {'type': 'boolean', 'description': 'Filter to remote roles when true. Only sources that expose an explicit remote signal apply it; others ignore it.'}, 'sources': {'type': 'string', 'description': 'Comma-separated engine keys to restrict the fan-out to. Any of: usajobs, adzuna, jooble, themuse, reed, ats. Omit for all six.'}, 'keywords': {'type': 'string', 'description': 'Free-text search terms (job title, skill, company, etc.). Optional â\x80\x94 omit to browse the latest postings.'}, 'location': {'type': 'string', 'description': 'Free-text location filter (e.g. "Washington, DC" or "London"). Applied upstream where the source supports it.'}}}
Added
get_job
Sept. 17, 2026, 12:42 p.m.
Added
search_jobs
Sept. 17, 2026, 12:42 p.m.