About Job Tracker
Job Tracker is a local job-search plugin for Claude Code and Hermes Agent. It verifies suitable roles, tracks applications and interviews, and gates any application submission on explicit approval.
Key features
- 01Role filtering and verification
- 02Duplicate detection
- 03Application and interview tracking
- 04Approval-gated submissions
- 05Daily reports and kanban board
Use cases
- 01Screen roles against job-search criteria
- 02Prepare an application for review
- 03Track replies and interview preparation
MCP support
It is registered in the MCP Registry and runs a local stdio server backed by SQLite at `~/.job-tracker/tracker.db`.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEJob Tracker
A Claude Code (and Hermes Agent) plugin that runs a disciplined, low-volume job search for one person. Every weekday it finds roles that fit your hard filters, verifies each one on the employer's own posting, dedupes against everything you have touched, and prepares tailored applications. It submits only through the employer's official apply flow, and only after you approve. It tracks replies and interviews and writes one short daily report.
The design follows one principle: fewer, better applications.
Website: jobtrackermcp.com
Setup and usage docs: jobtrackermcp.com/docs.html
Status: early (v0.1). It grew out of one person's real job search and is used daily by that one person. Expect rough edges, and expect the source adapters to break when job sites change. Issues and pull requests are welcome.
What it will never do
- Send email or LinkedIn messages. It writes drafts only, and a hook blocks every send tool.
- Submit an application without your
/job-tracker:approve <role_id>in the same session. - Create accounts, enter passwords, solve visible CAPTCHAs, tick consent boxes, or fill personal-data fields (passport, nationality, age, gender, marital status, ID numbers).
- Auto-apply at volume.
Requirements
- Claude Code 2.1.295 or newer (the Desktop app or the CLI), or Hermes Agent.
- Node.js 22.18 or newer. If it is missing,
/job-tracker:setupoffers to install it on macOS and Windows. The tracker uses the built-innode:sqlite, and Node runs the plugin's TypeScript directly. There are no runtime npm dependencies. - Recommended connectors: Gmail and Google Calendar.
- Recommended browser: Claude in Chrome or the host's built-in browser.
- Optional: a LinkedIn MCP server (read-only use: job search and inbox).
Full setup and usage instructions: jobtrackermcp.com/docs.html
Install
Claude Code:
/plugin marketplace add adamwardecki/job-tracker-mcp
/plugin install job-tracker@job-tracker-mcp
/job-tracker:setup
Hermes Agent:
git clone https://github.com/adamwardecki/job-tracker-mcp.git
cd job-tracker-mcp
plugin/scripts/hermes-install.sh
Restart Hermes and type /job-tracker:setup. Details:
docs/hermes.md.
The tracker is also in the MCP Registry as
io.github.adamwardecki/job-tracker, packaged as an MCPB bundle attached to each
GitHub release.
Commands
| Command | What it does |
|---|---|
/job-tracker:setup | Guided setup; resumable. |
/job-tracker:sweep [--limit N] | The daily run. Never submits. |
/job-tracker:apply [role-id] | Interactive apply: verify, write, fill, read back, then wait for your approval. |
/job-tracker:approve <role-id> | You type this on the filled form to allow one submit attempt. |
/job-tracker:triage <source> | Reconcile and clean a tracker board with the delete guard. |
/job-tracker:prep <company> | Interview prep from your stories. |
/job-tracker:status | Pipeline summary and open items. |
/job-tracker:board | Kanban board in your browser. |
/job-tracker:cover-letter <role-id> | Cover letter, optionally as a one-page PDF. |
/job-tracker:correct | Turn your override into a rule with a reason and example. |
Your data
The tracker runs locally. A stdio server on ~/.job-tracker/tracker.db. No network listener, no token.
The directory is owner-only (0700), database is 0600. Nothing is sent to the plugin's author.
Hooks (hard gates)
| Gate | Rule |
|---|---|
| Send | Email/LinkedIn sends blocked in every session. |
| Submit | Needs /job-tracker:approve and a passing gate_check. |
| Board delete | Needs a fresh JOBHUNT_TRIAGE_GUARD with ok: true. |
| Personal data and consent | Passport, nationality, age, DOB, gender, marital, ID fields denied; consent boxes stay unticked unless you allow them. |
| Stop | A sweep session cannot end until every role has an event and the report was rendered. |
Development
npm run setup # dev only: TypeScript, the Node types and Biome, installed into dev/
npm test # tsc, then the Node and Python tests
The code is TypeScript that Node runs directly (type stripping), so there is no build step and nothing to install at runtime.
See CONTRIBUTING.md before opening a pull request.
Design choices
- Local only. The tracker is SQLite behind a stdio server in
~/.job-tracker. - The daily run is a local scheduled task.
- LinkedIn is read-only and optional. Send and connect tools are blocked by a hook.
- Voice.
write-noteuses an installed humanizer or writing-style skill when present, else its own rules. - Templates ship neutral. Your own values go in through setup.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.