Skip to main content
Glama
salwks

mcp-techTrend

by salwks

trends-mcp

日本語ドキュメント: README.md

学術・コード・医療機器規制のトレンドデータを7つのソースから収集し、ドメインごとの調整機能を備えた新聞形式のブリーフィングを作成する単一の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論文を追うMLエンジニア、CVEやトレンドリポジトリを監視するセキュリティアナリストなど、全員がpython configure.pyで一度設定すれば、trends_briefingが彼らのドメインにとっての「月曜朝の新聞」となります。

便利な点:

  • 翻訳ヒント付きの新聞形式 — LLMがソーステキスト(論文アブストラクト、リコール理由など)を会話言語に自動翻訳しつつ、識別子、URL、指標値はそのまま保持します。

  • arXivのカテゴリ別ラウンドロビン — cs.HC(週約50本)がcs.LG(週約1500本)に埋もれることなく、両方を同時に追跡できます。

  • TTLキャッシュ + 並列リクエストの統合 — 繰り返し呼び出しや並列ブリーフィングがアップストリームAPIに負荷をかけません。

  • トークン不要 — 7つのソースすべてが匿名で動作します。トークンはソースごとのレート制限の上限を引き上げるためにのみ使用します。

  • サンドボックスセーフなPythonランチャー — claude_desktop_config.jsonのenvブロック(macOSの一部ビルドで空白を含む値を切り詰める問題)を回避し、サーバーに渡す前にPythonで環境変数を設定します。


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はtrends_mcp.pyではなく、run.py(ランチャー)を指すようにしてください。 ランチャーはサーバー起動前にドメイン固有の環境変数を設定します。

Claude Desktopを再起動します。trendsサーバーが11個のツールと共に表示されるはずです。


設定

唯一の真実のソース: run.py。編集方法は2つあります:

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

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

複数ソースの新聞形式ブリーフィング(トピックは任意)

すべての検索ツールは、直近N日間のフィルタリングのためにdays=Nを受け付けます。trends_briefingは結果を 🎓研究 / 💻コード&モデル / 🏥規制 セクションにグループ化します。

trends_digest

trends_briefing

トピック

必須

任意(「最新情報」モード)

ソース範囲

設定可能なサブセット(デフォルト4)

有効な全ソース

形式

箇条書きダイジェスト

グループ化された新聞形式

ユースケース

トピックの深掘り

定期的な週刊ブリーフィング


キャッシュ

プロセスごとのメモリ内TTLキャッシュがすべてのHTTPレスポンスをラップします。同一の同時リクエストはasyncio.Lock経由で統合され、N個の並列呼び出しが1つのアップストリームリクエストを発行します。

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 は厳選された1日約50本の論文をカバーしており、arXivのすべてではありません。「話題になったもの」のフィードであり、網羅的ではありません。

  • arXiv にはネイティブなトレンド機能がないため、カテゴリバランスを考慮した最新投稿フィードで近似しています。

  • openFDA classification フィールド は、最近分類されたリコールであってもNoneを返すことがあります(アップストリームデータの遅延)。検索インデックスも遅延します。


ロードマップ (TODO)

  • v0.2: TUIメニューとブリーフィングセクション見出しの国際化(i18n)

  • RSS経由のbioRxiv / medRxiv対応

  • Semantic Scholar(引用グラフ)

  • openFDA有害事象(MAUDE)

  • EU EUDAMEDスクレイピング

  • PMDA(日本の医療機器)

  • MFDS(韓国の医療機器)

  • CI用のモックベーステストスイート


ライセンス

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