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: resume-mcp-server
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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