Skip to main content
ClaudeWave

Jobo jobs MCP server (jobo-jobs-mcp) — job search tools for AI assistants. One-way mirror of the Jobo monorepo; PRs are not accepted here.

MCP ServersRegistry oficial0 estrellas0 forksTypeScriptMITActualizado today
Install in Claude Code / Claude Desktop
Method: NPX · jobo-job-search-mcp
Claude Code CLI
claude mcp add jobo-mcp -- npx -y jobo-job-search-mcp
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "jobo-mcp": {
      "command": "npx",
      "args": ["-y", "jobo-job-search-mcp"],
      "env": {
        "JOBO_API_URL": "<jobo_api_url>",
        "MCP_RESOURCE_URL": "<mcp_resource_url>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
Detected environment variables
JOBO_API_URLMCP_RESOURCE_URL
Casos de uso

Resumen de MCP Servers

# Jobo Job Search MCP Server

Remote MCP server exposing Jobo's live job index — millions of listings collected from employer career
sites and 100+ applicant tracking systems — to LLM clients.

Full client setup (Claude, ChatGPT, Cursor, Codex CLI) and the tool reference:
[jobo.world/docs/connectors/mcp](https://jobo.world/docs/connectors/mcp).

- **Transport:** Streamable HTTP, single `/mcp` endpoint, stateless. Serves MCP spec **2026-07-28**
  natively and every 2025-era client through the built-in legacy fallback (SDK v2
  `createMcpHandler`, one factory for both eras).
- **Auth:** OAuth 2.1. This is a Resource Server; the Authorization Server is the Jobo API. Clients log in
  with their Jobo account — no API key copy-paste. Required scope: `jobs:read`.

## Self-hosting

The hosted deployment is `https://jobs-mcp.jobo.world`. To run your own copy instead:

```bash
npx jobo-job-search-mcp
```

Starts the Streamable HTTP server on `$PORT` (default `3002`); point your client at
`http://localhost:3002/mcp`. This changes *where* the gateway runs, not its auth model — it's still an
OAuth resource server gated on Jobo account sign-in, since the upstream API validates every request against
the Authorization Server regardless of which copy of the gateway forwarded it. Set `MCP_RESOURCE_URL` to
match whatever host you actually serve it from — see [Configuration](#configuration) below.

## Why this is a separate server

`Jobo.Enterprise/Jobo.Enterprise.Mcp` was deliberately re-scoped to analytics-only in v4, which removed
`search_jobs`, `get_job_details`, `list_filters`, `search` and `fetch`. Adding job tools back there would
undo that decision, so this is a second server against the same External API.

The `/api/mcp/jobs/*` endpoints were never removed — `McpController.cs` still serves them, and its own
comment notes the GET search is "convenient for the canonical ChatGPT `search(query)` tool". This server
is a thin OAuth-forwarding gateway in front of endpoints that were built for it.

The immediate payoff: **`search` + `fetch` restore Deep Research compatibility.** Without that canonical
pair a server cannot be used as a ChatGPT Deep Research connector at all.

## Tools

| Tool | Purpose |
| --- | --- |
| `search` | Canonical Deep Research contract: `{query}` → `{results: [{id, title, url}]}`. |
| `fetch` | Canonical Deep Research contract: `{id}` → `{id, title, text, url, metadata}`. |
| `search_jobs` | Structured search — location, work model, employment type, experience level, source, skills, industries, salary, date, facets, paging. |
| `get_job_details` | Full listing for clients not using the Deep Research contract. |
| `list_filters` | Accepted values for every filter, with live counts. |

`search`/`fetch` deliberately take the minimum arguments the contract allows. Anything with structure
should go through `search_jobs`, where filters are real parameters rather than hopeful free text.

### What `fetch` returns

`text` is self-contained prose, because Deep Research reads it and never opens the URL. It is built from
the AI-extracted fields (responsibilities, qualifications, benefits, compensation) in preference to the
raw employer HTML, which is boilerplate-heavy and frequently longer than it is useful. The raw description
is available via `get_job_details` with `include_description: true`.

## Auth model

The server is a gateway, not the cryptographic authority. The C# External API validates the JWT with
OpenIddict against the same issuer, audience and `jobs:read` scope; verifying the signature a second time
here would only let the two validators drift. So this does the minimum a gateway must:

1. Require a Bearer token; absent → `401` with the resource-metadata challenge, starting the OAuth flow.
2. Cheaply reject an already-expired token (decode `exp`, no signature check) so long-lived clients
   refresh rather than forwarding a dead token.
3. Attach the raw current-request token to `req.auth`, so every tool call forwards the token the client
   just sent — never one captured at session-initialize.

## Stateless by design

No session map. That map lived in process memory, so every restart or redeploy stranded clients with
"No active session", and it pinned the deployment to a single replica. Redis cannot back it either: the
value is a live transport object holding open streams. Each POST is served by a fresh server and transport
with no `mcp-session-id` issued.

## Configuration

| Variable | Default | Notes |
| --- | --- | --- |
| `JOBO_API_URL` | `https://connect.jobo.world` | Upstream External API. |
| `MCP_RESOURCE_URL` | `https://jobs-mcp.jobo.world` | OAuth audience. **Must differ from the analytics server's `mcp.jobo.world`.** |
| `OAUTH_AUTH_SERVER_URL` | `https://enterprise.jobo.world` | Authorization Server. |
| `PORT` | `3002` | Analytics server uses 3001. |

## Development

```bash
npm install && npm run build && npm test
```

```bash
npm run dev
```

### Verifying without credentials

`node --test dist/format.test.js` covers the mapping logic, including that `search` and `fetch` return
exactly the shapes Deep Research requires. For the wire path, point the server at a stub:

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

Then `tools/list` and `tools/call` over HTTP with any JWT-shaped bearer whose `exp` is in the future —
the gateway forwards it and the stub answers. A real token is only needed against the live API.

## Registry listing

Published to the official MCP Registry as **`world.jobo/job-search`** (the `mcpName` in `package.json`;
`server.json` in this directory is the registry manifest). Publishing is automated: the `mcp-v*` tag
workflow publishes npm first, then pushes `server.json` to the registry under the DNS-TXT-verified
`world.jobo/*` namespace — see `../RELEASING.md`. There is no review queue and aggregators poll roughly
hourly. Note the official registry has **no per-server web page** by design — it is a metadata API for
aggregators. The downstream surfaces differ: PulseMCP emits a dofollow link, Glama and mcp.so are
`nofollow`. Manual directory submissions (Claude, ChatGPT, aggregator claims) live in
`../MCP-DISTRIBUTION.md`.

Lo que la gente pregunta sobre jobo-mcp

¿Qué es JoboAI/jobo-mcp?

+

JoboAI/jobo-mcp es mcp servers para el ecosistema de Claude AI. Jobo jobs MCP server (jobo-jobs-mcp) — job search tools for AI assistants. One-way mirror of the Jobo monorepo; PRs are not accepted here. Tiene 0 estrellas en GitHub y se actualizó por última vez today.

¿Cómo se instala jobo-mcp?

+

Puedes instalar jobo-mcp clonando el repositorio (https://github.com/JoboAI/jobo-mcp) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.

¿Es seguro usar JoboAI/jobo-mcp?

+

JoboAI/jobo-mcp aún no ha sido auditado por nuestro agente de seguridad. Revisa el repositorio original en GitHub antes de usarlo en producción.

¿Quién mantiene JoboAI/jobo-mcp?

+

JoboAI/jobo-mcp es mantenido por JoboAI. La última actividad registrada en GitHub es de today, con 0 issues abiertos.

¿Hay alternativas a jobo-mcp?

+

Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.

Despliega jobo-mcp en tu cloud

Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.

¿Mantienes este repo? Añade un badge a tu README

Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.

Featured on ClaudeWave: JoboAI/jobo-mcp
[![Featured on ClaudeWave](https://claudewave.com/api/badge/joboai-jobo-mcp)](https://claudewave.com/repo/joboai-jobo-mcp)
<a href="https://claudewave.com/repo/joboai-jobo-mcp"><img src="https://claudewave.com/api/badge/joboai-jobo-mcp" alt="Featured on ClaudeWave: JoboAI/jobo-mcp" width="320" height="64" /></a>

Más MCP Servers

Alternativas a jobo-mcp