j-hunt-mcp
Integrates with the Google Maps Geocoding API to resolve place names to coordinates and enable map-region job search via bounding boxes and radius.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@j-hunt-mcpsearch for remote Python jobs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
j-hunt-mcp
A local job-hunting MCP server built on the official Python SDK (mcp / FastMCP).
It runs over stdio for Claude Desktop / Claude Code and helps with the full loop:
Discover jobs across pluggable web sources — including geo / map-region search.
Track applications through a status lifecycle.
Store a profile & resume the assistant can reference.
Tailor resumes / cover letters via reusable prompts (the client LLM does the writing).
Architecture
Strict, one-directional layering keeps business logic out of the MCP glue:
tools/ • resources.py • prompts.py (thin MCP adapters — no logic)
│
▼
services/ (all business logic; constructor-injected deps)
│
┌────────┼─────────────┐
▼ ▼ ▼
repositories/ scraping/ geo.py (SQLite • job sources • Google Maps)
│
▼
models/ (pure Pydantic domain types, reused by every layer)Layer | Location | Responsibility |
Models |
| Pure Pydantic domain types (one file per domain) |
Repositories |
| SQLite persistence; map rows ↔ models (SQLAlchemy tables kept separate) |
Services |
| Business logic (search, tracking, profile, geo) |
Scraping |
| Pluggable |
Tools/Resources/Prompts |
| Thin MCP adapters over services |
Related MCP server: trackly-cli
Setup
Requires Python ≥ 3.10 and uv.
uv sync # install deps
cp .env.example .env # optional: add GOOGLE_MAPS_API_KEY for geo search
uv run pytest # run the test suite (offline)Run / develop
uv run j-hunt-mcp # run the stdio server directly
uv run mcp dev src/jhunt_mcp/server.py # open the MCP Inspector (needs Node/npx)Register with Claude Desktop
uv run mcp install src/jhunt_mcp/server.py --name "Job Hunt" \
-v GOOGLE_MAPS_API_KEY=your_key_hereRestart Claude Desktop; the Job Hunt server's tools then appear.
Capabilities
Tools
Tool | Purpose |
| Keyword search; optional |
| Search inside a map-selected bounding box (NE/SW corners) |
| Resolve a place name → coordinates + formatted address |
| Persist and list jobs |
| Record an application (by saved |
| Move an application through its lifecycle (validated) |
| Set a follow-up reminder on an application |
| List applications, optionally filtered by status |
| Manage the stored profile & resume |
Resources: profile://me, resume://current, jobs://saved, applications://{status} (use all).
Prompts: tailor_resume, draft_cover_letter, application_followup_email.
Geo / map-region search
There is no map UI in the server itself — a client passes the result of a map
selection as parameters. Three shapes are supported, all requiring GOOGLE_MAPS_API_KEY:
a place string +
radius_km(search_jobs),a bounding box (
search_jobs_in_region) — what a map rectangle yields,(internally) a center + radius.
Geocoding results are cached in SQLite to conserve API quota. Without a key, plain keyword search still works; geo paths return a clear error.
Job sources & scraping note
Major boards (LinkedIn, Indeed) actively block scraping and forbid it in their ToS. v1 therefore ships sources that expose public JSON/RSS and are scraping-tolerant: RemoteOK, WeWorkRemotely, Hacker News "Who is hiring?". Requests are rate-limited per host. Add a board by implementing
scraping/base.py:JobSource.
Secrets
Never commit credentials. The only secret today is GOOGLE_MAPS_API_KEY, read from a
gitignored .env via pydantic-settings. When authenticated boards are added later,
use the OS keyring for passwords and the SQLite DB for session cookies — never JSON in
the repo. mcp install ... -v KEY=value injects env vars without writing them to source.
Data
The SQLite database lives at data/jhunt.db by default (override with JHUNT_DB_PATH).
The data/ directory is gitignored.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KaungHtunThant/j-hunt-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server