mcp-job-tracker
This MCP server lets Claude track job applications in a local JSON file.
Add a job application with required company, role, and platform, plus optional URL, notes, and applied date.
List applications newest first, optionally filtered by status and limited to a set number.
Update the status of an existing application by ID.
Find applications still marked
appliedafter a specified number of days for follow-up.Use the statuses
applied,replied,interview,rejected, andoffer.
Click on "Deploy 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., "@mcp-job-tracker Add a Frontend Developer application at Acme Corp on LinkedIn"
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.
mcp-job-tracker
An MCP server that lets Claude track your job applications. You tell Claude about an application, and it saves it in a local JSON file on your computer. You can then list your applications, update their status and see which ones need a follow-up. There is no database and no account to set up.
Tools
add_applicationsaves a new application with the statusapplied.list_applicationslists your applications, newest first. If some are hidden by the limit, the last line says how many.update_statuschanges the status of one application.followups_duelists applications that are stillappliedafter a number of days, so you know who to follow up with.
The possible statuses are applied, replied, interview, rejected and offer.
Tool | Input | Required | Description |
|
| Yes | Company name |
| Yes | Job title or role | |
| Yes | Where you applied, for example LinkedIn, Upwork or Rozee | |
| No | Link to the job posting | |
| No | Any extra notes | |
| No | Date you applied, as | |
|
| No | Only show applications with this status |
| No | How many applications to show, newest first. Whole number, at least 1. Default: 20. | |
|
| Yes | ID of the application |
| Yes | The new status | |
|
| No | Show applications still in |
Related MCP server: Job Tracker MCP Server
Requirements
Node.js 20 or newer (required by the MCP TypeScript SDK,
@modelcontextprotocol/server)npm (installed with Node.js)
Claude Desktop, or another MCP client that can start a stdio server
Install and build
git clone https://github.com/developermaroof/mcp-job-tracker.git
cd mcp-job-tracker
npm install
npm run buildnpm run build runs the TypeScript compiler (tsc) and writes the JavaScript output to build/. Run it again after every change to src/index.ts.
Connect to Claude Desktop
In Claude Desktop, open Settings > Developer > Edit Config. This opens
claude_desktop_config.json. On Windows the file is at%APPDATA%\Claude\claude_desktop_config.json.Add the server inside
mcpServers:{ "mcpServers": { "job-tracker": { "command": "C:\\Program Files\\nodejs\\node.exe", "args": ["C:\\path\\to\\mcp-job-tracker\\build\\index.js"] } } }Replace
C:\\path\\to\\mcp-job-trackerwith the folder where you cloned the project.Fully quit Claude Desktop and open it again. Closing the window is not enough, because Claude Desktop keeps running in the system tray. Right-click the Claude icon in the system tray (bottom right of the taskbar), choose Quit, then start Claude Desktop again.
Notes for Windows:
Every backslash in the JSON file must be doubled (
\\). A single backslash is an escape character in JSON, and the config will not load.Use the full path to
node.exe, not justnode. Claude Desktop does not always see the same PATH as your terminal. To find the path, runwhere.exe nodein a terminal and use the path it prints, with the backslashes doubled.If
mcpServersalready has other servers, put a comma after the closing}of the entry before this one. Do not put a comma after the last entry.
On macOS the config file is at ~/Library/Application Support/Claude/claude_desktop_config.json, and paths use forward slashes, for example /Users/you/mcp-job-tracker/build/index.js.
If the tools do not show up, check the log files in %APPDATA%\Claude\logs on Windows or ~/Library/Logs/Claude on macOS.
Connect to Claude Code
macOS or Linux:
claude mcp add --scope user job-tracker -- node /path/to/mcp-job-tracker/build/index.jsWindows (PowerShell or Command Prompt):
claude mcp add --scope user job-tracker -- node "C:\path\to\mcp-job-tracker\build\index.js"--scope usermakes the server available in all your projects. Without it, the default scopelocaladds it to the current project only.Everything after
--is the command that starts the server. On the command line, use normal single backslashes. Claude Code writes them correctly into its own config.To check it, run
claude mcp list. It should showjob-trackeras Connected. Inside Claude Code,/mcpshows the server status.
Example prompts
"Add a job application: Frontend Developer at Acme Corp on LinkedIn, link https://example.com/jobs/123."
"I applied to Globex for a React Developer role on Upwork on 2026-10-20. Add it."
"Show my job applications."
"Show my last 5 applications."
"Show only the applications where I have an interview."
"Globex replied to me. Update application 2 to replied."
"Which applications need a follow-up?"
"Which applications have had no reply for more than 14 days?"
How it works
stdio transport. Claude Desktop starts the server as a child process (
node build/index.js) and talks to it through standard input and standard output. Each message is a JSON-RPC message on its own line. There is no network port and no web server.zod validation. Every tool describes its inputs with a zod schema. The MCP SDK turns these schemas into JSON Schema so Claude knows which inputs each tool takes, and it checks every call against the schema before the tool code runs. Invalid input, such as a missing
role, an unknown status or a date in the future, is rejected with an error message and nothing is saved.Never use console.log. In a stdio server, stdout is used only for protocol messages.
console.logwrites to stdout, so any log line would get mixed into the messages, the client would not be able to read them, and the connection can break. Useconsole.errorinstead. It writes to stderr, which Claude Desktop saves in its log files.Storage. Applications are saved in
data/applications.jsoninside the project folder. The path is worked out from the location ofbuild/index.js, not from the current working directory, because Claude Desktop can start the server from any folder. Thedatafolder and the file are created automatically on the first tool call. Each new application gets the next free ID number. The file is listed in.gitignore, so your job search data is never committed.
Project structure
mcp-job-tracker/
.github/
workflows/
ci.yml GitHub Actions: build and test on every push and pull request
skill/
job-tracker/
SKILL.md Agent Skill: tells an AI agent when and how to use the tools
src/
index.ts Server code: storage helpers and the 4 tools
lib.ts Pure helpers: date check, follow-up filter, newest-first sorting
lib.test.ts Vitest tests for lib.ts (not included in the build)
build/ Compiled JavaScript, created by npm run build (not in git)
data/
applications.json Your saved applications, created on first use (not in git)
.gitignore
LICENSE MIT license
package.json Dependencies and the build and test scripts
package-lock.json Exact dependency versions
tsconfig.json TypeScript compiler settings
README.mdAgent Skill
The folder skill/job-tracker/ contains an Agent Skill. Its SKILL.md tells an AI agent when to use the four tools and how, with setup steps and example conversations. The skill only contains instructions, so the MCP server must still be installed and connected as described above.
Claude Code: copy the
job-trackerfolder to~/.claude/skills/to use it in all projects, or to.claude/skills/inside one project.Claude apps: zip the
job-trackerfolder and upload it under Customize > Skills. Skills need code execution to be turned on.
Development
npm install
npm run build
npm testnpm test runs the Vitest tests in src/lib.test.ts once. Running the tests needs Node.js 22.12 or newer (required by Vitest). GitHub Actions runs the build and the tests on Node.js 22 and 24 for every push and pull request to main.
License
MIT. See LICENSE.
Built by Maroof Qureshi
Available Tools
4 toolsadd_applicationC
Add a new job application to the tracker
Inputs: role (required), company (required), platform (required), url, +2 more.
followups_dueA
List applications still in "applied" status for more than N days, so you can follow up
Inputs: days.
list_applicationsA
List job applications, optionally filtered by status
Inputs: limit, status.
update_statusC
Change the status of a job application
Inputs: id (required), status (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Each tool has a clear primary action and resource: list, add, update status, and a specialized follow-up query. The only mild overlap is between list_applications (which accepts a status filter) and followups_due, but the day-based threshold makes followups_due meaningfully distinct.
Three of four tools follow a clean verb_noun pattern (list_applications, update_status, add_application). followups_due breaks the pattern as a noun_qualifier phrase, but it remains readable and unambiguous.
Four tools is a tight, well-scoped set for a lightweight job-application tracker. Every tool serves a distinct purpose in the core workflow, though the surface is on the thin side.
The core lifecycle (add, list, update status, follow up) is covered, but there is no get-single-application, no delete/remove, and no way to edit fields other than status. These notable gaps will limit agents needing record-level detail or cleanup.
Maintenance
Related MCP Connectors
Track job applications on a board: let Claude or ChatGPT read and update jobs, interviews, notes.
Job search tracker for Claude and ChatGPT: applications, interviews, follow-ups, company watch.
Manage job applications — jobs, companies, boards, notes, and profile — from your AI client.
Track job applications: find the ones to follow up on, add jobs, update status, notes and steps.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables searching justjoin.it for job listings and tracking applications locally with status updates, all via natural language in Claude.4MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to manage a personal job application tracker, allowing users to list, add, update, and delete job applications with company, role, and status details through natural language.-
- FlicenseNot gradedqualityBmaintenanceEnables Claude Web users to manage their job application workflow by storing profile and resume data, analyzing job descriptions, preparing applications, and tracking progress — all with manual submission and no platform automation.1-
- AlicenseAqualityCmaintenanceEnables Claude to organize a job search by registering openings, advancing applications through a status funnel, measuring conversion rates between stages, and flagging applications that have gone quiet and need follow-up. Data is kept locally in SQLite, so no external account or server is required.5MIT