jobhunt_mcp

jobhunt_mcp

Turns Claude into a job-search operations manager: searches live job boards, tracks applications in Google Sheets, manages follow-ups and contacts, and assembles tailored resumes/cover letters saved to Google Drive, without auto-submitting.

Category
Visit Server

README

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 client — Claude 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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured