trends-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> 한국어 문서: **README.ko.md**
A single MCP server that pulls **academic + code + medical-device-regulatory**
trend data from seven sources and renders newspaper-style briefings — with
per-domain tuning baked in.
| Source | Tools | Notes |
|---|---|---|
| arXiv | arxiv_recent, arxiv_search | Per-category round-robin so small categories aren't drowned by big ones |
| PubMed | pubmed_search | Full abstracts via efetch.fcgi |
| HF Daily Papers | paperswithcode_trending | Sorted by community upvotes (replaces sunset PwC API) |
| GitHub | github_trending, github_search | Trending page scrape + Search API with created:> date filter |
| Hugging Face | huggingface_trending | Models / datasets / spaces, trending or recent |
| openFDA 510(k) | fda_510k_recent | Device clearances |
| openFDA Recalls | fda_recalls_recent | Recall events with class filter |
| **(aggregators)** | trends_digest, trends_briefing | Multi-source parallel calls |
trends_briefing is the headline tool: invoke "weekly news" / "주간 뉴스" and
get a newspaper-formatted briefing across all enabled sources, automatically
translated into the user's conversation language by the LLM.
---
Why this exists
Most academic / code / regulatory MCP servers are single-source. This one is
multi-source **and domain-aware**: a researcher tracking medical-imaging AI,
an ML engineer following ML papers, a security analyst watching CVEs and
trending repos — all configure once via python configure.py, then
trends_briefing becomes the "Monday morning newspaper" for their domain.
What makes it useful:
- **Newspaper format** with translation hint — the LLM auto-translates source
text (paper abstracts, recall reasons, etc.) to your conversation language
while preserving identifiers, URLs, and metric values verbatim.
- **Per-category round-robin** for arXiv — cs.HC (~50 papers/wk) doesn't
get drowned by cs.LG (~1500/wk) when both are tracked together.
- **TTL cache + concurrent-request coalescing** — repeat calls and parallel
briefings don't hammer upstream APIs.
- **No required tokens.** All seven sources work anonymously; tokens just
raise the per-source rate limit ceiling.
- **Sandbox-safe Python launcher.** Bypasses the claude_desktop_config.json
env block (which truncates whitespace-containing values on some macOS
builds) by setting environment variables in Python before handing off to
the server.
---
Install
Connect to Claude Desktop by editing
~/Library/Application Support/Claude/claude_desktop_config.json:
> ⚠️ args points at run.py (the launcher), **not** trends_mcp.py.
> The launcher sets domain-specific env vars before the server starts.
Restart Claude Desktop. The trends server should appear with the tools
listed below (count depends on your enabled sources).
---
Configuration
**One source of truth: run.py.** Two ways to edit it:
A. Interactive TUI — configure.py (recommended)
Toggle sources with numbers, set arXiv weights with set 1 7, apply presets
with preset medical-imaging, save with [6]. The save action backs up to
run.py.bak, writes the new SETTINGS block (AST-based — never touches
non-config code), and runs pkill -f trends_mcp so Claude Desktop respawns
the server with the new config on next call.
> The TUI menu labels are in Korean; commands and presets are in English.
> i18n of the TUI itself is on the v0.2 roadmap.
Single-shot modes:
B. Direct edit — run.py SETTINGS block
Restart Claude Desktop after saving (or pkill -f trends_mcp).
C. From chat — trends_set_* tools
Same SETTINGS block, edited via MCP tool calls. The chat path and configure.py
read & write the same run.py (single source of truth), so changes from either