Jobboard

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026

Forwarding client for the JobYap job search: postings, matches, companies and discussion threads.

Overview

AI-generated overview

Keyless bridge to JobYap's hosted job search, letting an assistant browse postings, rank matches for a candidate, and read job details and community threads.

What you can do
  • Search and browse postings with structured filters (title, company, location, work mode, freshness, comments)
  • Rank live postings for one candidate from a resume, skills, experience or visa needs
  • Read a single posting in full, including salary, locations, apply link and dates
  • Read a job's community discussion thread with like counts
  • Resolve place names to location identifiers, list tracked companies, and report aggregate job stats
  • Run natural-language search and fetch the full document for a result id
When to use it
Useful when someone wants an assistant to explore who is hiring, filter openings by place, company or remote work, or shortlist postings against a specific candidate profile. Also handy for reading a posting's details and its community discussion.
Requirements
Runs as a local process via npx or Docker; needs network access to the hosted JobYap endpoint. No account or API key. The optional JOBYAP_MCP_URL variable overrides the default endpoint.
Before you install
All calls are forwarded to a third-party hosted service, so queries and any candidate details you supply (resume text, skills, visa needs) leave the machine. Read-only: no posting, applying or writing. Comments are user-generated content and may be unreliable.

Installation

In SourceWeft

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

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

jobboard

jobboard is a small keyless bridge to JobYap's hosted job search. JobYap aggregates job postings and the community discussion around them; this package exposes that search as nine MCP tools (and matching CLI subcommands) by forwarding every call to the hosted JobYap MCP endpoint. Read-only, no account, no API key.

Two of the tools do the heavy lifting. search_jobs browses the postings with structured filters (title text, companies, locations, remote/hybrid, freshness, discussion activity) and answers in under a second. match_jobs ranks postings for one specific candidate — a resume, or described experience, skills and visa needs — by reading each posting's full description, so it can take 10 to 15 seconds. Around them: get_job reads one posting in full, get_job_comments reads its discussion thread, search_locations resolves a place name to the location identifiers the filters accept, list_companies lists every tracked company with its active job count, get_job_stats reports aggregate counts, and search / fetch are the deep-research pair (natural-language search, then the full document for a result id).

Tools

  • search_jobs — browse, list, count or page through postings with structured filters. Optional: query (substring matched against job titles only), companies (exact names from list_companies), locations (identifiers from search_locations), work_mode (remote or hybrid), posted_within (24h, 7d, 30d), has_comments, sort (recent default, or popular), page_size, cursor, include_total.
  • match_jobs — rank the best live postings for one candidate. titles (title terms; required unless companies is given), exclude_titles, companies, exclude_companies, locations, include_anywhere (default true), work_mode, posted_within (default 7d), candidate_years, needs_sponsorship, skills (rank, never filter), limit (default 15).
  • get_job — one posting in full: markdown description, salary ranges, locations with work mode, apply URL, posting dates and the canonical discussion URL. Required: id (numeric job id, a jobyap.com job URL, or a page slug).
  • get_job_comments — the discussion thread for a job, chronological and threaded, with like counts. Required: id, as above. Comments are user-generated content.
  • search_locations — resolve a free-text place name to location identifiers (country-XX, state-XX-YY, city-XX-YY-name). Required: query (minimum 2 characters); optional limit.
  • list_companies — every company JobYap tracks, with its active job count and company-page URL.
  • get_job_stats — companies tracked, active job count, newest posting date.
  • search — natural-language search over postings; returns result ids, titles and citable URLs for fetch. Required: query.
  • fetch — the full JobYap document for a search result id: the complete posting as markdown plus top community comments. Required: id.

The MCP layer validates each call locally before forwarding: an unknown tool name, arguments that are not a JSON object, or a missing required argument are rejected as invalid params. Well-formed arguments are forwarded exactly as given, and the upstream result comes back verbatim — content, structuredContent and any isError flag.

Configuration

  • JOBYAP_MCP_URL (optional) — override the hosted endpoint. Defaults to https://mcp.jobyap.com/mcp.

