MCP Server
The Ocean of Jobs MCP server lets AI assistants search job listings, read job descriptions, and look up companies directly from Ocean of Jobs.
Server URL: https://oceanofjobs.com/mcp
The server uses Streamable HTTP and requires no API key. All tools are read-only and use the same public data as the website.
Connect a client
Claude Code
Run this in your terminal:
claude mcp add --transport http oceanofjobs https://oceanofjobs.com/mcpStart Claude Code and ask it to search for jobs. To check the connection, run /mcp inside a session.
Claude
In Claude, open Customize, then Connectors, then Add custom connector. Name it Ocean of Jobs and paste the server URL:
https://oceanofjobs.com/mcpThe server needs no sign-in, so leave the advanced settings empty. Turn the connector on in a chat from the tools menu.
ChatGPT
In ChatGPT, open Settings, then Apps & Connectors. Turn on Developer mode, then choose Create and paste the server URL:
https://oceanofjobs.com/mcpChoose no authentication. In a new chat, pick the connector from the tools menu.
Cursor
Add to Cursor opens Cursor with the server filled in, and you confirm there. To add it by hand, put this in ~/.cursor/mcp.json:
{
"mcpServers": {
"oceanofjobs": {
"url": "https://oceanofjobs.com/mcp"
}
}
}VS Code
Add to VS Code opens VS Code with the server filled in, and you confirm there. From a terminal instead:
code --add-mcp '{"name":"oceanofjobs","type":"http","url":"https://oceanofjobs.com/mcp"}'Then start it: run MCP: List Servers from the Command Palette, pick oceanofjobs and choose Start Server. The tools work in Copilot Chat in Agent mode. Check that search_jobs, get_job and get_company are ticked under the tools button.
Gemini CLI
gemini mcp add -s user --transport http oceanofjobs https://oceanofjobs.com/mcp-s user adds it for every folder. Without it, Gemini adds it to the current project only. Gemini loads MCP servers only in folders you have trusted, so gemini mcp list shows the server as disabled until you trust the folder.
Codex
codex mcp add oceanofjobs --url https://oceanofjobs.com/mcpcodex mcp list shows it as enabled.
Hermes Agent
hermes mcp add oceanofjobs --url https://oceanofjobs.com/mcpHermes asks whether the server needs authentication. Answer no. It then connects, lists the three tools and asks which to enable. Run hermes mcp test oceanofjobs to check the connection, and start a new session to use the tools.
Kimi Code
In Kimi Code, run /mcp-config, or edit its mcp.json, and add:
{
"mcpServers": {
"oceanofjobs": {
"url": "https://oceanofjobs.com/mcp"
}
}
}An entry with a url and no transport is an HTTP server. The older kimi-cli is no longer maintained, and its kimi mcp add command no longer saves anything.
Other MCP clients
For clients that accept a JSON configuration, add the following entry:
{
"mcpServers": {
"oceanofjobs": {
"type": "http",
"url": "https://oceanofjobs.com/mcp"
}
}
}If your client only supports locally running MCP servers, you can connect through mcp-remote instead:
{
"mcpServers": {
"oceanofjobs": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://oceanofjobs.com/mcp"]
}
}
}Available tools
The server exposes three read-only tools.
search_jobs
Search for open jobs by keyword, company, location, seniority, workplace type, posting age, or minimum salary.
At least one of query, company, city, or country is required. Results are ranked by relevance when a query is provided, and by posting recency otherwise.
| Argument | Type | Description |
|---|---|---|
query | string | Search job titles, company names, locations, and descriptions. Every word must match, so one or two keywords usually work best. Use quotes to keep a phrase together. |
company | string | Company name or domain, such as wix.com. |
city | string | City name, such as Tel Aviv. |
country | string | Two-letter country code, such as IL or US. |
seniority | string | intern, junior, mid, senior, staff, principal, lead, manager, director, or exec. |
workplace | string | remote, hybrid, or onsite. |
max_age_days | integer | Only return jobs posted within the specified number of days. |
salary_min | integer | Minimum monthly gross salary in shekels. |
limit | integer | Results per call, from 1 to 25. Defaults to 10. |
offset | integer | Pagination offset, from 0 to 200. Defaults to 0. |
Duplicate listings for the same posting are combined into one result. The duplicates_folded field reports how many duplicates were removed.
get_job
Fetch a job by its ID, returned by search_jobs or get_company.
The response includes the job description as plain text, up to 6,000 characters. Check description_truncated to see whether any text was cut off.
The confidence field indicates where the listing data came from:
verified- retrieved from the employer's applicant tracking system (ATS) API.best_effort- extracted from the employer's careers page.
get_company
Look up a company by name or domain.
The response includes its current open-job count, jobs added this week, how long it has been tracked, its newest listings, and its Ocean of Jobs page.
If the name matches multiple companies, other_matches lists the alternatives.
Job data and history
Each job includes two URLs:
url- the listing on Ocean of Jobs.apply_url- the employer's application page.
Job records also include fields that describe how the listing has changed over time.
| Field | Description |
|---|---|
first_seen | When Ocean of Jobs first discovered the listing on the employer's ATS. |
last_seen | The last time a read of the board returned the listing with a change. An unchanged response still confirms the board was checked, even if this timestamp doesn't advance. |
closed_at | When a successful check no longer found the listing. null means it was still present at the most recent check. |
reappeared_at | When the same ATS listing ID returned after being absent from our reads for at least two days. This field has been recorded since October 19, 2026. |
posted_at | The employer's original posting date, when provided by the ATS. |
days_listed | How long the listing has been tracked as listed. |
status | Whether the listing is open or closed. |
summary | A one-sentence description of the listing and its status. |
A reappearance doesn't necessarily mean the employer reposted the job. A temporary failure when checking the employer's board can also make a listing appear to disappear and return. Likewise, an old first_seen date doesn't prove a job was reposted; it means Ocean of Jobs has been tracking that listing for that long.
Limits and caching
- Each call returns at most 25 results.
- Pagination is limited to an offset of 200. Use the REST API for larger result sets.
- Responses may be cached at the edge for up to five minutes, so repeated calls can return the same data.
- If the server reaches its daily capacity, it returns a JSON-RPC error. Capacity resets at 00:00 UTC.
REST API
You can also access Ocean of Jobs data directly through the public REST API. It returns JSON over HTTPS and requires no API key or account.
Use the REST API when you need larger result sets or more direct control over your requests.