local-tech-digest-mcp
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., "@local-tech-digest-mcp send me today's digest"
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.
π local-tech-digest-mcp
A local, privacy-first Model Context Protocol (MCP) server that automatically tracks entry-level tech job openings and upcoming USA tech conferences β then emails you a clean HTML digest on a smart schedule.
Runs 100% on your machine. No cloud, no tracking, no third-party accounts beyond a Gmail App Password.
β¨ Features
Dual digest β entry-level jobs (daily) + tech conferences (weekly)
Smart scheduler β fires at 08:00 ET daily; also triggers immediately if you open your laptop after 8 PM
3-gate job filter β level β exclusion β domain β stack scoring
F-1 OPT aware β excludes clearance/citizenship-required and no-sponsorship roles
USA / International split β USA roles first, foreign roles in a separate section
Zero API keys β all data sources are free and public
Deduplication β SQLite tracks every job/conference ever seen; emails only new entries
10 MCP tools β query, search, and trigger digests directly from Claude Desktop
Auto-start β silent Windows Startup launcher included
Related MCP server: j-hunt-mcp
ποΈ Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β local-tech-digest-mcp β
β β
β βββββββββββββββ ββββββββββββββββββββββββββββββββββββββββββββ β
β β Claude β β Scrapers β β
β β Desktop ββββββΆβ SimplifyJobs β RemoteOK β The Muse β β
β β (MCP tools) β β (GitHub JSON) β (API) β (API) β β
β βββββββββββββββ ββββββββββββββββ¬ββββββββββββββββββββββββββββ β
β β β
β βββββββββββββββ ββββββββββββββββΌββββββββββββββββββββββββββββ β
β β Scheduler β β Filter Pipeline β β
β β node-cron β β Gate 1: Level (junior/entry/intern) β β
β β 08:00 ET β β Gate 2: Exclusion (clearance/no-visa) β β
β β + 8 PM β β Gate 3: Domain (cyber/cloud/web/sys) β β
β β on-open β β Scorer: Stack match (Python/AWS/Linuxβ¦) β β
β ββββββββ¬βββββββ ββββββββββββββββ¬ββββββββββββββββββββββββββββ β
β β β β
β β ββββββββββββββββΌββββββββββββββββββββββββββββ β
β β β SQLite (digest.db) β β
β β β conferences table β jobs table β β
β β β hash dedup β hash dedup β β
β β ββββββββββββββββ¬ββββββββββββββββββββββββββββ β
β β β β
β ββββββββββββββββββββββββββββΆβ β
β βΌ β
β ββββββββββββββββββββββββββββ β
β β Email Builder β β
β β Section 1: USA Jobs β β
β β Section 2: Conferences β β
β β Section 3: Intl Jobs β β
β ββββββββββββββββ¬ββββββββββββ β
β β β
β βΌ β
β Gmail SMTP (nodemailer) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββπ Project Structure
local-tech-digest-mcp/
βββ src/
β βββ db/
β β βββ schema.ts # SQLite init β creates both tables on first run
β β βββ conferences.ts # Conference CRUD & queries
β β βββ jobs.ts # Job CRUD, search, filter, stats
β βββ filters/
β β βββ jobs.ts # 3-gate pipeline, stack scorer, HTML stripper
β βββ scrapers/
β β βββ conferences.ts # confs.tech GitHub JSON scraper
β β βββ jobs/
β β βββ index.ts # Parallel orchestrator for all job sources
β β βββ simplify.ts # SimplifyJobs (new-grad + internships)
β β βββ remoteok.ts # RemoteOK public API
β β βββ themuse.ts # The Muse public API
β βββ email/
β β βββ builder.ts # Region classifier, USA/intl split, SMTP send
β β βββ jobs-section.ts # Job cards HTML renderer
β β βββ conf-section.ts # Conference cards HTML renderer
β βββ server.ts # MCP server β 10 tools for Claude Desktop
β βββ scheduler.ts # node-cron dual schedule + 8 PM on-open trigger
βββ data/ # Auto-created β SQLite database (gitignored)
βββ dist/ # Auto-created β compiled JS (gitignored)
βββ launch-silent.vbs # Windows Startup silent launcher
βββ setup-autostart.ps1 # Register Windows startup task (optional)
βββ .env.example # Environment variable template
βββ package.json
βββ tsconfig.jsonπ Data Sources
Source | Type | Auth | What it provides |
GitHub raw JSON | None | Entry-level CS full-time roles | |
GitHub raw JSON | None | Summer/fall tech internships | |
Public API | None | Remote tech roles globally | |
Public API | None | Entry-level filtered roles | |
GitHub raw JSON | None | USA tech conferences by topic |
π Job Filter Pipeline
Every scraped job passes three sequential gates before being stored:
RAW JOB
β
βΌ GATE 1 β LEVEL FILTER (title must match)
junior Β· entry-level Β· associate Β· l1 Β· graduate Β· new-grad Β· intern(ship)
β
βΌ GATE 2 β EXCLUSION FILTER (reject if found in title or description)
us-citizenship-required Β· must-be-us-citizen Β· secret-clearance
top-secret Β· ts/sci Β· dod Β· department-of-defense Β· itar
no-sponsorship Β· sponsorship-not-available
β
βΌ GATE 3 β DOMAIN FILTER (must match at least one)
Cybersecurity β security | infosec | soc | devsecops | pentest | siem β¦
Cloud/DevOps β cloud | aws | azure | devops | kubernetes | terraform β¦
Web Development β frontend | backend | full-stack | react | node | django β¦
SysAdmin β linux | sysadmin | system-admin | sre | network-admin β¦
β
βΌ STACK SCORER (points added for matching user's tech stack)
Python +2 Linux / Debian / Ubuntu +2
Bash / Shell +2 AWS +2
Security (CVE) +2 Docker / Kubernetes +1
Terraform +1 Git / GitHub +1
Networking +1
ββββββββββββββββββββββββββββββββββββ
Maximum score: 14 points
β
βΌ STORED in SQLite
Emailed if score β₯ MIN_JOB_SCORE (default: 0)
Capped at MAX_JOBS_PER_DOMAIN per email (default: 25)π§ Email Layout
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β π Weekly Tech Digest β May 29, 2026 β
β πΊπΈ 82 USA roles Β· π 18 international Β· π 15 conf β
β [Cybersecurity] [Cloud/DevOps] [Web Dev] [SysAdmin] β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
πΌ NEW ENTRY-LEVEL OPENINGS (USA)
ββββββββββββββββββββββββββββββββββββββββββββββ
π Cybersecurity (N roles)
ββββββββββββββββββββββββββββββββββββββββββββ
β Security Analyst Intern β CrowdStrike β
β π’ CrowdStrike π Remote β
β [Internship] [Remote] [β Visa Sponsor] β
β Tags: python linux aws β
β Match ββββββββββββ 8/14 β
β [Apply β] β
ββββββββββββββββββββββββββββββββββββββββββββ
βοΈβ Cloud / DevOps (N roles)
π Web Development (N roles)
π₯οΈ SysAdmin (N roles)
π UPCOMING USA TECH CONFERENCES (Monday only)
ββββββββββββββββββββββββββββββββββββββββββββββ
π Cybersecurity
β’ DEF CON 34 β Las Vegas Β· Aug 7β10
βοΈ Cloud / DevOps
β’ KubeCon NA β Atlanta Β· Nov 10β14 β° CFP: Jul 21
π INTERNATIONAL OPPORTUNITIES
ββββββββββββββββββββββββββββββββββββββββββββββ
βΉοΈ These roles are outside the USA. Verify work
authorization before applying.
[Same card layout, purple accent]π οΈ Prerequisites
Node.js v18 or later
A Gmail account with App Password enabled (requires 2-Step Verification)
βοΈ Setup
1. Clone & install
git clone https://github.com/YOUR_USERNAME/local-tech-digest-mcp.git
cd local-tech-digest-mcp
npm install2. Configure environment
copy .env.example .env # Windows
cp .env.example .env # Mac/LinuxEdit .env with your values:
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=you@gmail.com
SMTP_PASS=xxxx_xxxx_xxxx_xxxx # Gmail App Password (16 chars, no spaces)
NOTIFY_EMAIL=you@gmail.com
TZ=America/New_York # Your timezone
MIN_JOB_SCORE=0 # 0 = all jobs | 4 = strong stack matches only
MAX_JOBS_PER_DOMAIN=25 # Max job cards per domain per emailGmail App Password: Go to myaccount.google.com/apppasswords, create a new app password, and paste the 16-character code (without spaces) as
SMTP_PASS.
3. Build
npm run build4. Register with Claude Desktop
Add to claude_desktop_config.json:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"tech-digest-mcp": {
"command": "node",
"args": ["/absolute/path/to/local-tech-digest-mcp/dist/server.js"]
}
}
}Restart Claude Desktop after saving.
5. Run the scheduler
node dist/scheduler.jsKeep this terminal open. The scheduler fires automatically on its schedule.
6. Auto-start on Windows login (optional)
Copy launch-silent.vbs to your Windows Startup folder:
Copy-Item .\launch-silent.vbs ([Environment]::GetFolderPath('Startup'))The scheduler will now start silently every time you log in.
π§ͺ Test Commands
# Trigger daily jobs digest immediately
node dist/scheduler.js --now-daily
# Trigger full weekly digest (jobs + conferences)
node dist/scheduler.js --now-weeklyπ Schedule Behaviour
When | Action |
Every day 08:00 ET (TueβSun) | Scrape jobs β send jobs-only email |
Every Monday 08:00 ET | Scrape jobs + conferences β send full email |
Laptop opened after 8 PM | Runs the appropriate digest immediately |
Nothing new | Email skipped β no empty digests |
π§ MCP Tools (Claude Desktop)
Tool | Description |
| Scrape all sources, filter, score, store new jobs |
| Pending (un-emailed) jobs sorted by score |
| Top N jobs by stack-match score |
| Full-text search by keyword |
| Filter by domain, type, min score |
| Scrape confs.tech for upcoming USA events |
| Conferences in the next N days |
| Keyword search across conferences |
| Manually trigger digest ( |
| Database counts for jobs and conferences |
ποΈ Database Schema
-- Conference events
CREATE TABLE conferences (
id, name, url, startDate, endDate, city, state, country,
topics TEXT, -- JSON array of domain labels
cfpDeadline, cfpUrl, source,
hash TEXT UNIQUE, -- md5(name|startDate|city) for deduplication
firstSeen, notified INTEGER DEFAULT 0
);
-- Job listings
CREATE TABLE jobs (
id, external_id, title, company, url, apply_url,
location, remote INTEGER,
job_type, -- full-time | internship
domain, -- primary domain bucket
tags TEXT, -- JSON array
description TEXT,
date_posted, sponsorship, source,
hash TEXT UNIQUE, -- md5(title|company|url) for deduplication
score INTEGER, -- 0β14 stack-match score
first_seen, notified INTEGER DEFAULT 0
);π Privacy
All data stays on your machine
No analytics, no telemetry, no external accounts required
The only outbound connections are to public GitHub raw URLs, RemoteOK, The Muse, and your own SMTP relay
.envcredentials are gitignored and never leave your machine
π License
MIT β use freely, modify freely.
Available Tools
13 toolsfetch_conferencesA
Scrape confs.tech for upcoming USA tech conferences.
Inputs: no named parameters.
fetch_jobsA
Scrape all 6 job sources (SimplifyJobs, RemoteOK, The Muse, Remotive, Jobicy, Arbeitnow), apply 4-gate filter, score, and store. Returns per-source breakdown.
Inputs: no named parameters.
filter_jobsB
Filter stored jobs by domain, type, status, and min score.
Inputs: limit, domain, status, job_type, +1 more.
get_pipelineA
Show your job application pipeline grouped by status.
Inputs: no named parameters.
get_statsB
Database counts for jobs (by status, type, salary) and conferences.
Inputs: no named parameters.
get_top_matchesA
Return top N jobs by stack-match score across all stored jobs.
Inputs: limit, min_score.
list_new_jobsA
List un-notified jobs sorted by score. Optional domain and min_score filters.
Inputs: domain, min_score.
list_upcoming_conferencesB
List upcoming conferences in the next N days (default 60).
Inputs: days.
mark_jobA
Update the application status of a job by its ID.
Inputs: id (required), status (required).
search_conferencesC
Search conferences by keyword.
Inputs: query (required).
search_jobsB
Full-text search across title, company, tags, domain.
Inputs: query (required).
send_digest_emailA
Manually trigger a digest email. mode="daily" β jobs only; mode="weekly" β jobs + conferences.
Inputs: mode.
suggest_skillsA
Analyse the stored job database to suggest skills most in-demand that are NOT in your current stack.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 13 tools
Tools are mostly distinct: fetch, list, search, filter, mark, pipeline, skills, conferences, email, stats each have clear roles. Minor overlap exists among job listing tools (list_new_jobs, get_top_matches, search_jobs, filter_jobs) but descriptions clarify their specific filters and purposes.
All tool names follow a consistent verb_noun pattern using lowercase with underscores (fetch_, list_, get_, search_, filter_, mark_, suggest_, send_). The pattern is uniform, and there are no mixed conventions or ambiguous verbs.
13 tools is well within the ideal 3-15 range for a server with this scope. The count feels balanced: 8 tools for job operations, 3 for conferences, plus digest email and stats, each earning its place without bloat.
The surface covers the main workflows: fetching/ingesting data, searching/filtering, managing a job pipeline, suggesting skills, sending digests, and viewing stats. Minor gaps exist such as no dedicated get_job_details or conference detail view, but these are workable via searches/filters.
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
Free live multi-ATS + HN job search. Comp & hiring-signal depth metered via x402/USDC. Hosted MCP.
GetJobzi MCP server for job search, application tracking, and career forecasting.
One MCP server for all web data. Scrape, search, crawl, and AI research in one install.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that finds recent job postings based on your LinkedIn profile, scores each against your resume, and logs the results β all without logging into or scraping LinkedIn.MIT
- FlicenseAqualityDmaintenanceA local job-hunting MCP server for discovering jobs across pluggable web sources, tracking applications through a status lifecycle, and managing profiles/resumes, with geo/map-region search.12-
- AlicenseNot gradedqualityCmaintenanceA local-first, open-source MCP server that analyzes jobs, matches your CV, tailors documents, and tracks applications β all on your machine with no data uploaded.AGPL 3.0
- AlicenseAqualityBmaintenanceLive job postings read straight from 139 employers' own ATS APIs (Greenhouse, Lever, Ashby, Beisen, Moka). Every listing carries the employer's real posting date, days_open and a ghost_score β a board's "posted 2 days ago" is routinely 300 days old underneath. Heavy on AI infra, autonomous driving and embodied AI across the US, EU and China. No account, no signup, no rΓ©sumΓ© upload.141,541 PyPI15MIT