anzsco-mcp
anzsco-mcp
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 |
| Fuzzy search by job title or technology. Handles synonyms — |
|
| Full occupation detail: title, ANZSCO group, skills assessment authority, occupation lists (MLTSSL/STSOL/ROL), eligible visa subclasses |
|
| Occupation + visa eligibility combined — is this code on the skills list? What's the assessment pathway? |
|
| Does a given state currently nominate this occupation? Points bonus (+5 for 190, +15 for 491) |
|
| Most recent SkillSelect round: date, total invitations, breakdown by subclass, points cutoffs | (no params) |
| All occupations eligible for a given visa subclass |
|
| All occupations nominated by a given state |
|
| Side-by-side comparison of 2–5 occupation codes across visas, states, and lists |
|
Live Endpoint
https://mcp.anzsco.com.au/Method | Path | Purpose |
|
| MCP JSON-RPC 2.0 endpoint |
|
| Root manifest JSON |
|
| MCP discovery manifest |
|
| Smithery scanner manifest |
|
| Human-readable tool catalogue |
|
| 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 deployThe 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 |
| 5 min CF edge |
SkillSelect rounds |
| 5 min CF edge |
Tech synonyms mapping | Bundled in | N/A (in-memory) |
State nominations |
| 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 dataStateless — 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
Smithery: smithery.ai/server/anzsco-mcp (pending)
Docs / demo: anzsco.com.au/ai
Contributing
Contributions welcome. The most useful additions are:
Updating occupation data when ANZSCO publishes new codes
Adding technology synonyms to
src/synonyms.tsFixing 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.