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 | |
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose with no overlap. get_categories provides metadata for search_jobs, while get_geodata, get_salary_histogram, get_salary_history, and get_top_companies offer complementary analytical views. The tools are well-differentiated by their specific data retrieval functions.
All tools follow a consistent verb_noun naming pattern with 'get_' or 'search_' prefixes. The naming is uniform across all seven tools, making them predictable and easy to understand. There are no deviations in style or convention.
With 7 tools, the server is well-scoped for job market analysis. It includes a core search function (search_jobs), metadata support (get_categories, get_api_version), and specialized analytical tools (geodata, salary histogram, salary history, top companies). Each tool earns its place without redundancy.
The toolset provides comprehensive coverage for job search and market analysis. It includes core search functionality, metadata retrieval, and multiple analytical dimensions (geographic, salary distribution, historical trends, employer rankings). There are no obvious gaps; agents can perform end-to-end job market research.