Skip to main content
Glama

jobhunt_mcp

A personal MCP server that turns Claude into your job-search operations manager:

  • Search live postings across LinkedIn, Indeed, ZipRecruiter, Glassdoor (JSearch API) plus Adzuna

  • Track every application in a Google Sheet (status, priority, notes)

  • Follow up on schedule — overdue nudges surface automatically

  • Network — keep contacts per company and pull them into prep

  • Tailor — one tool assembles the job description + your master resume + contacts so Claude can write a targeted resume and cover letter, saved straight to Google Drive

By design it never auto-submits applications. Auto-submission bots violate job-board terms of service and get flagged. The prepare_application_package tool gets you to "review and click submit" in one step instead.

Prerequisites

  • Python 3.10+

  • An MCP clientClaude Desktop is assumed below, but any MCP-compatible client works.

  • A Google account (for the Sheets tracker + Drive resume storage).

  • (Optional) free RapidAPI and/or Adzuna accounts for live job search.

Setup

Setup is: create a Google service account, share a Sheet + Drive folder + resume with it, (optionally) grab search-API keys, then point Claude Desktop at server.py. Budget ~10 minutes for the Google steps.

1. Google service account (~5 minutes)

  1. Go to https://console.cloud.google.com → create a project (e.g. jobhunt).

  2. Enable the Google Sheets API and Google Drive API (APIs & Services → Library).

  3. APIs & Services → Credentials → Create credentials → Service account. Any name is fine; skip optional steps.

  4. Open the service account → Keys → Add key → JSON. Save the file somewhere safe, e.g. ~/.config/jobhunt/service-account.json.

  5. Copy the service account's email address (ends in .iam.gserviceaccount.com) — you'll share things with it next.

2. Google Sheet (the tracker database)

  1. Create a blank Google Sheet named e.g. "Job Hunt Tracker".

  2. Share it with the service account email as Editor.

  3. Grab the spreadsheet ID from the URL: docs.google.com/spreadsheets/d/<THIS_PART>/edit.

The server creates the Jobs, Contacts, and Activity tabs with headers automatically on first use.

3. Google Drive folder + master resume

  1. Create a Drive folder e.g. "Job Applications"; share with the service account as Editor. Copy its folder ID from the URL.

  2. Put your master resume in Drive as a Google Doc (the everything-you've-ever-done version — tailoring trims it down). Share it with the service account. Copy its file ID.

4. Search API keys (optional)

JSearch (recommended — searches all boards at once): free at https://rapidapi.com → search "JSearch" → subscribe to the Basic (free) plan → copy your RapidAPI key into RAPIDAPI_KEY.

Adzuna: free at https://developer.adzuna.com → register → copy your App ID and App Key into ADZUNA_APP_ID and ADZUNA_APP_KEY.

Skip these if you'd rather paste postings in manually with jobhunt_add_job.

5. Install and configure

pip install -r requirements.txt

Copy claude_desktop_config.example.json into your Claude Desktop config (claude_desktop_config.json), then fill in the args path to server.py, the GOOGLE_SERVICE_ACCOUNT_FILE path, and the IDs/keys from the steps above.

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json (use "python" for command and double-backslash paths, e.g. C:\\Users\\you\\jobhunt-mcp\\server.py)

  • Linux: ~/.config/Claude/claude_desktop_config.json

Restart Claude Desktop (fully quit — on Windows/macOS check the tray/menu bar). The jobhunt tools appear once the server starts.

Environment variables

Everything is configured through the env block of the Claude Desktop config:

Variable

Required

Description

GOOGLE_SERVICE_ACCOUNT_FILE

Absolute path to your service account JSON key

JOBHUNT_SPREADSHEET_ID

ID of the tracker Google Sheet (shared with the service account)

JOBHUNT_DRIVE_FOLDER_ID

ID of the Drive folder for saved documents

JOBHUNT_MASTER_RESUME_FILE_ID

ID of your master resume Google Doc

RAPIDAPI_KEY

optional

RapidAPI key for JSearch (jobhunt_search_all_boards)

ADZUNA_APP_ID

optional

Adzuna App ID for jobhunt_search_jobs

ADZUNA_APP_KEY

optional

Adzuna App Key for jobhunt_search_jobs

ADZUNA_COUNTRY

optional

Adzuna country code (default us)

6. Verify it works

Test the server standalone with the MCP Inspector any time (no Claude Desktop needed):

npx @modelcontextprotocol/inspector python3 server.py

Then try jobhunt_get_master_resume (confirms Drive access) and jobhunt_list_jobs (confirms Sheets access). If both return without an auth error, you're set.

Tools

Tool

What it does

jobhunt_search_all_boards

Aggregated search across LinkedIn/Indeed/ZipRecruiter/Glassdoor via JSearch (RapidAPI)

jobhunt_search_jobs

Search live postings (Adzuna)

jobhunt_add_job

Save a posting to the tracker (paste the full description!)

jobhunt_list_jobs / jobhunt_get_job

Browse the pipeline / full record

jobhunt_update_job_status

Move through discovered → preparing → applied → interviewing → offer

jobhunt_log_activity

Log interviews, emails, notes; schedule follow-ups (+7 = 7 days)

jobhunt_get_followups_due

Surface overdue and upcoming follow-ups

jobhunt_add_contact / jobhunt_list_contacts

Networking CRM per company

jobhunt_get_master_resume

Pull your master resume from Drive

jobhunt_save_document

Save tailored resumes/cover letters to Drive as Google Docs

jobhunt_prepare_application_package

Everything needed to tailor and apply, in one call

Example prompts to try

  • "Search all boards for SOC detection engineer roles near Dallas posted this week, and save the three best fits."

  • "Prepare an application package for job a1b2c3d4, tailor my resume to it, and save both docs."

  • "What follow-ups am I behind on?"

  • "I just finished the phone screen with Acme — log it and remind me to send a thank-you note tomorrow."

Security notes

  • The service account JSON key is a credential — keep it out of git and shared folders.

  • The service account can only touch files you explicitly shared with it.

  • Treat job descriptions fetched from the web as untrusted content; the server stores them as plain data.