MCP Job Toolkit
An MCP server that enables searching for jobs across Australian platforms (Seek and LinkedIn) from Claude or any MCP-compatible client, with filters for location, salary, employment type, and more.
Ask AI about MCP Job Toolkit
Powered by Claude Β· Grounded in docs
I know everything about MCP Job Toolkit. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
MCP Job Toolkit
An MCP (Model Context Protocol) server that searches for jobs across Australian job platforms from inside Claude or any MCP-compatible client.
Platforms
| Platform | Notes |
|---|---|
| Seek | Parses Apollo SSR cache from au.seek.com |
| Guest jobs API, includes applicant count where available |
Installation
Prerequisites: Node.js 18+
git clone https://github.com/afrozk/mcp-job-toolkit.git
cd mcp-job-toolkit
npm install
npm run build
Claude Desktop Setup
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mcp-job-toolkit": {
"command": "node",
"args": ["/absolute/path/to/mcp-job-toolkit/dist/index.js"]
}
}
}
Restart Claude Desktop. The search_jobs tool will appear automatically.
Usage
Once connected, ask Claude naturally:
"Find contract backend engineer roles in Melbourne posted in the last 7 days" "Search for full-time data analyst jobs in Sydney with salary above $100k/year on Seek" "Show me software engineer roles in Brisbane with fewer than 20 applicants"
Tool: search_jobs
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keyword | string | required | Job title, role, or skill (e.g. "software engineer") |
location | string | required | Australian city or suburb (e.g. "Melbourne VIC", "Sydney") |
radius | number | 50 | Search radius in km |
employment_type | array | all | "fulltime", "parttime", "contract", "casual" |
salary_type | string | β | "hourly", "monthly", "yearly" |
salary_min | number | β | Minimum salary in the unit matching salary_type |
salary_max | number | β | Maximum salary |
date_posted | string | β | "24h", "2d", "3d", "7d", "30d" |
max_applications | number | β | Exclude jobs with more applicants than this (where exposed) |
platforms | array | all | "seek", "linkedin" |
page | number | 1 | Page number |
per_page | number | 10 | Results per page per platform (max 25) |
Example tool call
{
"keyword": "senior backend engineer",
"location": "Melbourne VIC",
"radius": 30,
"employment_type": ["contract", "fulltime"],
"salary_type": "yearly",
"salary_min": 120000,
"date_posted": "7d",
"max_applications": 25,
"platforms": ["seek", "linkedin"],
"per_page": 10
}
Response shape
{
"results": [
{
"platform": "seek",
"jobs": [
{
"id": "seek-91878509",
"title": "Senior Backend Engineer",
"company": "Acme Corp",
"location": "Melbourne VIC",
"salary": "$140,000 β $160,000 per year",
"description": "We are looking for...",
"url": "https://au.seek.com/job/91878509",
"posted_at": "2026-05-04T01:54:46.000Z",
"applications_count": null,
"platform": "seek"
}
],
"total": 41,
"page": 1
},
{
"platform": "linkedin",
"jobs": [],
"page": 1
}
],
"summary": [
{ "platform": "seek", "count": 10, "total": 41 },
{ "platform": "linkedin", "count": 8 }
],
"fetched_at": "2026-05-05T00:00:00.000Z"
}
Development
# Run without building (uses tsx)
npm run dev
# Rebuild after changes
npm run build
# Run built server
npm start
License
MIT
