Skip to main content
Glama

anzsco-mcp

MCP Cloudflare Workers License: MIT Release Glama

Live endpoint: https://mcp.anzsco.com.au/ — no auth required, no install needed.

Model Context Protocol (MCP) server for anzsco.com.au — lets AI assistants search and explore Australian occupation codes (ANZSCO), visa pathways, state nominations, and the latest SkillSelect invitation round data.

Built as a Cloudflare Worker — stateless, globally distributed, free-tier friendly.


What it does

Australian skilled migration requires matching a job role to an ANZSCO occupation code. The right code determines:

  • Which visa subclasses you can apply for (189 / 190 / 491 / 482 / 186 / 494)

  • Which states and territories can nominate you

  • Which skills assessment authority assesses your qualifications

  • Your SkillSelect points and invitation probability

This MCP server exposes all of that as 8 AI-callable tools, so Claude (and other AI assistants) can answer questions like:

  • "Can a .NET developer apply for visa 189?"

  • "What ANZSCO code is a React developer?"

  • "Does NSW nominate civil engineers for subclass 190?"

  • "What was the latest SkillSelect points cutoff?"


8 Tools

Tool

Description

Example

search_occupations

Fuzzy search by job title or technology. Handles synonyms — .net developer → 261312, react developer → 261212, python data scientist → 224114

query: ".net developer"

get_occupation

Full occupation detail: title, ANZSCO group, skills assessment authority, occupation lists (MLTSSL/STSOL/ROL), eligible visa subclasses

code: "261312"

get_visa_pathway

Occupation + visa eligibility combined — is this code on the skills list? What's the assessment pathway?

code: "261312", subclass: "189"

get_state_nomination

Does a given state currently nominate this occupation? Points bonus (+5 for 190, +15 for 491)

code: "261312", stateCode: "NSW"

get_latest_skillselect_round

Most recent SkillSelect round: date, total invitations, breakdown by subclass, points cutoffs

(no params)

search_by_visa

All occupations eligible for a given visa subclass

subclass: "189"

search_by_state

All occupations nominated by a given state

stateCode: "VIC"

compare_occupations

Side-by-side comparison of 2–5 occupation codes across visas, states, and lists

codes: ["261312", "261313", "261212"]


Live Endpoint

https://mcp.anzsco.com.au/

Method

Path

Purpose

POST

/

MCP JSON-RPC 2.0 endpoint

GET

/

Root manifest JSON

GET

/.well-known/mcp.json

MCP discovery manifest

GET

/.well-known/mcp/server-card.json

Smithery scanner manifest

GET

/tools

Human-readable tool catalogue

GET

/health

Health check

Transport: JSON-RPC 2.0 over HTTP POST. Stateless (no SSE). No authentication required.


Claude Desktop Integration

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "anzsco": {
      "transport": {
        "type": "http",
        "url": "https://mcp.anzsco.com.au/"
      }
    }
  }
}

Restart Claude Desktop — you'll see ANZSCO tools available in the tool selector.


Claude Code (CLI) Integration

claude mcp add anzsco --transport http https://mcp.anzsco.com.au/

curl Examples

MCP_URL="https://mcp.anzsco.com.au"

# Initialize
curl -s -X POST "$MCP_URL/" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","clientInfo":{"name":"test","version":"1.0"},"capabilities":{}}}' | jq .

# List tools
curl -s -X POST "$MCP_URL/" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | jq .result.tools[].name

# Search: .net developer
curl -s -X POST "$MCP_URL/" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_occupations","arguments":{"query":".net developer"}}}' | jq .

# Visa pathway: can 261312 apply for 189?
curl -s -X POST "$MCP_URL/" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":5,"method":"tools/call","params":{"name":"get_visa_pathway","arguments":{"code":"261312","subclass":"189"}}}' | jq .

# Latest SkillSelect round
curl -s -X POST "$MCP_URL/" -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":6,"method":"tools/call","params":{"name":"get_latest_skillselect_round","arguments":{}}}' | jq .

Quick Reference: Common ANZSCO Codes

Technology / Role

ANZSCO Code

Title

.NET / C# developer

261312

Developer Programmer

Java / backend engineer

261313

Software Engineer

React / Vue / frontend

261212

Web Developer

Python / data scientist

224114

Data Scientist

DevOps / Kubernetes

261316

DevOps Engineer

iOS / Android mobile

261312

Developer Programmer

Civil engineer

233512

Civil Engineer

General practitioner (GP)

253111

General Medical Practitioner

Electrician

341111

Electrician (General)


Deploy Your Own

Prerequisites: Node.js 18+, Wrangler CLI, Cloudflare account.

git clone https://github.com/NaveenSharma/anzsco-mcp.git
cd anzsco-mcp
npm install
cp wrangler.toml.example wrangler.toml
# Edit wrangler.toml — set your account_id
npm run deploy

The Worker fetches live data from https://anzsco.com.au/api/ with a 5-minute Cloudflare edge cache. No environment variables or secrets required.


Data Sources

Data

Source

Cache

ANZSCO occupation records

https://anzsco.com.au/api/anzsco/

5 min CF edge

SkillSelect rounds

https://anzsco.com.au/api/skillselect/rounds/latest

5 min CF edge

Tech synonyms mapping

Bundled in src/synonyms.ts

N/A (in-memory)

State nominations

https://anzsco.com.au/api/anzsco/

5 min CF edge


Architecture

AI Client (Claude, etc.)
    │ POST / (JSON-RPC 2.0)
    ▼
Cloudflare Worker (this repo)
    │ fetch with CF edge cache (5 min TTL)
    ▼
anzsco.com.au API
    │
    ▼
ANZSCO database + SkillSelect data
  • Stateless — no persistent storage in the Worker

  • No auth — public read-only occupation reference data

  • Globally distributed — served from 300+ Cloudflare PoPs

  • MCP spec: 2024-11-05


Listings


Contributing

Contributions welcome. The most useful additions are:

  • Updating occupation data when ANZSCO publishes new codes

  • Adding technology synonyms to src/synonyms.ts

  • Fixing SkillSelect round data as new rounds are published

  • Improving tool descriptions for better AI discoverability

PRs and issues welcome at github.com/NaveenSharma/anzsco-mcp.


License

MIT — see LICENSE.

Data sourced from publicly available ANZSCO and Department of Home Affairs records. Not affiliated with the Australian Bureau of Statistics or the Department of Home Affairs.