Project · gcp-mcp-standalone

Adzuna Connector

A **Native** mcp-broker connector (in-process tools, `auth_mode=none` — no browser OAuth, no broker token store) added 2026-07-09. It gives every broker client (claude.ai desktop + mobile, Claude Code, the Telegram bot) **read-only** access to the [Adzuna](https://developer.adzuna.com/) jobs API — job search aggregated across many boards, plus salary distribution / history for comp benchmarking and employer research. Built to mirror the [[gcp-mcp-standalone/connectors-gitlab|gitlab]] and [[gcp-mcp-standalone/connectors-gcp-tailscale|gcp/tailscale]] native connectors.

type componentstatus activemcp · adzuna · connector · jobs

Key points

  • Adzuna (/proxy/adzuna) — 5 read-only tools: search_jobs, salary_histogram (salary distribution for a role/location), salary_history (mean salary over time — comp trend), top_companies (employer research), list_categories (e.g. it-jobs).
  • Credential: an app_id + app_key pair (Adzuna free tier), supplied via the broker env (ADZUNA_APP_ID, ADZUNA_APP_KEY); secrets in Secret Manager adzuna-app-id / adzuna-app-key, restored on rebuild by Ansible. Default country pinned by ADZUNA_COUNTRY (default gb); an optional per-call country is validated against a fixed allow-list before it enters the URL path.
  • No write surface — the Adzuna API is search/aggregation only; the connector exposes read verbs exclusively.
  • Hardening: the country path segment is allow-list-validated; numeric params (page, results_per_page, salary_min, months) are clamped; upstream errors are sanitized and — critically — never echo the request URL, because the app_key rides in the query string.
  • Security model: matches the other native connectors — credential is read-only at the API level and the connector implements only read verbs. Worst realistic abuse is disclosure of public jobs/salary data the free-tier key can already read.

Add it as a client connector

Add Adzuna in a Claude client at https://bobsmcp.uk/proxy/adzuna/mcp (trailing /mcp — see gcp-mcp-standalone/adr/0007-per-connector-mcp-endpoint-urls). Account-level, so it mirrors to the mobile app automatically.

Details

Code: BobMck/mcp-broker branch connectors, src/connectors/adzuna/ (11 unit tests incl. an app_key-non-leak check; full suite 913 green, ruff clean; PR #2). Infra (gcp-mcp-standalone): ansible/install.yml (fetch adzuna-app-id / adzuna-app-key from Secret Manager → .env, no_log), ansible/templates/settings.yaml.j2 (registration). Go-live needs an Adzuna app (app_id + app_key) stored as the two Secret Manager secrets, then a deploy.

Sources

Compiled from wiki/projects/gcp-mcp-standalone/connectors-adzuna.md · git is the source of truth