Skip to main content
Glama
salwks

mcp-techTrend

by salwks

trends-mcp

Documentación en coreano: 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.

Fuente

Herramientas

Notas

arXiv

arxiv_recent, arxiv_search

Round-robin por categoría para que las categorías pequeñas no sean eclipsadas por las grandes

PubMed

pubmed_search

Resúmenes completos vía efetch.fcgi

HF Daily Papers

paperswithcode_trending

Ordenado por votos de la comunidad (reemplaza la API de PwC que dejó de funcionar)

GitHub

github_trending, github_search

Scraping de la página de tendencias + API de búsqueda con filtro de fecha created:>

Hugging Face

huggingface_trending

Modelos / datasets / spaces, en tendencia o recientes

openFDA 510(k)

fda_510k_recent

Autorizaciones de dispositivos

openFDA Recalls

fda_recalls_recent

Eventos de retirada con filtro de clase

(agregadores)

trends_digest, trends_briefing

Llamadas paralelas a múltiples fuentes

trends_briefing es la herramienta principal: invoca "weekly news" / "주간 뉴스" y obtén un resumen con formato de periódico de todas las fuentes habilitadas, traducido automáticamente al idioma de conversación del usuario por el LLM.


Por qué existe esto

La mayoría de los servidores MCP académicos / de código / regulatorios son de una sola fuente. Este es multifuente y consciente del dominio: un investigador que rastrea IA de imágenes médicas, un ingeniero de ML que sigue artículos de ML, un analista de seguridad que observa CVEs y repositorios en tendencia — todos configuran una vez vía python configure.py, luego trends_briefing se convierte en el "periódico del lunes por la mañana" para su dominio.

Lo que lo hace útil:

  • Formato de periódico con sugerencia de traducción — el LLM traduce automáticamente el texto fuente (resúmenes de artículos, razones de retiradas, etc.) al idioma de tu conversación mientras preserva identificadores, URLs y valores métricos literalmente.

  • Round-robin por categoría para arXiv — cs.HC (~50 artículos/sem) no se ve eclipsado por cs.LG (~1500/sem) cuando ambos se rastrean juntos.

  • Caché TTL + coalescencia de solicitudes concurrentes — las llamadas repetidas y los resúmenes paralelos no saturan las APIs upstream.

  • No se requieren tokens. Las siete fuentes funcionan de forma anónima; los tokens solo aumentan el límite de tasa por fuente.

  • Lanzador de Python seguro en sandbox. Evita el bloque env de claude_desktop_config.json (que trunca valores con espacios en algunas compilaciones de macOS) configurando variables de entorno en Python antes de pasarlas al servidor.


Related MCP server: mcp-ai-news-server

Instalación

git clone https://github.com/salwks/mcp-techTrend.git
cd mcp-techTrend
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt

Conéctate a Claude Desktop editando ~/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"]
    }
  }
}

⚠️ args apunta a run.py (el lanzador), no a trends_mcp.py. El lanzador establece variables de entorno específicas del dominio antes de que se inicie el servidor.

Reinicia Claude Desktop. El servidor trends debería aparecer con 11 herramientas.


Configuración

Una única fuente de verdad: run.py. Dos formas de editarlo:

A. TUI interactiva — configure.py (recomendado)

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 saving

Alterna fuentes con números, establece pesos de arXiv con set 1 7, aplica preajustes con preset medical-imaging, guarda con [6]. La acción de guardar crea una copia de seguridad en run.py.bak, escribe el nuevo bloque SETTINGS (basado en AST — nunca toca código que no sea de configuración), y ejecuta pkill -f trends_mcp para que Claude Desktop reinicie el servidor con la nueva configuración en la siguiente llamada.

Las etiquetas del menú TUI están en coreano; los comandos y preajustes están en inglés. La internacionalización (i18n) de la propia TUI está en la hoja de ruta de la v0.2.

Modos de disparo único:

python configure.py --show       # print current config
python configure.py --restart    # pkill stale MCP processes

B. Edición directa — bloque SETTINGS de run.py

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/day

Reinicia Claude Desktop después de guardar (o pkill -f trends_mcp).

Preajustes

# 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"

Categorías comunes de arXiv (referencia completa: ARXIV_CATEGORIES.md):

Código

Campo

Artículos semanales (aprox)

cs.AI

Inteligencia Artificial

500–800

cs.LG

Aprendizaje Automático

1,500–2,000 (el más grande)

cs.CV

Visión por Computador

1,000–1,500

cs.CL

PLN

500–800

cs.HC

HCI / UX

50–100

cs.RO

Robótica

100–200

cs.CR

Seguridad

~200

eess.IV

Procesamiento de Imagen/Video (imágenes médicas)

100–200

q-bio.QM

Biología cuantitativa

50–100

Lista de permitidos de fuentes

