Jobboard

io.github.CloudCorpRecords由 GitHub 帳號 CloudCorpRecords 發布v0.1.0更新於 Nov 7, 2026

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

概覽

AI 產生的概覽

免金鑰的 JobYap 職缺搜尋轉送用戶端,讓助理瀏覽職缺、為特定求職者排序媒合,並查看職缺詳情與社群討論。

可以做什麼
  • 依職稱、公司、地點、工作模式、刊登時間、留言等結構化條件搜尋與瀏覽職缺
  • 依履歷、技能、經驗或簽證需求為某位求職者排序現有職缺
  • 讀取單一職缺的完整內容,包括薪資、地點、應徵連結與刊登日期
  • 讀取職缺的社群討論串與按讚數
  • 將地名解析為地點識別碼、列出收錄公司,並提供職缺彙總統計
  • 進行自然語言搜尋,並依結果 id 取得完整文件
適用情境
適合讓助理了解有哪些公司在招募、依地點、公司或遠端條件篩選職缺,或針對特定求職者背景挑選職缺。也適合查看某個職缺的詳細內容與社群討論。
執行需求
透過 npx 或 Docker 以本機程序執行,需要能連線至 JobYap 託管端點的網路。不需帳號或 API 金鑰。可選環境變數 JOBYAP_MCP_URL 可覆寫預設端點。
安裝前請注意
所有呼叫都會轉送到第三方託管服務,因此查詢內容及你提供的求職者資訊(履歷文字、技能、簽證需求)會離開本機。僅供唯讀,不會刊登職缺、投遞或寫入資料。留言為使用者產生內容,可能不準確。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Jobboard,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

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

來源:README.md,提交 604c180

工具

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.

輸入參數sortquerycursorcompanieslocationspage_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.

輸入參數limitskillstitlescompanieslocationswork_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).

輸入參數id必填

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.

輸入參數id必填

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.

輸入參數limitquery必填

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.

無需輸入參數。

get_job_stats

JobYap stats

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

無需輸入參數。

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.

輸入參數id必填

版本歷史

1
  1. v0.1.0最新Nov 4, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分