Job search, resume optimization, career research, and application tracking — a Go MCP server exposing 28 tools across LinkedIn, Greenhouse, Lever, YC, HN, Indeed, Хабр, RemoteOK, WeWorkRemotely, Twitter/X, Google Jobs, and more.
MCP Tools
Search
Tool
Description
job_search
Unified search: LinkedIn, Greenhouse, Lever, YC, HN, Indeed, Хабр, RemoteOK, WeWorkRemotely, Remotive, Twitter/X, Google Jobs. platform= selects source; limit (default 15, max 50) + offset for pagination.
job_match_score
Score job listings against a resume using Jaccard keyword overlap (0–100).
Unified platform: remote_work_search and freelance_search and twitter_job_search are folded into job_search via platform=remoteok|weworkremotely|remotive|twitter. Use raw=true with platform=twitter to skip LLM processing.
LinkedIn: no auth, Chrome TLS fingerprint via bogdanfinn/tls-client; pagination with offset; 42 geo locations.
Google Jobs: platform=google via SearXNG.
UN sources: platform=inspira (careers.un.org) / platform=undp / platform=un (fan-out both). Not included in platform=all.
research tool
Replaces three separate tools (salary_research, company_research, person_research).
# HTTP mode (default MCP port 8891, metrics port 9891)
MCP_PORT=8891 PROM_PORT=9891 LLM_API_KEY=... ./bin/go_job
# stdio mode
./bin/go_job --stdio
Build & Deploy
make build # → bin/go_job
make deploy # build + copy service + restart systemd unit
make restart # restart only
Config (env vars)
Var
Default
Description
SEARXNG_URL
http://127.0.0.1:8888
SearXNG instance
LLM_API_KEY
(required)
API key for the OpenAI-compatible LLM gateway
LLM_API_BASE
http://127.0.0.1:8317/v1
OpenAI-compatible LLM gateway (cliproxyapi) base URL
LLM_MODEL
(deploy-set)
Primary model name. Model selection is dynamic (go-engine/llm) — see LLM_MODEL_FALLBACK
LLM_MODEL_FALLBACK
(empty)
CSV cross-provider fallback chain: tries the primary, then each entry on retryable failure, health-filtered against the gateway's /v1/models
MCP_PORT
8891
MCP HTTP server port
PROM_PORT
9891
Prometheus metrics port
REDIS_URL
(optional)
Redis for L2 cache
CACHE_TTL
900
Cache TTL in seconds
UPLOADS_ROOT
$HOME/uploads
Base dir for tracker DB + user profile
DATABASE_URL
(optional)
Postgres for oversized payload spillover
TELEGRAM_BOT_TOKEN
(required for notifications)
Telegram bot token
HUNT_NOTIFY_CHAT_ID
(required for notifications)
Notification recipient chat ID
Health check
curl http://localhost:8891/health
# {"status":"ok","service":"go_job","version":"v1.21.0"}
#
# `version` is `git describe --tags` taken at build time — the release tag that
# release-please cut, never a number maintained by hand here. A build that
# cannot reach git reports "dev".
Metrics
curl http://localhost:9891/metrics
Spillover store
Large MCP responses can exceed the MCP envelope limit (~25KB). go-job spills oversized payloads to a Postgres table oversize_responses (auto-migrated on startup).
When a tool response exceeds GO_JOB_OVERSIZE_THRESHOLD_BYTES (default 24576), the client receives a small envelope with oversize_id and a sample. Use the oversize tool to retrieve the full payload.
Requires DATABASE_URL. Gracefully falls back to direct response if unset.