TRENDS_ENABLED_SOURCES = "arxiv,github,huggingface,paperswithcode"
# → fda_510k, fda_recalls, pubmed tools won't appear in the tool list at all

Vacío / "*" / "all" = habilitar todo. Las fuentes deshabilitadas no registran sus herramientas, por lo que la lista de herramientas de chat se reduce. trends_digest y trends_briefing permanecen registrados y omiten las fuentes deshabilitadas correctamente.


Herramientas

Herramienta

Propósito

arxiv_recent

Artículos recientes en una categoría, por fecha de envío

arxiv_search

Búsqueda por palabra clave / sintaxis de campo (ti:, au:, abs:, cat:)

pubmed_search

Búsqueda en PubMed (términos MeSH, etiquetas de campo) — resúmenes vía efetch

paperswithcode_trending

HF Daily Papers, ordenado por votos de la comunidad

github_trending

Explorar github.com/trending (scraping HTML)

github_search

API de búsqueda de GitHub; days filtra por created:

huggingface_trending

Modelos / datasets / spaces de HF Hub

fda_510k_recent

Autorizaciones recientes de la FDA 510(k)

fda_recalls_recent

Retiradas recientes de dispositivos médicos de la FDA (filtro de clase)

trends_digest

Resumen en lista de viñetas multifuente, dado un tema

trends_briefing

Resumen de periódico multifuente; tema opcional

Todas las herramientas de búsqueda aceptan days=N para filtrar por los últimos N días. trends_briefing agrupa los resultados en secciones de 🎓 Investigación / 💻 Código y Modelos / 🏥 Regulatorio.

trends_digest

trends_briefing

Tema

requerido

opcional (modo "qué hay de nuevo")

Rango de fuentes

subconjunto configurable (predeterminado 4)

todas las fuentes habilitadas

Formato

resumen en lista de viñetas

formato de periódico agrupado

Caso de uso

inmersión profunda en un tema

resumen semanal regular


Caché

La caché TTL en memoria por proceso envuelve cada respuesta HTTP. Las solicitudes concurrentes identes se fusionan mediante asyncio.Lock por clave — N llamadores paralelos disparan una solicitud upstream.

Grupo TTL

Duración

Herramientas

Tendencias

5 min

github_trending, paperswithcode_trending, huggingface_trending (orden de tendencias), github_search (con days)

Predeterminado

10 min

arxiv_recent, arxiv_search, github_search, huggingface_trending (otros órdenes)

Estático

1 hora

pubmed_search, fda_510k_recent, fda_recalls_recent

Hasta 256 entradas; las más antiguas se eliminan cuando está lleno. No hay forma de deshabilitar — los TTL son lo suficientemente cortos como para que la obsolescencia esté limitada.


Limitaciones conocidas

  • GitHub Trending es scraping HTML — no existe una API oficial. Los cambios de diseño pueden romperlo. Sustituto de tendencias estable: github_search con days=7 y sort=stars.

  • trendingScore de HF no está documentado. La superficie de la API puede cambiar.

  • HF Daily Papers cubre ~50 artículos seleccionados al día, no todo arXiv. Es un feed de "de qué se habló", no exhaustivo.

  • arXiv no tiene tendencias nativas — las aproximamos mediante feeds de envíos recientes equilibrados por categoría.

  • El campo classification de openFDA a veces devuelve None incluso en retiradas clasificadas recientemente (retraso de datos upstream). El índice de búsqueda también tiene retraso.


Hoja de ruta (TODO)

  • v0.2: i18n para el menú TUI y los encabezados de sección del resumen

  • bioRxiv / medRxiv vía RSS

  • Semantic Scholar (grafo de citas)

  • Eventos adversos de openFDA (MAUDE)

  • Scraping de EUDAMED de la UE

  • PMDA (dispositivos médicos de Japón)

  • MFDS (dispositivos médicos de Corea)

  • Suite de pruebas basada en mocks para CI


Licencia

MIT

Available Tools

16 tools
arxiv_recentA
Read-only

Fetch recent arXiv papers in a category, sorted by submission date (newest first). days filters by published date.

Common categories: cs.AI (general AI), cs.LG (machine learning), cs.CV (computer vision), cs.CL (NLP), cs.HC (HCI / UX), cs.RO (robotics), cs.NE (neural networks), stat.ML (statistical ML), eess.IV (image/video processing — medical imaging lives here), eess.SP (signal processing), q-bio.QM (quantitative biology).

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYes
daysNo
max_resultsNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds behavioral context by stating the sorting order ('newest first') and that 'days filters by published date', which goes beyond the annotations. There is no contradiction between the description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences plus a helpful list of common categories. The first sentence clearly states the primary function, and the list adds value without superfluous text. Every sentence serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, 1 required, and an output schema (present but not shown), the description covers the main use case but omits details on result format, pagination, or rate limits. The lack of parameter explanations for most parameters reduces completeness, but the overall scope is clear for a simple read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only explains the 'days' parameter, noting it filters by 'published' date. It provides common category examples but does not explain the meaning or constraints of 'category', 'max_results', or 'response_format'. With 0% schema description coverage, the description fails to compensate for the lack of parameter documentation in the schema, leaving three out of four parameters undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Fetch recent arXiv papers in a category, sorted by submission date (newest first).' This provides a specific verb ('fetch'), resource ('recent arXiv papers'), and scope ('in a category'), differentiating it from the sibling tool 'arxiv_search' which focuses on specific search queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for browsing recent papers by category, but lacks explicit guidance on when to use this tool versus alternatives like 'arxiv_search'. It does not specify any conditions or exclusions, and does not mention that for specific keyword queries the user should use 'arxiv_search' instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_510k_recentA
Read-onlyIdempotent

