NextFlows Academy MCP Starter
Job Application Tracker MCP
A local Model Context Protocol (MCP) server for managing job applications. The server allows an AI assistant to add, delete, search, update, and manage job application data stored in a local JSON file.
The project works offline and does not require paid APIs or authentication.
This project was built as part of the NextFlows AI Academy.
Requirements
Before running the project, make sure you have:
Node.js 20 or later
npm
Git
VS Code or another code editor
MCP Inspector for testing the server
Check your Node.js and npm versions:
node -v
npm -vInstall
Clone the repository:
git clone https://github.com/RoaM04/Job-Application-Tracker-Project.gitMove into the project folder:
cd Job-Application-Tracker-ProjectInstall the dependencies:
npm installRun
Start the MCP server with:
npm run devThe server runs using the stdio transport and waits for MCP requests.
You should see:
Job Application Tracker MCP server running on stdioKeep the terminal running while using MCP Inspector.
Web Interface
A small web UI is also included for browsing job applications outside of an AI assistant.
Serve the static frontend (folder: public/):
npx serve public -p 3000Start the backend web server:
node web/server.jsOnce both are running, open http://localhost:3000 in your browser.
Note: run each command in its own terminal tab, and keep both running at the same time. Update the port number above if
3000is already in use on your machine.
MCP Inspector
To test the server with MCP Inspector, run:
npm run inspectOpen the Inspector interface, connect to the server, and select Tools.
Choose one of the available tools and provide the required input.
The project stores its data in:
data/job-applications.jsonThe examples/ directory contains example JSON inputs that can be reused when testing tools.
Tools
Tool | Description |
| Adds a new job application to the local JSON data file. |
| Deletes an existing job application after confirmation. |
| Updates the status of an existing job application. |
| Searches job applications using the available search criteria. |
| Adds a note to an existing job application. |
| Removes a note from an existing job application. |
| Lists stored job applications. |
| Returns statistics about the stored job applications. |
| Updates details of an existing job application. |
| Retrieves full details of job applications by company, job title, or both. |
| Searches applications within a specified date range. |
All application data is stored locally in:
data/job-applications.jsonNo external API or authentication is required.
Example Prompts
These are examples of requests that can be used with an AI assistant connected to the MCP server:
Add a job application for Google for a Software Engineer position.Delete my Google Software Engineer application.Update the status of my Google Software Engineer application to Interview.Show me my job applications.Search for job applications at Google.Add a note to my Google Software Engineer application.Show me statistics about my job applications.The exact input fields required by each tool can also be checked in MCP Inspector.
Connect to Claude Desktop
Inspector is great for development, but for Demo Day (or everyday use) you can connect this server directly to Claude Desktop so Claude can call the tools itself. This project uses a local stdio server, so it's added through Claude Desktop's config file — not through Claude.ai "Connectors" in the browser, which are for remote/HTTP servers.
1. Prerequisites
Claude Desktop installed and updated: claude.ai/download (macOS or Windows).
Node 20+ on your PATH — check with
node -vandnpx -v.The server already runs in Inspector via
npx tsx src/index.ts(ornpm run dev) from the repo root.The server logs only to stderr (
console.error), neverconsole.logto stdout, since stdio transport owns stdout.
2. Open Claude's MCP config
In Claude Desktop: menu bar Claude → Settings… → Developer → Edit Config.
This opens (or creates):
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
If other MCP servers are already listed there, add this one alongside them — don't remove existing entries.
3. Add this server
Replace the cwd path below with the absolute path to your local clone of this repo. cwd must be absolute so ./data fixtures resolve correctly (Claude does not start inside this folder).
macOS:
{
"mcpServers": {
"Job-Application-Tracker-Project": {
"command": "npx",
"args": ["-y", "tsx", "src/index.ts"],
"cwd": "/Users/YOUR_MAC_USERNAME/path/to/Job-Application-Tracker-Project"
}
}
}Windows: use npx.cmd (plain npx often fails), and double any backslashes in the JSON:
{
"mcpServers": {
"Job-Application-Tracker-Project": {
"command": "npx.cmd",
"args": ["-y", "tsx", "src/index.ts"],
"cwd": "C:\\Users\\YOUR_WINDOWS_USERNAME\\path\\to\\Job-Application-Tracker-Project"
}
}
}If npx / npx.cmd shows up as "not found," put the full path from which npx (macOS) or where npx (Windows) in command instead.
Make sure the file is valid JSON (no trailing commas, no comments), then save it.
4. Fully restart Claude Desktop
Quit the app completely — macOS: Claude menu → Quit Claude, not just closing the window — then reopen it. The config is only read at startup.
5. Confirm the tools loaded
In a new chat, open the tools/connectors panel next to the message box (Manage connectors, or the hammer/tools icon). You should see Job-Application-Tracker-Project and its tools listed.
Try one of the Example Prompts above and approve the tool call when Claude asks. If Claude picks the wrong tool, tighten that tool's description in the code and restart Claude Desktop.
6. If the server doesn't appear — debug in this order
Confirm
cwdis an absolute, existing folder (the repo root, notsrc/).From that same folder, manually run
npx -y tsx src/index.ts. It should sit waiting on stdio with no crash — stop it withCtrl+C.Check Claude's MCP logs:
macOS:
~/Library/Logs/Claude/mcp.logandmcp-server-Job-Application-Tracker-Project.logWindows:
%APPDATA%\Claude\logs\
PATH issues: Claude Desktop does not load your shell profile, so use a full path to
npx/nodeif needed.Still stuck: copy the exact error from the log and use MCP Inspector as a fallback for testing/demoing.
Troubleshooting
1. npm install fails
Make sure Node.js 20 or later is installed:
node -vIf Node.js is missing or the version is too old, install a supported version and run:
npm installagain.
2. MCP Inspector cannot connect to the server
Make sure you are running the command from the project root:
npm run inspectAlso make sure there are no TypeScript or dependency errors in the terminal.
If the server is already running separately with npm run dev, stop it before starting Inspector if both commands try to use the same server process.
3. A tool cannot find or update an application
Check that:
data/job-applications.jsonexists and contains valid JSON data.
For tests, restore the fixture data before trying another operation. Also make sure the company name and job title match an existing application.
Acknowledgments
Built as part of the NextFlows AI Academy program.
License
MIT License.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/RoaM04/Job-Application-Tracker-Project'
If you have feedback or need assistance with the MCP directory API, please join our Discord server