Jobstack Mcp

io.github.IsaiahDupreePublished by GitHub account IsaiahDupreev1.0.0Updated Nov 2, 2026

Unified jobs search over official feeds + ATS boards (USAJOBS, Adzuna, Muse, Greenhouse, Lever...)

VerifiedStreamable HTTPWeb executableProductivity & WorkflowWeb Search & Scraping

Overview

AI-generated overview

Remote MCP endpoint that lets an assistant search job postings across official job boards and ATS boards and fetch individual listings.

What you can do
  • Search job postings across USAJOBS, Adzuna, Jooble, The Muse, Reed and an ATS engine covering Greenhouse, Lever, Ashby, Workable and SmartRecruiters, merged into one flat job shape, sorted newest first and paginated.
  • Filter searches by keywords, location, remote flag, a subset of sources, limit and offset.
  • Fetch a single posting by its source engine and native id, with a composite board:company:id form for ATS results.
When to use it
Useful when an assistant needs to look up current job openings across several boards at once, compare or filter listings by location and remote status, or pull the details of one posting found in a search.
Requirements
A remote MCP endpoint over streamable HTTP; no local install or account needed. The connector itself holds the upstream proxy secret and applies a soft per-IP limit of about 30 tool calls per hour by default.
Before you install
Both tools are read-only, but every call is forwarded to a metered third-party jobs API, so search terms and locations leave the conversation. The free tier is rate-limited per IP and is meant as a discovery channel rather than an unmetered bypass of the paid API.

Installation

In SourceWeft

  1. Open Jobstack Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.IsaiahDupree%2Fjobstack-mcp/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "jobstack": {
      "type": "http",
      "url": "https://jobstack-mcp.vercel.app/mcp"
    }
  }
}

README

jobstack-mcp

A remote MCP (Model Context Protocol) connector for JobStack — the unified jobs-search API (jobs-api) that fuses official job-board feeds and public ATS boards (USAJOBS, Adzuna, Jooble, The Muse, Reed, and Greenhouse/Lever/Ashby/Workable/SmartRecruiters behind one ats engine) into one flat Job shape.

Live: https://jobstack-mcp.vercel.app/mcp — 2 tools, exposed over the MCP streamable-HTTP transport. Since the upstream jobs-api deployment is metered (RapidAPI/Apify) and its /v1/* routes sit behind a RapidAPI proxy-secret guard, this connector authenticates its own outbound calls with that same secret (JOBSTACK_MCP_PROXY_SECRET, sent as the X-RapidAPI-Proxy-Secret header) and applies a soft per-IP rate limit (JOBSTACK_MCP_RATE_LIMIT, default 30 tool-calls/hour, in-memory) so the free MCP tier stays a discovery channel rather than an unmetered bypass of the paid listing — see lib/ratelimit.js.

What this is

JobStack is a plain REST API. This repo is a thin adapter that exposes each endpoint as a discoverable, typed MCP tool so MCP clients (Claude, ChatGPT, any MCP-aware agent) can call it directly, speaking the MCP streamable-HTTP transport at a single /mcp endpoint. It has no business logic of its own — every tool call is a pass-through fetch to jobs-api, and the JSON response is handed back verbatim as the tool result.

Tools

ToolJobStack endpointDescription
search_jobsGET /v1/jobs/searchSearch + merge job postings across all (or a sources= subset of) engines, sorted newest-first, paginated.
get_jobGET /v1/jobs/{source}/{id}Fetch one job by its source engine + native id (composite board:company:nativeId for ats).

Both tools are read-only and annotated { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: true }.

search_jobs inputs

  • keywords (string, optional) — free-text search terms.
  • location (string, optional) — free-text location filter.
  • remote (boolean, optional) — filter to remote roles where the source signals it.
  • sources (string, optional) — comma list of engine keys: usajobs, adzuna, jooble, themuse, reed, ats. Omit for all six.
  • limit (int 1-100, optional, default 20).
  • offset (int ≥0, optional, default 0).

get_job inputs

  • source (enum: usajobs | adzuna | jooble | themuse | reed | ats).
  • id (string) — native upstream id from a search result; for ats, the composite board:company:nativeId string.

Config

  • JOBSTACK_MCP_API_BASE_URL — upstream base URL. Default https://jobs-api-gamma.vercel.app.
  • JOBSTACK_MCP_PROXY_SECRET — the RapidAPI proxy secret forwarded as X-RapidAPI-Proxy-Secret on outbound calls (needed for the production origin, which guards /v1/*).
  • JOBSTACK_MCP_RATE_LIMIT — soft per-IP tools/call cap per hour. Default 30.

Local development

bash
npm installnpm run dev          # starts local-server.js on http://localhost:3900npm run smoke        # in another terminal — real HTTP/JSON-RPC smoke test

test/smoke.mjs drives the running server over real HTTP/JSON-RPC and verifies GET /health, initialize (serverInfo.name === "jobstack"), and tools/list (the 2 tools with their zod-derived schemas), then attempts a live search_jobs tools/call. Without JOBSTACK_MCP_PROXY_SECRET set locally the upstream origin returns 403 (its RapidAPI guard) — an expected upstream-auth condition the smoke test reports as a soft warning while still verifying the full protocol surface.

Deploy

bash
cd /Users/isaiahdupree/Software/jobstack-mcpnpx vercel --yes --prod

After deploy, the MCP connector URL to register in Claude/ChatGPT/any MCP client is https://<deployment-domain>/mcp.

Source: README.md at commit 96d89a5

Tools

2

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.

Parameterslimitoffsetremotesourceskeywordslocation

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.

Parametersidrequiredsourcerequired

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.