Failures are reported as error results whose text starts with jobboard error: (this rebuild's own rendering): transport failures, non-2xx HTTP answers, JSON-RPC errors and unparseable responses from the upstream all take that shape, with the upstream's message or status after the prefix.

Forwarding mechanics

The bridge internals are a labelled reconstruction (the Streamable HTTP session pattern): on the first call the client POSTs an initialize request (protocolVersion 2025-03-26, empty capabilities, clientInfo name jobboard), captures the mcp-session-id response header when one is returned, POSTs notifications/initialized, then POSTs the tools/call request with the session header attached when captured. The session is reused for the life of the process. Every POST carries Content-Type: application/json and Accept: application/json, text/event-stream, and responses may be plain JSON or SSE. tools/list is served locally from the tool definitions captured from the hosted endpoint, so listing tools never touches the network.

CLI

Each tool is a subcommand taking one JSON argument string:

bash
npx @reneturcios/jobboard search_jobs '{"query":"engineer","work_mode":"remote"}'npx @reneturcios/jobboard match_jobs '{"titles":["software engineer"],"skills":["typescript","node"]}'npx @reneturcios/jobboard get_job '{"id":42}'npx @reneturcios/jobboard --version

Output is the forwarded result content as JSON. Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/jobboard mcp

MCP client config:

json
{  "mcpServers": {    "jobboard": {      "command": "npx",      "args": ["-y", "@reneturcios/jobboard", "mcp"]    }  }}

Docker

bash
docker run -i ghcr.io/cloudcorprecords/jobboarddocker run --rm ghcr.io/cloudcorprecords/jobboard get_job '{"id":42}'

Development

bash
npm installnpm run build   # tsc -> dist/npm test        # tsx --test test/*.test.ts (fake fetch only, no network)npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

Source: README.md at commit 604c180

Tools

9

search_jobs

Search jobs

Search JobYap's aggregated job postings with structured filters. Fast (under a second): use it to browse, list, count or page through postings and to answer general questions about who is hiring. To find the best postings for one specific person (a resume, or their experience, skills or visa needs), use match_jobs instead. The text query matches job titles only (case-insensitive substring) — try synonyms or shorter tokens when results are thin. Company names must exactly match values from list_companies; locations must be identifiers from search_locations. work_mode matches jobs explicitly marked remote or hybrid (unmarked means unstated, not onsite). Results are active listings, newest first by default; sort=popular ranks by discussion activity. To paginate, pass next_cursor back as cursor and keep every other argument identical.

Parameterssortquerycursorcompanieslocationspage_sizework_modehas_commentsinclude_totalposted_within

match_jobs

Match jobs to a candidate

Find and rank the best live postings for one specific candidate, such as someone who shared a resume or described their experience, skills or visa needs. Slow: it reads each posting's full description, so a call can take 10 to 15 seconds. For browsing, listing or counting postings, use search_jobs, which answers in under a second. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.

Parameterslimitskillstitlescompanieslocationswork_modeposted_withinexclude_titlescandidate_yearsinclude_anywhereexclude_companiesneeds_sponsorship

get_job

Get job details

Fetch one job posting in full: markdown description, salary ranges, locations with work mode, derived employment types, apply URL, posting dates and the canonical JobYap discussion URL. Works for expired jobs too (apply_url is null once inactive).

Parametersidrequired

get_job_comments

Get job discussion

Fetch the community discussion thread for a job: chronological, threaded via parent_id, with like counts. Comments are user-generated content. Threads stay open after a job expires.

Parametersidrequired

search_locations

Search locations

Resolve a free-text place name ("toronto", "Japan", "Texas") to the location identifiers search_jobs accepts (country-XX, state-XX-YY, city-XX-YY-name). Searches every place JobYap knows, not only those with current openings, so an identifier may match no jobs. City display omits the state, and the list can be shorter than limit.

Parameterslimitqueryrequired

list_companies

List companies

List every company JobYap tracks with its active job count and JobYap company-page URL. Use the exact names as search_jobs company filters.

Takes no parameters.

get_job_stats

JobYap stats

Aggregate stats: companies tracked, active job count, and the newest posting date.

Takes no parameters.

fetch

Fetch JobYap document (deep research)

Retrieve the full JobYap document for a search result id: the complete posting as markdown (description, salary, locations, apply link) plus top community comments, with a citable URL.

Parametersidrequired

Version history

1
  1. v0.1.0LatestNov 4, 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 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts