mcpField
J
Jobo Job Search

Jobo Job Search

远程服务
jobo.world商业与营销04 周前更新

关于 Jobo Job Search

Jobo Job Search 是远程 MCP 服务,向 LLM 客户端开放 Jobo 的实时职位索引。它既支持丰富的结构化职位筛选,也提供适用于 Deep Research 的独立搜索与获取工具。

主要功能

  1. 01使用结构化筛选搜索职位
  2. 02以 Deep Research 格式获取职位
  3. 03获取完整职位详情
  4. 04列出可用筛选项及实时数量
  5. 05将 OAuth 令牌转发至 Jobo API

适用场景

  1. 01按地点、技能或工作模式找职位
  2. 02在 Deep Research 中使用职位结果
  3. 03查看职位详情与描述

MCP 相关

通过无状态的 Streamable HTTP MCP 端点提供职位搜索工具。客户端使用 Jobo 账户通过 OAuth 2.1 认证,并需具备 `jobs:read` 权限范围。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://jobs-mcp.jobo.world/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmjobo-job-search-mcp1.1.0

工具

详细介绍

Jobo 求职搜索 MCP 服务

远程 MCP 服务向 LLM 客户端开放 Jobo 的实时职位索引——这些职位来自雇主招聘网站和 150 多个申请人跟踪系统,累计数百万条。

完整的客户端设置指南(Claude、ChatGPT、Cursor、Codex CLI)和工具参考: jobo.world/docs/connectors/mcp。

  • 传输方式: Streamable HTTP,单一 /mcp 端点,无状态。原生支持 MCP 规范 2026-07-28,并通过内置的旧版回退机制支持所有 2025 年时期的客户端(SDK v2 createMcpHandler,一个工厂同时适用于两个时期)。
  • 身份验证: OAuth 2.1。这是一个资源服务器;授权服务器是 Jobo API。客户端使用 Jobo 账号登录,无需复制粘贴 API 密钥。所需范围:jobs:read。

自托管

托管部署地址为 https://jobs-mcp.jobo.world。如需运行自己的副本:

npx jobo-job-search-mcp

在 $PORT(默认 3002)上启动 Streamable HTTP 服务;将客户端指向 http://localhost:3002/mcp。这只会改变网关的运行位置,不会改变其身份验证模式——它仍是一个要求通过 Jobo 账号登录的 OAuth 资源服务器,因为上游 API 会针对授权服务器验证每个请求,无论请求是由网关的哪个副本转发的。将 MCP_RESOURCE_URL 设置为实际提供服务的主机地址——请参阅下文的配置。

为什么要单独建一个服务

Jobo.Enterprise/Jobo.Enterprise.Mcp 在 v4 中有意重新限定为仅提供分析功能,因此移除了 search_jobs、get_job_details、list_filters、search 和 fetch。在那里重新添加职位工具会推翻这一决定,因此这是一个针对同一 External API 的第二个服务。

/api/mcp/jobs/* 端点从未被移除——McpController.cs 仍在提供这些端点,其自身的注释也指出,GET 搜索“方便用作 ChatGPT 的标准 search(query) 工具”。这个服务是在为其构建的端点前面提供的轻量级 OAuth 转发网关。

直接的好处是:**search + fetch 恢复了 Deep Research 兼容性。**缺少这组标准工具,服务就完全无法用作 ChatGPT Deep Research 连接器。

工具

工具用途
search标准 Deep Research 契约:{query} → {results: [{id, title, url}]}。
fetch标准 Deep Research 契约:{id} → {id, title, text, url, metadata}。
search_jobs结构化搜索——地点、工作模式、雇佣类型、经验级别、来源、技能、行业、薪资、日期、分面、分页。
get_job_details为未使用 Deep Research 契约的客户端提供完整职位信息。
list_filters每个筛选条件的可接受值及实时计数。

search/fetch 有意仅接收契约允许的最少参数。任何结构化查询都应使用 search_jobs,在那里筛选条件是真正的参数,而不是寄希望于自由文本。

fetch 返回的内容

text 是完整自洽的文本,因为 Deep Research 会读取它,而不会打开 URL。它优先采用 AI 提取的字段(职责、任职资格、福利、薪酬),而不是原始雇主 HTML;后者充斥着模板内容,且长度往往超过实际所需。通过 get_job_details 并设置 include_description: true,可以获取原始描述。

身份验证模型

该服务是网关,而非加密验证机构。C# External API 会通过 OpenIddict,使用相同的签发者、受众和 jobs:read 范围验证 JWT;在这里再次验证签名只会让两个验证器逐渐产生偏差。因此,这里只执行网关必须完成的最低限度操作:

  1. 要求提供 Bearer 令牌;缺少令牌时,返回带资源元数据质询的 401,以启动 OAuth 流程。
  2. 快速拒绝已过期的令牌(解码 exp,不验证签名),让长时间运行的客户端刷新令牌,而不是转发失效令牌。
  3. 将当前请求的原始令牌附加到 req.auth,这样每次工具调用都会转发客户端刚发送的令牌,而不会使用在会话初始化时捕获的令牌。

设计为无状态

没有会话映射表。该映射表存放在进程内存中,因此每次重启或重新部署都会让客户端陷入“No active session”状态,也会将部署限制为单个副本。它也无法由 Redis 支持:映射值是一个持有开放流的实时传输对象。每个 POST 请求都由全新的服务和传输处理,且不会签发 mcp-session-id。

配置

变量默认值说明
JOBO_API_URLhttps://connect.jobo.world上游 External API。
MCP_RESOURCE_URLhttps://jobs-mcp.jobo.worldOAuth 受众。必须与分析服务的 mcp.jobo.world 不同。
OAUTH_AUTH_SERVER_URLhttps://enterprise.jobo.world授权服务器。
PORT3002分析服务使用 3001。

开发

npm install && npm run build && npm test
npm run dev
无凭据验证

node --test dist/format.test.js 会覆盖映射逻辑,包括 search 和 fetch 返回的结果是否与 Deep Research 所需的形状完全一致。对于传输路径,可将服务指向一个存根:

JOBO_API_URL=http://localhost:3098 PORT=3097 MCP_RESOURCE_URL=http://localhost:3097 node dist/index.js

然后通过 HTTP 调用 tools/list 和 tools/call,使用任意一个 exp 位于未来的 JWT 格式 Bearer 令牌即可——网关会转发该令牌,存根则会响应。只有在调用线上 API 时才需要真实令牌。

注册表列表

已发布到官方 MCP Registry,名称为 world.jobo/job-search(package.json 中的 mcpName;此目录中的 server.json 是注册表清单)。发布流程已自动化:mcp-v* 标签工作流会先发布到 npm,再将 server.json 推送到经 DNS TXT 验证的 world.jobo/* 命名空间下的注册表——详见 ../RELEASING.md。没有审核队列,聚合器大约每小时轮询一次。请注意,官方注册表按设计不提供单个服务的网页——它是供聚合器使用的元数据 API。下游平台的处理方式各不相同:PulseMCP 会生成 dofollow 链接,Glama 和 mcp.so 则使用 nofollow。手动提交到目录(Claude、ChatGPT、聚合器认领)请参阅 ../MCP-DISTRIBUTION.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。