关于 jobhunt
jobhunt 是连接 Jobven 的本地桥接程序,用于搜索从公司招聘网站收集的职位和雇主资料。它适用于求职者及职位数据工作流,支持细致筛选、职位详情、公司查询和示例 Webhook,并将调用转发而非自行搜索。
主要功能
- 01使用多种条件搜索职位
- 02获取完整职位描述
- 03搜索雇主并获取公司资料
- 04生成示例 Webhook 投递
- 05将调用转发至 Jobven
适用场景
- 01按地点、技能或薪资查找职位
- 02阅读选定职位的完整信息
- 03查询雇主资料
- 04使用示例数据测试 Webhook 接收端
MCP 相关
向 MCP 客户端提供五种 Jobven 工具,用于职位与公司查询及 Webhook 示例。它将工具调用转发至托管的 Jobven MCP 服务,并返回上游结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
5收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| q | string | 否 | 按完整单词搜索职位名称。单词按任意顺序进行 AND 匹配;"double quotes" 用于匹配精确短语,OR 匹配任意一侧,前置 - 用于排除单词。不区分大小写。不搜索描述(参见 descriptionQuery)。 |
| city | string | 否 | 城市,多个值以逗号分隔;不区分大小写和重音符号 |
| limit | integer | 否 | 每页职位数,默认 10,最多 25 |
| order | enum | 否 | 默认 DESCASC | DESC |
| state | string | 否 | 州、省或地区,多个值以逗号分隔:全名("Ontario"),或美国和加拿大的邮政代码("ON") |
| cursor | string | 否 | 来自上一次 search_jobs 结果的 nextCursor,筛选条件相同 |
| skills | array | 否 | 技能,任意匹配(最多 10 项),例如 ["typescript", "react"] |
| sortBy | enum | 否 | 排序字段(默认 postedAt)postedAt | listedAt | title | company |
| status | enum | 否 | "active"(默认值)或 "closed"active | closed |
| country | string | 否 | ISO 3166-1 alpha-2 国家/地区代码,例如 "US"、"CA"、"GB"。"XX" 匹配完全没有地点信息的职位。 |
| industry | array | 否 | 行业,任意匹配(最多 10 项) |
| language | string | 否 | 所需口语语言,ISO 639-1 代码,例如 "fr" |
| location | string | 否 | 自由文本地点:城市、地区或国家/地区 |
| maxSalary | number | 否 | 年度起始薪酬上限,格式与 minSalary 相同 |
| minSalary | number | 否 | 最低年薪;时薪、日薪、周薪和月薪会按年薪进行比较。除非设置 salaryCurrency,否则使用各职位自身的货币 |
| remoteType | array | 否 | 远程类型,任意一种 |
| listedAfter | integer | 否 | 列出时间不早于此时间(Unix 秒),按 listedAt 筛选:用于增量同步 |
| postedAfter | integer | 否 | 发布时间不早于此时间(Unix 秒) |
| includeTotal | boolean | 否 | 同时统计所有匹配项(较慢) |
| postedBefore | integer | 否 | 发布时间早于此时间(Unix 秒) |
| hasRelocation | boolean | 否 | true:提供搬迁帮助的招聘信息;false:明确表示不提供搬迁帮助的招聘信息 |
| employmentType | array | 否 | 雇用类型,任意一种 |
| salaryCurrency | string | 否 | 薪资的 ISO 4217 货币代码,例如 USD、EUR、PLN |
| experienceLevel | array | 否 | 经验级别,任意一种 |
| descriptionQuery | string | 否 | 按完整单词短语搜索职位描述,按字面匹配且不区分大小写。比其他筛选条件慢;请与 postedAfter 搭配使用。 |
| hasVisaSponsorship | boolean | 否 | true:提供签证担保的招聘信息;false:明确表示不提供签证担保的招聘信息 |
详细介绍
jobhunt
jobhunt 是一个小型本地桥接工具,用于连接托管的 Jobven MCP 服务。该服务从公司招聘网站收集职位信息和雇主 资料。你可以通过它使用一系列丰富的筛选条件搜索职位,包括职位名称和 描述中的短语、远程类型、经验水平、 雇佣类型、技能、行业、语言、地点、 薪资范围、签证担保和发布日期;选择一个 职位以阅读全文;按名称查找雇主; 打开某位雇主的资料;或获取一个示例 webhook 投递,用于测试接收端。
此软件包本身不执行任何搜索。它会在本地返回工具 列表,内容与从在线端点捕获的内容完全一致,并将每次工具调用转发至上游, 原样返回收到的内容。根据捕获的说明,搜索返回的职位以及 单个职位或公司查询都会计入你自己的 Jobven 账户月度额度,而 公司搜索免费。此软件包中的任何功能都无法 申请职位、提交申请、发送消息、 开始结账或创建密钥:它只会通过以下五个调用读取数据, 此外还有一个示例 webhook,不会发送任何内容,也不会生成任何真实签名。
工具
search_jobs— 使用GET /v1/public/jobs的筛选条件搜索 Jobven 职位信息。默认返回 10 个职位(最多 25 个),每个职位描述附带纯文本摘要;get_job可获取完整文本。使用相同筛选条件将nextCursor作为cursor传回,即可获取下一页。每个返回的职位都会计入月度配额。所有参数均为可选:q(职位名称关键词;按任意顺序进行 AND 匹配,使用"double quotes"精确匹配短语,使用OR匹配任一词项,使用前导-排除;不区分大小写;不搜索职位描述)、descriptionQuery(职位描述中的完整词语短语,按字面匹配;不区分大小写;速度较慢,建议与postedAfter搭配使用)、remoteType(onsite、remote、hybrid、flexible)、experienceLevel(entry、mid、senior、lead、executive)、employmentType(full_time、part_time、contract、internship、seasonal、volunteer、temporary、per_diem、other)、skills、industry、language(ISO 639-1 代码)、location、country(ISO 3166-1 alpha-2;XX可匹配没有地点信息的职位)、state、city、minSalary、maxSalary、salaryCurrency(ISO 4217 代码)、hasVisaSponsorship、hasRelocation、status(active为默认值,或closed)、postedAfter、postedBefore、listedAfter(Unix 秒)、sortBy(postedAt、listedAt、title、company)、order(ASC或DESC,默认值为DESC)、includeTotal、cursor和limit(1-25,默认值为 10)。get_job— 根据id获取一条 Jobven 职位信息及完整描述(GET /v1/public/jobs/{id})。必填:id(来自search_jobs的职位 ID,UUID 格式)。可选:descriptionFormat(plain为默认值,或markdown)。每条职位计入月度配额。search_companies— 按名称查找 Jobven 收录职位的雇主(GET /v1/public/companies)。返回id、name和website;get_company可获取公司资料。免费:公司搜索不计入配额。所有参数均为可选:search(名称包含此文本)、status(active或inactive;未设置时两者均包含)、isVerified、sortBy(name、foundedYear、totalJobsPosted、activeJobsCount、createdAt)、sortOrder(ASC或DESC)、page(从 1 开始)和limit(1-25,默认值为 10)。get_company— 根据id获取一位雇主的资料(GET /v1/public/company-profiles/{id}):业务内容、行业、规模、成立年份、总部和社交链接。必填:id(来自search_companies的公司 ID)。每条计入月度配额。webhook_example— 一个 Jobven webhook 事件的示例投递:接收方实际收到的原始请求正文和标头,使用示例密钥签名,并附带 webhook 文档中的 TypeScript、Python 或 Go 签名验证器。验证器可接受该示例,因此可以端到端测试接收方。不调用 API,无需密钥,免费。必填:event(job.created、job.updated、job.closed、job.deleted)和language(typescript、python、go)。
配置
JOBVEN_MCP_URL(可选)— 覆盖上游端点。默认值为https://api.jobven.com/mcp。(此覆盖钩子是本次重建自行标注的还原内容。)JOBVEN_API_KEY(可选)— 设置后,每个上游请求都会携带X-API-Key: <value>标头,其中包含调用方自己的 Jobven API 密钥。未设置时,不会发送密钥标头。(原始注册记录指定了必需的X-API-Key密钥标头,因此标头名称是确定的;该记录未指定包的环境变量名称,因此从此环境变量转发密钥是经过标注的还原内容——原始接口是在不提供密钥的情况下捕获的。)
转发机制
首次调用工具时,客户端会在上游打开一个可流式传输的
HTTP 会话:先发送 JSON-RPC initialize
请求(protocolVersion 为 2025-03-26,clientInfo
名称为 jobhunt),然后发送
notifications/initialized 通知,最后发送携带调用方参数且保持不变的
tools/call 请求。当上游在 initialize 的响应中返回
Mcp-Session-Id 标头后,该值会附加到此会话的每个后续请求中;此会话会在进程运行期间一直复用。
响应可能是普通 JSON,也可能是服务器发送的事件;两种格式都会读取。
上游的成功结果会原样传递,包括上游设置的任何 isError 标志。
失败情况——JSON-RPC 错误、非 2xx 状态、无法读取响应,或无法完成的请求——会作为 isError 结果返回,其文本以 jobhunt error: 开头(此呈现方式是本次重建中特意标注的内容)。
命令行界面
每个工具也可作为子命令使用,并接受一个 JSON 参数字符串:
npx @reneturcios/jobhunt search_jobs '{"q":"typescript","remoteType":["remote"]}'
npx @reneturcios/jobhunt get_job '{"id":"00000000-0000-0000-0000-000000000000"}'
npx @reneturcios/jobhunt search_companies '{"search":"acme"}'
npx @reneturcios/jobhunt get_company '{"id":42}'
npx @reneturcios/jobhunt webhook_example '{"event":"job.created","language":"python"}'
npx @reneturcios/jobhunt --version
退出代码:成功时为 0,结果为 isError 时为 1,用法错误时为 2。
MCP 服务
npx -y @reneturcios/jobhunt mcp
MCP 客户端配置:
{
"mcpServers": {
"jobhunt": {
"command": "npx",
"args": ["-y", "@reneturcios/jobhunt", "mcp"]
}
}
}
Docker
docker run -i ghcr.io/cloudcorprecords/jobhunt
docker run --rm ghcr.io/cloudcorprecords/jobhunt --version
容器的默认命令是 mcp,因此第一种形式是 stdio MCP 服务;其他参数则会正常传递给命令行界面。
开发
npm install
npm run build
npm test
npm run dev
测试套件完全使用存根 JSON-RPC 上游运行,不会发起实时网络调用。
许可证
MIT——请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。