Skip to main content
Glama
salwks

mcp-techTrend

by salwks

trends-mcp

韩语文档:README.ko.md

一个单一的 MCP 服务器,可从七个来源获取学术 + 代码 + 医疗器械监管趋势数据,并生成报纸风格的简报——内置了针对特定领域的调优功能。

来源

工具

说明

arXiv

arxiv_recent, arxiv_search

按类别轮询,防止小类别被大类别淹没

PubMed

pubmed_search

通过 efetch.fcgi 获取完整摘要

HF Daily Papers

paperswithcode_trending

按社区点赞数排序(替代已停用的 PwC API)

GitHub

github_trending, github_search

热门页面抓取 + 带 created:> 日期过滤的搜索 API

Hugging Face

huggingface_trending

模型 / 数据集 / 空间,热门或最新

openFDA 510(k)

fda_510k_recent

器械许可

openFDA Recalls

fda_recalls_recent

带分类过滤的召回事件

(聚合器)

trends_digest, trends_briefing

多源并行调用

trends_briefing 是核心工具:调用“weekly news” / “周报”即可获取涵盖所有已启用来源的报纸格式简报,并由 LLM 自动翻译成用户的对话语言。


为什么会有这个项目

大多数学术 / 代码 / 监管 MCP 服务器都是单一来源的。本项目不仅支持多源,而且具备领域感知能力:无论是追踪医学影像 AI 的研究人员、关注 ML 论文的机器学习工程师,还是监控 CVE 和热门仓库的安全分析师,只需通过 python configure.py 配置一次,trends_briefing 就会成为他们专属的“周一早报”。

其核心优势:

  • 报纸格式及翻译提示 — LLM 会自动将源文本(论文摘要、召回原因等)翻译成您的对话语言,同时完整保留标识符、URL 和度量值。

  • arXiv 按类别轮询 — 当 cs.HC(约 50 篇/周)与 cs.LG(约 1500 篇/周)同时被追踪时,前者不会被后者淹没。

  • TTL 缓存 + 并发请求合并 — 重复调用和并行简报不会对上游 API 造成压力。

  • 无需 Token。所有七个来源均可匿名工作;Token 仅用于提高各来源的速率限制上限。

  • 沙盒安全的 Python 启动器。通过在 Python 中设置环境变量后再交给服务器,绕过了 claude_desktop_config.json 中 env 块(在某些 macOS 构建版本中会截断包含空格的值)的限制。


Related MCP server: mcp-ai-news-server

安装

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

通过编辑 ~/Library/Application Support/Claude/claude_desktop_config.json 连接到 Claude Desktop:

{
  "mcpServers": {
    "trends": {
      "command": "/path/to/trends-mcp/.venv/bin/python",
      "args": ["/path/to/trends-mcp/run.py"]
    }
  }
}

⚠️ args 指向 run.py(启动器),而非 trends_mcp.py。 启动器会在服务器启动前设置特定领域的环境变量。

重启 Claude Desktop。trends 服务器应显示 11 个工具。


配置

单一事实来源:run.py。 有两种编辑方式:

A. 交互式 TUI — configure.py(推荐)

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

使用数字切换来源,通过 set 1 7 设置 arXiv 权重,使用 preset medical-imaging 应用预设,通过 [6] 保存。保存操作会备份至 run.py.bak,写入新的 SETTINGS 块(基于 AST,不会触及非配置代码),并运行 pkill -f trends_mcp,以便 Claude Desktop 在下次调用时以新配置重启服务器。

TUI 菜单标签为韩语;命令和预设为英语。 TUI 本身的国际化(i18n)在 v0.2 路线图中。

单次运行模式:

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

B. 直接编辑 — run.py SETTINGS 块

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

保存后重启 Claude Desktop(或运行 pkill -f trends_mcp)。

预设

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

常见的 arXiv 类别(完整参考:ARXIV_CATEGORIES.md):

代码

领域

每周论文数(约)

cs.AI

人工智能

500–800

cs.LG

机器学习

1,500–2,000 (最大)

cs.CV

计算机视觉

1,000–1,500

cs.CL

自然语言处理

500–800

cs.HC

人机交互 / UX

50–100

cs.RO

机器人学

100–200

cs.CR

安全

~200

eess.IV

图像/视频处理(医学影像)

100–200

q-bio.QM

定量生物学

50–100

来源白名单

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

留空 / "*" / "all" = 启用所有。禁用的来源不会注册其工具,因此聊天工具列表本身会缩减。trends_digest 和 trends_briefing 仍会注册,并优雅地跳过已禁用的来源。


工具

工具

用途

arxiv_recent

按提交日期获取某类别的最新论文

arxiv_search

关键词 / 字段语法搜索 (ti:, au:, abs:, cat:)

pubmed_search

PubMed 搜索(MeSH 术语、字段标签)— 通过 efetch 获取摘要

paperswithcode_trending

HF Daily Papers,按社区点赞数排序

github_trending

浏览 github.com/trending (HTML 抓取)

github_search

GitHub 搜索 API;days 通过 created: 过滤

huggingface_trending

HF Hub 模型 / 数据集 / 空间

fda_510k_recent

最近的 FDA 510(k) 许可

fda_recalls_recent

最近的 FDA 医疗器械召回(分类过滤)

trends_digest

给定主题的多源要点摘要

trends_briefing

多源报纸简报;主题可选

所有搜索工具均接受 days=N 进行最近 N 天的过滤。trends_briefing 将结果分为 🎓 研究 / 💻 代码与模型 / 🏥 监管部分。

trends_digest

trends_briefing

主题

必填

可选(“最新动态”模式)

来源范围

可配置子集(默认 4 个)

所有已启用来源

格式

要点摘要

分组报纸格式

用例

主题深度挖掘

定期周报


缓存

每个进程内的内存 TTL 缓存封装了每个 HTTP 响应。并发的相同请求通过每个键的 asyncio.Lock 进行合并 — N 个并行调用者仅触发一次上游请求。

TTL 组

时长

工具

热门

5 分钟

github_trending, paperswithcode_trending, huggingface_trending (热门排序), github_search (带 days)

默认

10 分钟

arxiv_recent, arxiv_search, github_search, huggingface_trending (其他排序)

静态

1 小时

pubmed_search, fda_510k_recent, fda_recalls_recent

最多 256 条目;存满时驱逐最旧的。无法禁用 — TTL 时间足够短,陈旧度在可控范围内。


已知限制

  • GitHub Trending 是 HTML 抓取 — 不存在官方 API。布局更改可能会导致其失效。稳定的热门替代方案:带 days=7 和 sort=stars 的 github_search。

  • HF trendingScore 未公开文档。API 接口可能会发生变化。

  • HF Daily Papers 每天涵盖约 50 篇精选论文,并非 arXiv 的全部。它是一个“讨论热点”源,而非详尽列表。

  • arXiv 没有原生的热门功能 — 我们通过按类别平衡的最新提交源进行近似。

  • openFDA classification 字段有时即使在最近分类的召回中也会返回 None(上游数据滞后)。搜索索引也存在滞后。


路线图 (TODO)

  • v0.2: TUI 菜单和简报章节标题的国际化 (i18n)

  • 通过 RSS 获取 bioRxiv / medRxiv

  • Semantic Scholar (引用图谱)

  • openFDA 不良事件 (MAUDE)

  • EU EUDAMED 抓取

  • PMDA (日本医疗器械)

  • MFDS (韩国医疗器械)

  • 用于 CI 的 Mock 测试套件


许可证

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