career-ops-mcp
by Aryanpawar67
README.md
# career-ops-mcp
A local [MCP](https://modelcontextprotocol.io) server that tracks a job-search
and freelance-lead pipeline, and drafts follow-up messages from the notes
logged against each item. Built as a portfolio piece to demonstrate a
repeatable, AI-augmented way of working: **Define → Discover → Draft →
Validate → Deliver**, applied to a real personal-ops problem rather than a
toy example.
Why this exists: most "AI portfolio projects" are a chatbot wrapper. This is
a small, working tool with real state (a JSON-backed pipeline), a real
generative step (drafting a follow-up from stored context, not from
scratch), and a real interface (MCP, so it plugs into Claude Desktop or
Claude Code like any other tool) — it's operational, not a demo.
## What it does
Exposes five tools over MCP:
| Tool | Purpose |
|---|---|
| `add_pipeline_item` | Add a job application or client/freelance lead |
| `update_pipeline_item` | Move an item's stage forward and log a note |
| `list_pipeline` | List items (`all` / `open` / `closed`) |
| `pipeline_summary` | Counts by stage + items with no update in 14+ days |
| `draft_followup` | AI-drafted follow-up message, grounded in that item's actual notes |
Data is stored locally in `data/pipeline.json` — nothing leaves your machine
except the one `draft_followup` call, which hits the Anthropic API.
## Setup
```bash
git clone <this-repo>
cd career-ops-mcp
pip install -r requirements.txt
cp .env.example .env # then add your ANTHROPIC_API_KEY
```
## Run it
```bash
python server.py
```
This starts the server over stdio, which is how MCP clients expect to talk
to it — it isn't meant to be run standalone and left open in a terminal for
browsing.
## Connect it to Claude Desktop
Add this to your `claude_desktop_config.json` (Settings → Developer → Edit
Config):
```json
{
"mcpServers": {
"career-ops": {
"command": "python",
"args": ["/absolute/path/to/career-ops-mcp/server.py"]
}
}
}
```
Restart Claude Desktop, and you'll be able to say things like *"add
Acme Corp as a job application, stage applied"* or *"draft a follow-up for
Northwind Consulting"* directly in chat.
## Connect it to Claude Code
```bash
claude mcp add career-ops -- python /absolute/path/to/career-ops-mcp/server.py
```
## Project layout
```
career-ops-mcp/
├── server.py # MCP tool definitions (the interface)
├── storage.py # JSON-backed CRUD for pipeline items (the state)
├── ai.py # Anthropic API call for draft_followup (the AI step)
├── data/ # pipeline.json lives here at runtime (gitignored)
├── requirements.txt
└── .env.example
```
## Notes
- Single-user, single-process, local file storage — deliberately not built
for concurrency. This is a personal tool, not a service.
- `draft_followup` never invents facts: the prompt explicitly constrains it
to the notes already logged against that item, so the "AI step" is
drafting from real context rather than generating generic filler.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues