mcp-techTrend
Provides tools for searching and retrieving recent academic papers from arXiv across various categories.
Provides tools for browsing trending repositories and searching GitHub repositories with date filters.
Provides tools for accessing trending models, datasets, and spaces from the Hugging Face Hub.
Provides tools for searching PubMed and retrieving full abstracts of biomedical literature.
trends-mcp
한국어 문서: 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 |
| Per-category round-robin so small categories aren't drowned by big ones |
PubMed |
| Full abstracts via |
HF Daily Papers |
| Sorted by community upvotes (replaces sunset PwC API) |
GitHub |
| Trending page scrape + Search API with |
Hugging Face |
| Models / datasets / spaces, trending or recent |
openFDA 510(k) |
| Device clearances |
openFDA Recalls |
| Recall events with class filter |
(aggregators) |
| 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 bycs.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.jsonenvblock (which truncates whitespace-containing values on some macOS builds) by setting environment variables in Python before handing off to the server.
Install
git clone https://github.com/salwks/mcp-techTrend.git
cd mcp-techTrend
python3 -m venv .venv
.venv/bin/pip install -r requirements.txtConnect to Claude Desktop by editing
~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"trends": {
"command": "/path/to/trends-mcp/.venv/bin/python",
"args": ["/path/to/trends-mcp/run.py"]
}
}
}⚠️
argspoints atrun.py(the launcher), nottrends_mcp.py. The launcher sets domain-specific env vars before the server starts.
Restart Claude Desktop. The trends server should appear with 11 tools.
Configuration
One source of truth: run.py. Two ways to edit it:
A. Interactive TUI — configure.py (recommended)
python configure.py═══ trends-mcp 설정 ═══
[1] Active sources (7/7 enabled)
[2] arXiv categories (4 entries · 13 papers/wk)
[3] PubMed query
[4] API tokens (0/4 set)
[5] Show current config
[6] Save and restart
[7] Quit without savingToggle 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:
python configure.py --show # print current config
python configure.py --restart # pkill stale MCP processesB. Direct edit — run.py SETTINGS block
TRENDS_ENABLED_SOURCES = "" # "" = all
TRENDS_ARXIV_CATEGORIES = "cs.LG:5,cs.CV:3,cs.CL:3,cs.AI:2"
TRENDS_DEFAULT_PUBMED_QUERY = "(deep learning OR AI) AND (medical OR clinical)"
# GITHUB_TOKEN = "ghp_..." # raises 60 → 5,000 req/h
# HF_TOKEN = "hf_..."
# NCBI_API_KEY = "..." # raises 3 → 10 req/s for PubMed
# OPENFDA_API_KEY = "..." # raises 240 → 120,000 req/dayRestart Claude Desktop after saving (or pkill -f trends_mcp).
Presets
# AI/ML researcher (default)
TRENDS_ARXIV_CATEGORIES = "cs.LG:5,cs.CV:3,cs.CL:3,cs.AI:2"
# Medical imaging / clinical AI
TRENDS_ARXIV_CATEGORIES = "eess.IV:5,cs.CV:3,cs.HC:2,q-bio.QM:2"
# Robotics
TRENDS_ARXIV_CATEGORIES = "cs.RO:5,cs.AI:3,cs.LG:2,cs.CV:2"
# HCI / UX
TRENDS_ARXIV_CATEGORIES = "cs.HC:5,cs.CY:3,cs.AI:2,cs.SI:2"
# Security
TRENDS_ARXIV_CATEGORIES = "cs.CR:5,cs.LG:2,cs.NI:2"
# Computational biology
TRENDS_ARXIV_CATEGORIES = "q-bio.QM:4,q-bio.GN:3,q-bio.BM:3,stat.AP:2"Common arXiv categories (full reference: ARXIV_CATEGORIES.md):
Code | Field | Weekly papers (approx) |
| Artificial Intelligence | 500–800 |
| Machine Learning | 1,500–2,000 (largest) |
| Computer Vision | 1,000–1,500 |
| NLP | 500–800 |
| HCI / UX | 50–100 |
| Robotics | 100–200 |
| Security | ~200 |
| Image/Video Processing (medical imaging) | 100–200 |
| Quantitative biology | 50–100 |
Source allowlist
TRENDS_ENABLED_SOURCES = "arxiv,github,huggingface,paperswithcode"
# → fda_510k, fda_recalls, pubmed tools won't appear in the tool list at allEmpty / "*" / "all" = enable everything. Disabled sources don't register
their tools, so the chat tool list itself shrinks. trends_digest and
trends_briefing remain registered and skip disabled sources gracefully.
Tools
Tool | Purpose |
| Recent papers in one category, by submission date |
| Keyword / field-syntax search ( |
| PubMed search (MeSH terms, field tags) — abstracts via efetch |
| HF Daily Papers, sorted by community upvotes |
| Browse github.com/trending (HTML scrape) |
| GitHub Search API; |
| HF Hub models / datasets / spaces |
| Recent FDA 510(k) clearances |
| Recent FDA medical-device recalls (class filter) |
| Multi-source bullet-list digest, given a topic |
| Multi-source newspaper briefing; topic optional |
All search tools accept days=N for recent-N-days filtering. trends_briefing
groups results into 🎓 Research / 💻 Code & Models / 🏥 Regulatory sections.
trends_digest vs trends_briefing
|
| |
Topic | required | optional ("what's new" mode) |
Source range | configurable subset (default 4) | all enabled sources |
Format | bullet-list digest | grouped newspaper format |
Use case | topic deep-dive | regular weekly briefing |
Caching
Per-process in-memory TTL cache wraps every HTTP response. Concurrent
identical requests are coalesced via per-key asyncio.Lock — N parallel
callers fire one upstream request.
TTL group | Length | Tools |
Trending | 5 min |
|
Default | 10 min |
|
Static | 1 hour |
|
Up to 256 entries; oldest evicted when full. No way to disable — TTLs are short enough that staleness is bounded.
Known limitations
GitHub Trending is HTML scraping — no official API exists. Layout changes can break it. Stable trending substitute:
github_searchwithdays=7andsort=stars.HF
trendingScoreis undocumented. API surface may change.HF Daily Papers covers ~50 curated papers/day, not all of arXiv. It's a "what was talked about" feed, not exhaustive.
arXiv has no native trending — we approximate via category-balanced recent-submissions feeds.
openFDA
classificationfield sometimes returnsNoneeven on recently classified recalls (upstream data lag). Search index lags too.
Roadmap (TODO)
v0.2: i18n for the TUI menu and briefing section headers
bioRxiv / medRxiv via RSS
Semantic Scholar (citation graph)
openFDA Adverse Events (MAUDE)
EU EUDAMED scraping
PMDA (Japan medical devices)
MFDS (Korea medical devices)
Mock-based test suite for CI
License
Maintenance
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/salwks/mcp-techTrend'
If you have feedback or need assistance with the MCP directory API, please join our Discord server