Recent FDA 510(k) clearances via openFDA. Date filter is always applied. openFDA uses token-exact matching on string fields — for partial name matches use wildcards (e.g. device_name:mammo* not device_name:mammography).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
daysNo
max_resultsNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint), the description discloses that a date filter is always applied and explains the token-exact matching behavior, which is critical for correct query construction. This adds valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, immediately stating the purpose and then a critical usage detail. Every sentence provides value, and it is front-loaded with the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema and the tool's simplicity, the description adequately covers the essential behavior (date filter, string matching). It does not need to detail return format, but could mention pagination or result limits for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description partially compensates by explaining the 'query' parameter's wildcard usage and implying the 'days' parameter via the date filter. However, 'max_results' and 'response_format' are not mentioned, leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides recent FDA 510(k) clearances via openFDA, specifying the verb (list) and resource (clearances). While the name itself is informative, it does not explicitly distinguish from sibling fda_recalls_recent, but the content is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a crucial usage tip about token-exact matching and wildcard syntax for partial name searches. However, it does not provide guidance on when to prefer this tool over siblings or mention any prerequisites or context for using the date filter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fda_recalls_recentA
Read-onlyIdempotent

Recent FDA medical device recalls via openFDA. Optionally filter by class (1=most serious, 3=least). Note: openFDA query syntax uses token-exact matching on string fields — for partial matches use wildcards (e.g. product_description:mammog*).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
daysNo
class_levelNo
max_resultsNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds useful context beyond annotations, such as that it queries openFDA and the specifics of token-exact matching with wildcard syntax. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, efficient and front-loaded. The first sentence states purpose and optional filter, the second provides a critical usage note. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no schema descriptions, and an output schema, the description covers only the general purpose and one filter. It omits details for query (free text), days, max_results, and response_format, making it incomplete for full usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description only explains one parameter (class_level) and briefly mentions query syntax. The parameters query, days, max_results, and response_format are not described, leaving significant gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves recent FDA medical device recalls via openFDA, with optional filtering by class. This distinguishes it from sibling tools like fda_510k_recent and arxiv_recent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the class filter and provides a note on openFDA query syntax with wildcards, but does not explicitly state when not to use the tool or compare it to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.2.0
    • Addedtrends_get_config
    • Addedtrends_set_arxiv_categories
    • Addedtrends_set_enabled_sources
    • Addedtrends_set_pubmed_query
    • Addedtrends_set_token
  2. 11 tool updatesv0.1.0
    • First observedarxiv_recent
    • First observedarxiv_search
    • First observedfda_510k_recent
    • First observedfda_recalls_recent
    • First observedgithub_search
    • First observedgithub_trending
    • First observedhuggingface_trending
    • First observedpaperswithcode_trending
    • First observedpubmed_search
    • First observedtrends_briefing
    • First observedtrends_digest

TDQS

A4.4/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct source or operation (e.g., arXiv search vs. recent, FDA 510k vs. recalls, GitHub search vs. trending). Even config tools are clearly separated. No ambiguity between tools.

Naming Consistency5/5

All tools follow a consistent pattern: source_action (e.g., arxiv_recent, github_search) for data tools, and trends_verb for configuration tools. Lowercase with underscores throughout.

Tool Count5/5

16 tools is well-scoped for a multi-source trend aggregation server. Each tool covers a specific need across multiple sources and configuration, without bloat.

Completeness5/5

The tool set covers all necessary operations for the domain: retrieval (recent, search, trending) per source, aggregation (briefing, digest), and full configuration (sources, categories, tokens). No obvious gaps.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A personalized news briefing MCP server that filters information from RSS, Reddit, and Hacker News based on user-defined interests and preferences. It also includes stock monitoring and alerting features.
    29
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Local MCP server that ingests and normalizes recent AI, tech, and research news from multiple sources, exposing tools for media agents to query and retrieve article content on demand.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that fetches, dedupes, and scores women's-health & FemTech research and industry news, designed to feed GitHub Agentic Workflows and an auto-updating Astro + RSS site.
    MIT

Appeared in Searches