- 8MCP tools
- Trending · HN · TrendshiftSources
- feedback-drivenProfile
- v0.4 · liveRelease
Eight MCP tools (refresh sources, show / update profile, set GitHub identity, rank by taste, mark useful / noise, archive search) that pick new repos matching your interests from GitHub Trending / HN / Trendshift. Profile version bumps on every feedback, so recommendations sharpen over time.
Background
Every day Trending / Hacker News / Trendshift push hundreds of new repos at you; maybe a handful are actually relevant. I wanted a scout that learns my taste instead of forever manually starring or hiding.
Approach
Eight MCP tools on a thin server, each with a single job — fetching, ranking, feedback, archival never mixed. The profile is a taste file that self-revises with every piece of feedback; the version number is monotonic.
- `refresh_now` — explicit pull, not hidden inside search (so search has no silent side effects)
- `show_profile` / `update_profile` — view and edit current taste
- `set_github_user` — optionally pull starred repos as an initial taste signal
- `find_relevant_new` — rank candidates by current profile
- `mark_useful` / `mark_noise` — feedback, bumps profile_version
- `search_archive` — search history
Key choices
Separating "read" from "mutate state" is the single most important design call here.
- Explicit refresh; never quietly pull inside search — search should be idempotent, refresh should be its own action
- Each feedback bumps profile_version so the next ranking changes immediately — users see their feedback take effect
- Heuristic scorer as the fallback; once the local Ollama upgrade lands a model scorer plugs in (swappable, not bound to one)
- Scouts (Trending / HN / Trendshift) are Protocol-based — sources are easy to swap
Lessons
The temptation in any recommender is to stuff all logic into one big model. The version that actually works tends to do the opposite.
- Small tools + explicit actions beat a single "do-everything search"
- When users can see their feedback take effect, trust builds quickly
- Local-first — profile and archive both live in SQLite, no feedback lag
Status
v0.4 live in Claude Code user scope with all 8 tools shipping. The scorer is heuristic today and becomes model-based once the local model is in place; profile is persisted in SQLite and feedback applies on the spot.