Skip to main content
Glama
afrozk

MCP Job Toolkit

by afrozk
README.md
# 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` |
| **LinkedIn** | Guest jobs API, includes applicant count where available |

## Installation

**Prerequisites:** Node.js 18+

```bash
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):

```json
{
  "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

```json
{
  "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

```json
{
  "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

```bash
# Run without building (uses tsx)
npm run dev

# Rebuild after changes
npm run build

# Run built server
npm start
```

## License

MIT

TDQS

A3.7/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no potential for confusion with other tools. The tool's purpose is clearly defined.

Naming Consistency5/5

With a single tool, the naming follows a consistent verb_noun pattern ('search_jobs'), which is clear and predictable.

Tool Count3/5

One tool is on the low end for a 'toolkit,' feeling thin but acceptable for a focused search-only server. It borders the threshold of being too few.

Completeness2/5

The server only provides search functionality, lacking other expected operations like retrieving job details, saving jobs, or managing applications. The surface is incomplete for a comprehensive job toolkit.

Maintenance

ActivityInactive
ResponsivenessNo issues