JobYap Job Search

Search job postings aggregated from companies' careers sites, plus each job's discussion thread.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
74%
命名品質
98%
汙染風險
100%
權限相符程度
90%
協定合規性
100%

發現項目(1)

  • LOWTool 'fetch' suggests web access but openWorldHint=false在 fetch 中

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,576Token(工具定義)
~2.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.01%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "jobs": {
      "command": "npx",
      "args": [
        "jobyap-mcp"
      ]
    }
  }
}

可執行的套件

npmjobyap-mcp1.1.0stdio

遠端端點

https://mcp.jobyap.com/mcpstreamable-http

它能做什麼

工具清單

工具(9)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢search_jobs(query, companies, locations, work_mode, posted_within, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Substring matched against job titles only.",
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "companies": {
      "description": "Exact company names from list_companies.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "locations": {
      "description": "Location identifiers from search_locations, e.g. city-US-CA-san_francisco.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100,
        "pattern": "^(?:country-[A-Za-z]{2}|state-[A-Za-z]{2}-(?=\\S)[^-\\r\\n]{1,64}|city-[A-Za-z]{2}-(?=\\S)[^-\\r\\n]{1,64}-\\S{1,80})$"
      }
    },
    "work_mode": {
      "type": "string",
      "enum": [
        "remote",
        "hybrid"
      ]
    },
    "posted_within": {
      "description": "Hard freshness filter on the publish date.",
      "type": "string",
      "enum": [
        "24h",
        "7d",
        "30d"
      ]
    },
    "has_comments": {
      "description": "Only jobs with community discussion.",
      "type": "boolean"
    },
    "sort": {
      "description": "recent (default) or popular (most discussed).",
      "type": "string",
      "enum": [
        "recent",
        "popular"
      ]
    },
    "page_size": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "cursor": {
      "description": "Opaque cursor from a previous next_cursor.",
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "pattern": "^[A-Za-z0-9_-]+$"
    },
    "include_total": {
      "description": "Also compute the total match count (slower).",
      "type": "boolean"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢match_jobs(titles, exclude_titles, companies, exclude_companies, locations, ...)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "titles": {
      "description": "Title terms, any of which may match. A term matches when the title contains all its words as whole words, in any order: \"software engineer\" also matches \"Engineer, Software\". Required unless companies is given.",
      "minItems": 1,
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 60
      }
    },
    "exclude_titles": {
      "description": "Title terms that remove a posting, matched like titles, e.g. \"senior\", \"staff\", \"lead\", \"manager\".",
      "minItems": 1,
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 60
      }
    },
    "companies": {
      "description": "Exact company names from list_companies. With titles, a posting must match both.",
      "minItems": 1,
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "exclude_companies": {
      "description": "Company names to leave out, case-insensitive, e.g. the current employer.",
      "minItems": 1,
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 200
      }
    },
    "locations": {
      "description": "country-XX (ISO alpha-2) for a country, or state and city identifiers from search_locations. Omit for worldwide.",
      "minItems": 1,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100,
        "pattern": "^(?:country-[A-Za-z]{2}|state-[A-Za-z]{2}-(?=\\S)[^-\\r\\n]{1,64}|city-[A-Za-z]{2}-(?=\\S)[^-\\r\\n]{1,64}-\\S{1,80})$"
      }
    },
    "include_anywhere": {
      "default": true,
      "description": "With locations, also keep fully remote \"Anywhere\" postings. Default true.",
      "type": "boolean"
    },
    "work_mode": {
      "description": "Only postings explicitly marked remote or hybrid.",
      "type": "string",
      "enum": [
        "remote",
        "hybrid"
      ]
    },
    "posted_within": {
      "default": "7d",
      "description": "Posting window: 24h, 7d (default) or 30d.",
      "type": "string",
      "enum": [
        "24h",
        "7d",
        "30d"
      ]
    },
    "candidate_years": {
      "description": "Candidate years of professional experience; drops postings that require more than one year beyond it.",
      "type": "number",
      "minimum": 0,
      "maximum": 50
    },
    "needs_sponsorship": {
      "default": false,
      "description": "Drop postings that refuse visa sponsorship or require citizenship or a security clearance. Default false.",
      "type": "boolean"
    },
    "skills": {
      "description": "Specific skills and domain terms from the resume, as whole words or phrases. They rank results and never filter.",
      "minItems": 1,
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 40
      }
    },
    "limit": {
      "default": 15,
      "description": "Results to return, default 15.",
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_job(id)

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).

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 2147483647
        },
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 2048
        }
      ],
      "description": "Numeric JobYap job id, a full jobyap.com job URL, or a job page slug."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_job_comments(id)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 2147483647
        },
        {
          "type": "string",
          "minLength": 1,
          "maxLength": 2048
        }
      ],
      "description": "Numeric JobYap job id, a full jobyap.com job URL, or a job page slug."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search_locations(query, limit)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 100,
      "description": "Place name fragment, minimum 2 characters."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 25
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢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.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_job_stats

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

輸入結構描述

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢search(query)

Search JobYap job postings by natural-language query. Matches job titles, falling back to significant keywords when the full phrase finds little. Returns result ids, titles and citable URLs for use with fetch. For structured filtering (location, company, remote, freshness) prefer search_jobs.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "query"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "url": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "url"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "results"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢fetch(id)

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.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "A result id returned by search."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

輸出結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "title": {
      "type": "string"
    },
    "text": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "metadata": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    }
  },
  "required": [
    "id",
    "title",
    "text",
    "url",
    "metadata"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本9 個工具
已驗證未記錄版本9 個工具
已驗證未記錄版本8 個工具