jobscan-mcp
An MCP server over my job-scan-automation dataset: the daily market scan behind uae-remote-jobs-daily, exposed as tools that any MCP-capable AI client can call.
MCP (Model Context Protocol) is the open standard for giving AI models controlled access to tools and data. This server is the pattern in miniature and in production: my own dataset, four read-only tools, and a model on the other end that can suddenly answer questions like "any new GRC postings this week?" with real data instead of guesses.
Tools
| Tool | What it does |
|---|---|
latest_report() |
Full text of the most recent daily scan |
search_jobs(query, days) |
Search postings across the last N days of reports, links included |
market_stats(days) |
Per-day relevant/new counts: the pulse of the niche market |
is_seen(company, title) |
Whether the scanner's dedupe memory already knows a posting |
Setup
pipx install jobscan-mcp
uvx jobscan-mcp works too if you prefer no install. Hacking on a clone instead:
python3 -m venv .venv
.venv/bin/pip install mcp
It reads ~/aiProjects/aminWork/job-research/scraper. Point JOBSCAN_DATA_DIR at your own data folder if your copy lives somewhere else.
Wire it into Claude Code:
claude mcp add jobscan -- jobscan-mcp
Running from a clone, point it at the venv instead:
claude mcp add jobscan -- /path/to/jobscan-mcp/.venv/bin/python /path/to/jobscan-mcp/jobscan_mcp.py
Demo
What it looks like from Claude Code:
> check the job scan: anything new in IAM in the last week?
⏺ jobscan · search_jobs("IAM", 7)
2 match(es) for 'IAM':
[2026-09-26] - **IAM Engineer** at Falconride Logistics
https://example.com/falconride/iam-engineer
[2026-09-23] - **Identity and Access Analyst** at Northgate Retail
https://example.com/northgate/iam-analyst
⏺ Two IAM roles surfaced this week. Falconride is the Dubai one,
Northgate is remote. Neither was in the scan before Tuesday.
The postings above are demo data. The format is exactly what the server returns.
Design notes
- Read-only by construction. Every tool reads files, nothing mutates the dataset. Giving a model tools means deciding what it must never be able to do, and here that decision is structural, not a prompt instruction.
- Sanitization at the boundary. The underlying reports can carry the operator's personal notes, so the server strips them before anything crosses the protocol. Data boundaries belong in code, not in hope.
- Small on purpose. Four tools, one file, standard library plus the
mcpSDK. An MCP server doesnt need to be a platform to be useful. It just needs to expose the right verbs over data you actually maintain.
About
Al Amin Bashir Afara, Dubai · github.com/aminafara123 · linkedin.com/in/aminafara
Metadata
Release files for jobscan-mcp 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| jobscan_mcp-1.0.1.tar.gz | 5.3 kB | Without provenance | Details for jobscan_mcp-1.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| jobscan_mcp-1.0.1-py3-none-any.whl | Python 3 | none | any | Details for jobscan_mcp-1.0.1-py3-none-any.whl |
Total release size: 11.2 kB
Release files / jobscan_mcp-1.0.1.tar.gz
| Download URL | jobscan_mcp-1.0.1.tar.gz |
|---|---|
| Size | 5.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07489715acf60d72d9f5da02b2e026382db880aa506fd2d4dc578e500fc58804
|
|
BLAKE2b-256 checksum How to use checksums |
006f07cecd319f0b0996570cfd8bfea4f31266528219998a7eeb6be85624a258
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / jobscan_mcp-1.0.1-py3-none-any.whl
| Download URL | jobscan_mcp-1.0.1-py3-none-any.whl |
|---|---|
| Size | 5.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fbcf63a3e3bc55149a22e9186e889227ee8bed0d6cc14ad161f90f9996b35994
|
|
BLAKE2b-256 checksum How to use checksums |
3bb9105034965ccb4849cd22b602fdcdd027f532a48a85450116eb6295f4ea57
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for jobscan-mcp 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.