Adzuna Jobs MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ADZUNA_APP_ID | Yes | Your Adzuna API App ID from the Adzuna Developer Portal | |
| ADZUNA_APP_KEY | Yes | Your Adzuna API App Key from the Adzuna Developer Portal |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_jobsA | Search for jobs on Adzuna across 12 supported countries. IMPORTANT: All salary figures are ANNUAL amounts in LOCAL CURRENCY. Args: country: ISO 3166-1 alpha-2 country code. Determines job market AND currency. Supported: "gb" (UK/GBP), "us" (USA/USD), "de" (Germany/EUR), "fr" (France/EUR), "au" (Australia/AUD), "nz" (New Zealand/NZD), "ca" (Canada/CAD), "in" (India/INR), "pl" (Poland/PLN), "br" (Brazil/BRL), "at" (Austria/EUR), "za" (South Africa/ZAR) Returns: dict: Search results containing: - count (int): Total matching jobs (for pagination) - results (list): Job listings, each with: - id: Unique job identifier - title: Job title - company.display_name: Employer name - location.display_name: Job location - description: Truncated job description (~150 chars) - redirect_url: URL to apply (via Adzuna redirect) - created: ISO 8601 posting date - salary_min, salary_max: Annual salary range (may be null) - salary_is_predicted: "1" if Adzuna estimated the salary from job description, "0" if the employer explicitly listed the salary. Predicted salaries are less reliable for negotiation. - contract_type: "permanent", "contract", etc. - contract_time: "full_time", "part_time" - category.tag: Category identifier Example response: { "count": 523, "results": [{ "id": "4123456789", "title": "Senior Software Engineer", "company": {"display_name": "Tech Corp"}, "location": {"display_name": "London"}, "salary_min": 70000, "salary_max": 90000, "redirect_url": "https://www.adzuna.co.uk/..." }] } Errors: - Invalid country code: "API Error 400: Invalid country" - Invalid category: "API Error 400: Invalid category tag" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_categoriesA | Get valid job category tags for a specific country. PURPOSE: Use this BEFORE search_jobs to get valid 'category' parameter values. Category tags are COUNTRY-SPECIFIC - always use the same country code here as you will in search_jobs. Args: country: ISO 3166-1 alpha-2 country code. Supported: "gb", "us", "de", "fr", "au", "nz", "ca", "in", "pl", "br", "at", "za" Returns: dict: Contains "results" array of category objects: - tag: Use THIS value in search_jobs category parameter (e.g., "it-jobs") - label: Human-readable name for display (e.g., "IT Jobs") Common category tags (vary by country): - "it-jobs": Technology, software, IT support - "engineering-jobs": Mechanical, electrical, civil - "finance-jobs": Accounting, banking, financial services - "sales-jobs": Sales, business development - "healthcare-nursing-jobs": Medical, nursing - "admin-jobs": Administration, office support - "marketing-jobs": Marketing, PR, communications Example response: { "results": [ {"tag": "it-jobs", "label": "IT Jobs"}, {"tag": "engineering-jobs", "label": "Engineering Jobs"}, {"tag": "finance-jobs", "label": "Accounting & Finance Jobs"} ] } Usage: categories = get_categories("gb") search_jobs(country="gb", category="it-jobs") # Use tag, not label Errors: - Invalid country code: "API Error 400: Invalid country" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_salary_histogramA | Get salary distribution histogram for jobs matching search criteria. PURPOSE: Understand salary ranges in a job market. Useful for: - "What's the typical salary for X role?" - Salary negotiation research - Market positioning analysis IMPORTANT: Only includes jobs WITH listed salaries. Many jobs don't list salary. Args: country: ISO 3166-1 alpha-2 country code. Determines currency. Supported: "gb", "us", "de", "fr", "au", "nz", "ca", "in", "pl", "br", "at", "za" Returns: dict: Contains "histogram" object with salary buckets: - Keys: Salary values as strings (e.g., "30000", "35000") - Values: Number of jobs at that salary point Example response: { "histogram": { "25000": 89, "30000": 234, "35000": 456, "40000": 567, "45000": 489, "50000": 378, "55000": 245, "60000": 167 } } How to interpret: - Keys are ANNUAL salaries in LOCAL CURRENCY - Buckets are typically £5,000 / $5,000 increments - Peak of distribution = most common salary - To find median: find salary where cumulative count reaches 50% Errors: - Invalid country code: "API Error 400: Invalid country" - Invalid category: "API Error 400: Invalid category tag" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_top_companiesA | Get top employers currently hiring, ranked by number of open positions. PURPOSE: Identify major employers in a field. Useful for: - "Which companies are hiring the most engineers?" - Researching potential employers - Understanding market leaders by hiring volume NOTE: Shows hiring VOLUME, not company quality. Smaller great companies may not appear. Args: country: ISO 3166-1 alpha-2 country code. Supported: "gb", "us", "de", "fr", "au", "nz", "ca", "in", "pl", "br", "at", "za" Returns: dict: Contains "leaderboard" array of company objects: - canonical_name: Company name (normalized) - count: Number of open positions - average_salary: Average salary across listings (may be null) Example response: { "leaderboard": [ {"canonical_name": "NHS", "count": 1245, "average_salary": 42000}, {"canonical_name": "Amazon", "count": 567, "average_salary": 65000}, {"canonical_name": "Google", "count": 234, "average_salary": 95000} ] } Notes: - Ranked by job count (most positions first) - Typically returns 10-20 companies - average_salary is ANNUAL in LOCAL CURRENCY (may be null) Errors: - Invalid country code: "API Error 400: Invalid country" - Invalid category: "API Error 400: Invalid category tag" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_geodataA | Get salary and job count data broken down by geographic region. PURPOSE: Compare salaries and job availability across areas. Useful for: - "Where are the highest paying X jobs?" - "Which cities have the most opportunities?" - Relocation decisions Args: country: ISO 3166-1 alpha-2 country code. Supported: "gb", "us", "de", "fr", "au", "nz", "ca", "in", "pl", "br", "at", "za" Returns: dict: Contains "locations" array of region objects: - location.display_name: Region name - location.area: Geographic hierarchy array - count: Number of jobs in region - average_salary: Average salary (may be null) Example response: { "locations": [ { "location": {"display_name": "London", "area": ["UK", "London"]}, "count": 15678, "average_salary": 62000 }, { "location": {"display_name": "Manchester", "area": ["UK", "Manchester"]}, "count": 3456, "average_salary": 48000 } ] } Notes: - Results ordered by job count (most jobs first) - average_salary is ANNUAL in LOCAL CURRENCY - Typically returns 10-20 top regions Errors: - Invalid country code: "API Error 400: Invalid country" - Invalid category: "API Error 400: Invalid category tag" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_salary_historyA | Get historical salary trends over time for matching jobs. PURPOSE: Analyze how salaries have changed. Useful for: - "Are X salaries going up or down?" - Trend analysis for negotiations - Market timing for job searches Args: country: ISO 3166-1 alpha-2 country code. Supported: "gb", "us", "de", "fr", "au", "nz", "ca", "in", "pl", "br", "at", "za" Returns: dict: Contains "month" array of data points: - month: Year-month string (YYYY-MM format) - salary: Average salary that month (annual, local currency) Example response: { "month": [ {"month": "2024-01", "salary": 52000}, {"month": "2024-02", "salary": 52500}, {"month": "2024-03", "salary": 53000} ] } How to analyze: - Compare first vs last month for overall change - Calculate % change: ((last - first) / first) * 100 - Look for consistent direction vs volatility Errors: - Invalid country code: "API Error 400: Invalid country" - Invalid category: "API Error 400: Invalid category tag" - Rate limit exceeded: "API Error 429: Too many requests" - Authentication failure: "API Error 401: Invalid credentials" |
| get_api_versionB | Get the current Adzuna API version. Returns: API version information |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/folathecoder/adzuna-job-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server