关于 Jobo Job Search
Jobo Job Search 是远程 MCP 服务,向 LLM 客户端开放 Jobo 的实时职位索引。它既支持丰富的结构化职位筛选,也提供适用于 Deep Research 的独立搜索与获取工具。
主要功能
- 01使用结构化筛选搜索职位
- 02以 Deep Research 格式获取职位
- 03获取完整职位详情
- 04列出可用筛选项及实时数量
- 05将 OAuth 令牌转发至 Jobo API
适用场景
- 01按地点、技能或工作模式找职位
- 02在 Deep Research 中使用职位结果
- 03查看职位详情与描述
MCP 相关
通过无状态的 Streamable HTTP MCP 端点提供职位搜索工具。客户端使用 Jobo 账户通过 OAuth 2.1 认证,并需具备 `jobs:read` 权限范围。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://jobs-mcp.jobo.world/mcpclaude mcp add --transport http world-jobo-job-search https://jobs-mcp.jobo.world/mcp{"mcpServers":{"world-jobo-job-search":{"type":"http","url":"https://jobs-mcp.jobo.world/mcp"}}}在 Cursor 中打开{"servers":{"world-jobo-job-search":{"type":"http","url":"https://jobs-mcp.jobo.world/mcp"}}}在 VS Code 中打开{"mcpServers":{"world-jobo-job-search":{"type":"http","url":"https://jobs-mcp.jobo.world/mcp"}}}{"mcpServers":{"world-jobo-job-search":{"serverUrl":"https://jobs-mcp.jobo.world/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
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 v2createMcpHandler,一个工厂同时适用于两个时期)。 - 身份验证: 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;在这里再次验证签名只会让两个验证器逐渐产生偏差。因此,这里只执行网关必须完成的最低限度操作:
- 要求提供 Bearer 令牌;缺少令牌时,返回带资源元数据质询的
401,以启动 OAuth 流程。 - 快速拒绝已过期的令牌(解码
exp,不验证签名),让长时间运行的客户端刷新令牌,而不是转发失效令牌。 - 将当前请求的原始令牌附加到
req.auth,这样每次工具调用都会转发客户端刚发送的令牌,而不会使用在会话初始化时捕获的令牌。
设计为无状态
没有会话映射表。该映射表存放在进程内存中,因此每次重启或重新部署都会让客户端陷入“No active session”状态,也会将部署限制为单个副本。它也无法由 Redis 支持:映射值是一个持有开放流的实时传输对象。每个 POST 请求都由全新的服务和传输处理,且不会签发 mcp-session-id。
配置
| 变量 | 默认值 | 说明 |
|---|---|---|
JOBO_API_URL | https://connect.jobo.world | 上游 External API。 |
MCP_RESOURCE_URL | https://jobs-mcp.jobo.world | OAuth 受众。必须与分析服务的 mcp.jobo.world 不同。 |
OAUTH_AUTH_SERVER_URL | https://enterprise.jobo.world | 授权服务器。 |
PORT | 3002 | 分析服务使用 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。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。