local-tech-digest-mcp
Click on "Install 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-mcpsend 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: workopia-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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/nk1947-sudo/local-tech-digest-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server