adzuna-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@adzuna-mcpshow salary distribution for software engineer in London"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
adzuna-mcp
⚠️ Moved. This server now lives in the job-hunt monorepo at
job-hunt/connectors/adzuna-mcp. This standalone repo is archived (read-only) and kept only for existing links. Get the current version, docs, and setup there.
A local stdio MCP server wrapping the Adzuna API. Built to sit alongside a listings source like Indeed: Indeed finds ads, Adzuna adds the salary and market data that listings boards don't expose — distributions, trends, regional vacancy counts and employer leaderboards.
Tools
Tool | What it gives you |
| Job ads with salary range, contract type, category, |
| Valid |
| Salary distribution for a role/location — is £45k ambitious or low? |
| Month-by-month average salary trend |
| Vacancy counts by sub-region; also how you discover |
| Top 5 employers by vacancy count + their average salary |
| Predicted salary for a title + description (Adzuna Jobsworth) — price a role that states no salary |
All tools are read-only and take country (default gb) and response_format
(markdown for compact reading, json for programmatic use).
Related MCP server: mcp-adzuna
Using it with /cv-tailor
The intended loop when tailoring a CV to a target role:
Find live ads.
adzuna_search_jobswithwhat_phrase(exact role),where+distance, andmax_days_oldto skip stale posts. Sort fresh-first withsort_by=date.adzuna_search_jobs(what_phrase="audio visual technician", where="london", distance=20, max_days_old=30, sort_by="date")Read the full JD. Each result gives only a snippet — fetch its
redirect_urlfor the complete description, then feed that into/cv-tailoras the job spec.Heads-up: Adzuna's
…/jobs/details/<id>page is JavaScript-rendered, so a plain HTTP fetch returns an empty shell. Read it with a JS-capable fetch (Claude-in-Chrome), or follow the…/jobs/land/ad/<id>redirect variant, which forwards to the employer's ATS where the full JD is usually server-rendered. This is Adzuna's frontend behaviour, not a server bug.Price a role with no stated salary. Many ads omit pay.
adzuna_estimate_salary(title, description)returns Adzuna's predicted figure so you can set expectations before applying.Sanity-check your target £.
adzuna_salary_histogram(what=...)shows where a figure sits in the live market;adzuna_salary_historyshows whether pay is trending up or down.Build an outreach list.
adzuna_top_companies(what=...)surfaces who is hiring at volume for the role — feed acanonical_nameback intoadzuna_search_jobscompanyto see their ads.
Cowork//cv-tailor sessions read and write files under C:\Users\flhso\Claude
(coworkUserFilesPath), so drop JDs and CV drafts there to keep them in view.
The one real limitation
Adzuna returns only a snippet of each job description. Every search result carries a
redirect_url. To get a full JD you fetch that URL yourself. This is why the pairing with a
crawler matters: Adzuna is a fast, filterable, salary-aware index; the full text lives behind
the redirect.
Setup
Register at https://developer.adzuna.com/signup for a free
app_id/app_key. (Note: this is a separate account from a normal adzuna.co.uk jobseeker login.)Install:
cd adzuna-mcp
uv venv && uv pip install mcp httpx python-dotenv
# or: python -m venv .venv && .venv/bin/pip install mcp httpx python-dotenvFor local runs (and the mcp-inspector verify step below), copy .env.example to
.env and fill in your app_id / app_key — server.py loads it automatically.
Real env vars still win over .env, so the .mcp.json env block below keeps working.
Wire it into Claude Code —
.mcp.jsonin your project, orclaude mcp add:
{
"mcpServers": {
"adzuna": {
"command": "python",
"args": ["D:\\soh-workspace\\projects\\adzuna-mcp\\server.py"],
"env": {
"ADZUNA_APP_ID": "your_app_id",
"ADZUNA_APP_KEY": "your_app_key"
}
}
}
}Use the absolute path to the venv's python (.venv\Scripts\python.exe on Windows) if the
dependencies aren't on your global interpreter.
Verify before wiring it up:
npx @modelcontextprotocol/inspector python server.pyCountry support
gb us at au br ca de fr in nz pl za — annual salaries, local currency.
The server accepts any two-letter code and lets Adzuna's 404 tell you if one isn't served, so
the list staying accurate isn't a hard dependency.
Rate limits
Adzuna's default free/trial limits (per their Terms of Service) are 25 hits/min, 250/day,
1000/week, 2500/month. The server surfaces a 429 with a clear message. Prefer fewer, wider
queries over many narrow ones; adzuna_salary_histogram answers "what does this pay?" in one
call where a paginated search would take several.
Trial-tier data also can't be republished or aggregated into ongoing work beyond the 14-day evaluation without a licence — fine for personal job-hunt research, worth knowing before you build anything public on it.
Notes
Keyword semantics matter.
whatANDs its words — every word must appear, sowhat="plant science research assistant agronomist"matches almost nothing. Usewhat_orto match ANY of several terms in one call,what_phrasefor an exact phrase, ortitle_onlyto restrict to the job title. There is no cross-field OR, so for genuinely different role titles run one search per variant (or list them in a singlewhat_or).location0/1/2are exact strings, not free text. Get them fromadzuna_regional_breakdown— theareaarray on each result is literally the values to pass back in.where="United Kingdom"narrows to almost nothing — use a city +distance, or omitwhereand rely onlocation0/1/2.where+distanceis the free-text alternative and is usually easier.salary_is_predicted: 1means Adzuna estimated the figure; the ad didn't state it. Don't quote predicted numbers as if the employer published them.Not implemented:
version. A small addition if wanted.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides AI assistants with access to the Adzuna Job Search API to search millions of job listings, analyze salary data, and research top employers across 12 countries with comprehensive filtering options.714MIT
- Alicense-qualityCmaintenanceProvides access to Adzuna's global job-board aggregation, enabling job search, salary analysis, and regional stats via natural language queries.8MIT
- Alicense-qualityCmaintenanceIntegrates with Lightcast APIs to search job titles, extract skills from text, and access career data for analysis.5MIT
- AlicenseAqualityCmaintenanceProvides job search, local resume parsing, and resume-to-job matching via official APIs and local file processing.5MIT
Related MCP Connectors
Tech job market intelligence: jobs, companies, salaries, skill velocity, hiring trends.
Adzuna MCP — global job-board aggregator
Unified jobs search over official feeds + ATS boards (USAJOBS, Adzuna, Muse, Greenhouse, Lever...)
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soheilfallah/adzuna-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server