jobs-mcp
by Ashishkosana
README.md
# jobs-mcp
**An MCP server that gives any LLM live access to US software-engineering job openings.**
Point Claude (or any [Model Context Protocol](https://modelcontextprotocol.io) client)
at this server and it can search current postings — pulled live from company ATS
boards (Greenhouse / Lever / Ashby) and a community new-grad feed — right inside your
conversation. US-only, security-clearance / citizenship-required roles filtered out,
newest first. **No API keys**: every source is a public endpoint.
```
Claude ──calls──▶ jobs-mcp
• search_jobs(query, location, limit)
• list_sources()
└─▶ Greenhouse · Lever · Ashby · SimplifyJobs feed
└─▶ US-only · clearance/citizenship roles excluded · deduped
```
## Tools
| Tool | What it does |
|---|---|
| `search_jobs(query, location, limit)` | Live search; `query` words must all appear in the title (e.g. `"backend engineer"`, `"new grad software engineer"`), `location` is `"us"` or a city/state substring. Returns `{company, title, location, url, posted, source}`. |
| `list_sources()` | The ATS boards + community feed this server pulls from. |
## Install & connect to Claude Code
```bash
git clone https://github.com/Ashishkosana/jobs-mcp && cd jobs-mcp
python3 -m venv .venv && .venv/bin/pip install -e .
# register it (stdio transport):
claude mcp add jobs -- "$(pwd)/.venv/bin/python" -m jobs_mcp
```
Then just ask Claude things like *"find me fresh backend software engineer roles in New York"*
— it calls `search_jobs` and answers from live data.
Works with any MCP client (Claude Desktop, etc.) — point it at
`python -m jobs_mcp` over stdio.
## How it works
An MCP server exposes **tools** a client can discover and call. Here each tool is a
plain Python function decorated with `@server.tool()`; its type hints become the input
schema the model sees. On a call, the server fetches every source concurrently (a dead
board is skipped, not fatal), applies the US + clearance filters, dedupes, and returns
structured rows. See `src/jobs_mcp/server.py`.
## Scope / honesty
- Sources are a curated company list + one community feed, not "every job on the
internet" — LinkedIn/Indeed block scraping, so this uses public ATS APIs instead.
- The clearance filter is lexical (keywords + known defense employers); it catches the
common cases, not every phrasing.
## License
MIT
TDQS
A4.4/5.0
Scored across 2 tools
Disambiguation5/5
The two tools serve clearly distinct purposes: one lists data sources and the other searches for jobs. There is no overlap or ambiguity between them.
Naming Consistency5/5
Both tool names follow the same verb_noun snake_case pattern: list_sources and search_jobs. This is perfectly consistent and predictable.
Tool Count3/5
With only two tools, the server feels minimal, but the scope is very narrow—job searching and source listing. This is borderline, as the rule suggests 1-2 tools feels thin, yet each tool serves a necessary role.
Completeness5/5
The server fully covers its stated purpose: list the job sources and search live US software-engineering job openings. There are no obvious missing operations for this narrow domain.
Maintenance
ActivityMaintained
ResponsivenessNo issues