Search public Lever job boards: resolve a company, read its openings, read one in full.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Lever is recruiting software that thousands of companies use to run their hiring, and every customer gets a public job board that comes with it. Each board carries that company's open positions with their title, their location, the team and department they sit in, the commitment they ask for, the full advert, and the salary range where the company chose to publish one. Lever hosts one board per company, on either its global or its European instance, and publishes no index across them.
This server connects a chat client to those boards. You name the companies you are interested in, and it turns each name into the site name that addresses its board, searches their openings, filters them by location, team, workplace type, country, salary or how recently they were posted, reads one opening in full, and lists the wordings each company filters by. It needs no API key and no account.
One-click install
Claude Code
Claude Desktop, Cursor, and any client using the standard config format
Node 24 or later is required, and no environment variable has to be set.
-i keeps stdin open, which is where the protocol travels, and -t is left out
because a TTY rewrites the stream. The container needs outbound HTTPS to
api.lever.co and api.eu.lever.co, and nothing else: no volume, no port, no
credential.
Download mcp-lever-2.0.1.mcpb from
the latest release and
open it. A client that supports MCP bundles installs it on its own, with no npm
and no configuration file to edit. The bundle carries its dependencies, so
nothing is fetched at install time.
Every question starts from a company, since Lever offers no search across boards.
search_jobs resolves the names you give it, so no preparation is needed:
| Tool | What it does |
|---|---|
resolve_company | Turns company names into the Lever site names of their boards. |
search_jobs | Searches the openings of the companies you name. |
get_job | Reads one opening in full, advert included. |
list_filter_values | Lists the wordings one company files its openings under. |
A Lever site name distinguishes case, so Flex answers where flex returns
nothing. Four spellings are tried per name on each of the two instances, and the
answer lists what was sent, so nothing found is never proof that a company is
absent from Lever.
resolve_companyTurns company names into Lever site names, reporting every instance that answered. It takes a list.
| Argument | Type | Required | What it does |
|---|---|---|---|
names | array of 1 to 25 strings | yes | Company names, or Lever site names you already know. |
In return: one entry per name, carrying input; found, a list of
{ slug, instance, publishes } where publishes is false for a site that exists
and lists nothing today; tried, the spellings sent in order; and cached, true
when this session had already resolved that name. A name answering on both
instances comes back with both, and neither is elected: pass the one you mean to
the other tools.
search_jobsSearches the openings of the companies named. Lever applies the filters it supports on its own exact wording, and this server applies the rest to the openings it read.
| Argument | Type | Required | What it does |
|---|---|---|---|
companies | array of 1 to 25 strings | yes | Company names or Lever site names. Each is resolved here. |
keyword | string | no | Words to look for in the title and the advert. |
location | array of 1 to 20 strings | no | Locations, exactly as Lever writes them. |
team | array of 1 to 20 strings | no | Teams, exactly as Lever writes them. |
department | array of 1 to 20 strings | no | Departments, exactly as Lever writes them. |
commitment | array of 1 to 20 strings | no | Commitments, exactly as Lever writes them. |
workplace_type | array of 1 to 4 strings | no | remote, hybrid, onsite or unspecified. |
country | array of 1 to 20 two-letter codes | no | Countries as ISO codes, as in FR or US. |
salary_min | number, 0 or more | no | The lowest upper bound of a salary range to keep. |
salary_interval | string | no | The period salary_min is written in, such as per-year-salary. |
currency | three-letter code | no | The currency salary_min is written in, as in EUR. |
posted_within_days | integer, 1 to 3650 | no | How recent an opening must be. |
limit | integer, 1 to 100, default 25 | no | Openings to read per company. |
skip | integer, 0 to 100000, default 0 | no | Openings to step over per company. |
Lever itself applies location, team, department and commitment; this
server applies keyword, workplace_type, country, salary_min,
salary_interval, currency and posted_within_days to what it read.
list_filter_values publishes the wordings the first four take, and a wording
Lever does not know comes back as an empty list.
In return: jobs, each carrying id and company_slug, which get_job
takes, plus title, location, all_locations, country, workplace_type,
team, posted_at, url and apply_url. commitment and department are
absent when the company records neither. salary is null for an opening
published without one, which is never the same as zero, and it carries the
interval Lever wrote it in, never converted or annualised. per_company gives
one outcome per company, with a status of read, unresolved, empty or
failed, which are four different answers, and the read and returned counts
around the filters. total_available is always null: Lever publishes no result
count. The rows carry no advert text, since one company's board can run to
megabytes.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-lever)<a href="https://allmcps.com/mcp/mcp-lever"><img src="https://allmcps.com/api/badge/mcp-lever?style=directory" alt="MCP Lever on AllMCPs" /></a>