mcpField
P
Paper Distill MCP

Paper Distill MCP

ローカル
github.com/Eclipse-Cj検索6831 週間前に更新

Paper Distill MCP について

Paper Distill MCP は、11 のデータソースを並列に検索し、重み付けスコアで論文を順位付けする MCP サーバーです。現在は初期開発段階にあり、定期的な論文ダイジェストを受け取りたい研究者向けです。

主な機能

  1. 0111 の学術データソースを並列検索
  2. 02重みを調整できる 4 次元スコアリング
  3. 03オプションのデュアル AI によるブラインドレビュー
  4. 04Telegram、Discord、Feishu、WeCom への配信
  5. 05Zotero と Obsidian との連携

活用シーン

  1. 01研究トピックごとに新着論文を毎日絞り込んで配信
  2. 02選定した論文を Zotero ライブラリに保存
  3. 03論文ごとの Obsidian ノートカードを生成

MCP 対応

uvx、pip、Docker で起動する MCP サーバーとして動作し、Claude Desktop、Claude Code、Cursor、VS Code などの MCP クライアントから検索、ランキング、配信のツールを利用できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"eclipse-cj-paper-distill": {
"command": "uvx",
"args": [
"paper-distill-mcp"
],
"env": {
"OPENALEX_EMAIL": "<OPENALEX_EMAIL>",
"CORE_API_KEY": "<CORE_API_KEY>",
"TELEGRAM_BOT_TOKEN": "<TELEGRAM_BOT_TOKEN>",
"TELEGRAM_CHAT_ID": "<TELEGRAM_CHAT_ID>",
"DISCORD_WEBHOOK_URL": "<DISCORD_WEBHOOK_URL>",
"ZOTERO_LIBRARY_ID": "<ZOTERO_LIBRARY_ID>",
"ZOTERO_API_KEY": "<ZOTERO_API_KEY>"
}
}
}
}
起動コマンドuvx paper-distill-mcp
設定が必要な環境変数
OPENALEX_EMAILEmail for OpenAlex polite pool (higher rate limits) and Unpaywall queries
CORE_API_KEYシークレットCORE API key for enhanced open-access paper retrieval (free at core.ac.uk)
TELEGRAM_BOT_TOKENシークレットTelegram bot token for paper delivery
TELEGRAM_CHAT_IDTelegram chat ID for paper delivery
DISCORD_WEBHOOK_URLシークレットDiscord webhook URL for paper delivery
ZOTERO_LIBRARY_IDZotero user ID for saving papers to your library
ZOTERO_API_KEYシークレットZotero API key for saving papers to your library

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypipaper-distill-mcp0.2.4

ツール

19

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
querystringはい検索クエリ文字列(例:"LLM reasoning chain-of-thought")
max_resultsintegerいいえ返す結果の最大数(デフォルト 10)

詳細

📚 Paper Distill MCP Server

License: AGPL-3.0 Python 3.10+ PyPI version CI

Model Context Protocol を基盤とした、学術論文の検索、インテリジェントな選別、マルチプラットフォームへの配信。

すべての MCP クライアントに対応しています:Claude Desktop、Claude Code、Cursor、Trae、Codex CLI、Gemini CLI、OpenClaw、VS Code、Zed など。

⚠️ 開発初期段階です。 多くの機能はまだ検証中であり、バグや不安定な動作が含まれる可能性があります。フィードバックやバグ報告を歓迎します!


✨ 特長

  • 🔍 11の情報源を並行検索 — OpenAlex、Semantic Scholar、PubMed、arXiv、Papers with Code、CrossRef、Europe PMC、bioRxiv、DBLP、CORE、Unpaywall
  • 🤖 適応型AI配信 — エージェントが変化する研究関心を追跡し、検索キーワードとおすすめを時間とともに自動で最適化します
  • 📊 4次元の重み付けランキング — 関連性 × 新しさ × 影響度 × 新規性。重みは完全にカスタマイズ可能です
  • 👥 2つのAIによるブラインドレビュー — 2人のAIレビュアーが独立して論文を選別し、チーフレビュアーが最終的な配信/繰り越し/除外の判断をまとめます(任意)
  • 🧹 スクレイパーへの委任 — 要旨の抽出を低コストのエージェントまたはAPIに委任して、トークン消費を大幅に削減できます
  • 🌐 個人用論文ライブラリサイト — Astro + Vercel による自動デプロイ。プッシュのたびに30秒以内にサイトが更新されます
  • 📬 マルチプラットフォーム配信 — Telegram / Discord / Feishu / WeCom
  • 📦 Zotero 連携 — 1つのコマンドで論文を Zotero に保存できます
  • 📝 Obsidian 連携 — Zotero へのバックリンク付き論文ノートカードを自動生成します。要約モードとテンプレートモードに対応しています

🚀 クイックインストール

uvx paper-distill-mcp

以上です。AI クライアントがすべてのツールを自動的に検出します。基本的な論文検索に API キーは必要ありません。

uv がありませんか? → curl -LsSf https://astral.sh/uv/install.sh | sh または brew install uv

その他のインストール方法(pip / Homebrew / Docker / ソース)

pip:

pip install paper-distill-mcp

Homebrew:

brew tap Eclipse-Cj/tap
brew install paper-distill-mcp

Docker:

docker run -i --rm ghcr.io/eclipse-cj/paper-distill-mcp

ソースから(開発者向け):

git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git
cd paper-distill-mcp
python3 -m venv .venv && .venv/bin/pip install --upgrade pip && .venv/bin/pip install -e .

🔗 AI クライアントへの接続

Claude Desktop

claude_desktop_config.json に追加します(Settings → Developer → Edit Config):

{
  "mcpServers": {
    "paper-distill": {
      "command": "uvx",
      "args": ["paper-distill-mcp"]
    }
  }
}
Claude Code
claude mcp add paper-distill -- uvx paper-distill-mcp

または .mcp.json に追加します:

{
  "mcpServers": {
    "paper-distill": {
      "command": "uvx",
      "args": ["paper-distill-mcp"]
    }
  }
}
Codex CLI(OpenAI)

~/.codex/config.toml に追加します:

[mcp_servers.paper-distill]
command = "uvx"
args = ["paper-distill-mcp"]
Gemini CLI(Google)

~/.gemini/settings.json に追加します:

{
  "mcpServers": {
    "paper-distill": {
      "command": "uvx",
      "args": ["paper-distill-mcp"]
    }
  }
}
OpenClaw
mcporter config add paper-distill --command uvx --scope home -- paper-distill-mcp
mcporter list  # verify

削除するには:mcporter config remove paper-distill

OpenClaw — ソースからインストール
git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git ~/.openclaw/tools/paper-distill-mcp
cd ~/.openclaw/tools/paper-distill-mcp
uv venv .venv && uv pip install .
mcporter config add paper-distill \
  --command ~/.openclaw/tools/paper-distill-mcp/.venv/bin/python3 \
  --scope home \
  -- -m mcp_server.server
mcporter list

削除するには:rm -rf ~/.openclaw/tools/paper-distill-mcp && mcporter config remove paper-distill

その他のクライアント(Cursor、VS Code、Windsurf、Zed、Trae)

同じ JSON 設定を使いますが、設定ファイルのパスは異なります:

クライアント設定パス
Claude Desktopclaude_desktop_config.json
TraeSettings → MCP → Add
Cursor~/.cursor/mcp.json
VS Code.vscode/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
Zedsettings.json
HTTP トランスポート(リモート/ホスト型)
paper-distill-mcp --transport http --port 8765

🎯 はじめに

クライアントを接続したら、エージェントに 「initialize paper-distill」 と伝えてください。setup() が呼び出され、次の設定が順に案内されます。

  1. 研究トピック — 関心のある分野を自然な言葉で説明すると、AI がキーワードを抽出します
  2. 配信プラットフォーム — Telegram / Discord / Feishu / WeCom を設定します(任意)
  3. 論文ライブラリサイト — 自動で更新される個人用論文ライブラリを作成します(任意)
  4. スクレイパーの委任先 — 要旨の抽出を依頼する低コストのエージェントまたは API を指定します(推奨)
  5. 設定 — 論文数、ランキングの重み、レビュー方法などを設定します
  6. 初回検索 — pool_refresh() で論文プールを更新します

すべての設定は、会話を通じていつでも変更できます。

  • 「次回は論文を8件プッシュして」
  • 「新しいトピックを追加:RAG retrieval」
  • 「二重AIブラインドレビューを有効にして」
  • 「新しさの重みを上げて」

⚙️ 設定リファレンス

すべてのパラメーターは configure() または add_topic() で設定できます。ファイルを手動で編集する必要はありません。

研究トピック(add_topic / manage_topics)
パラメーター説明デフォルト
keyトピック識別子(例:"llm-reasoning")—
label表示名(例:"LLM Reasoning")—
keywords検索キーワード。3〜5個を推奨—
weightトピックの優先度。0.0〜1.0(高いほど論文数が増えます)1.0
blocked削除せずに一時的に無効化しますfalse
論文数とレビュー(configure)
パラメーター選択肢デフォルト説明
paper_count_value任意の整数61回のプッシュあたりの論文数
paper_count_mode"at_most" / "at_least" / "exactly""at_most"件数モード
picks_per_reviewer任意の整数5レビュアーごとの候補数
review_mode"single" / "dual""single"単一AIレビューまたは二重ブラインドレビュー
custom_focus自由記述""カスタム選定基準

💡 二重ブラインドレビュー:2人の独立したAIレビュアーがそれぞれ論文を候補として選定し、チーフレビュアーが最終的にプッシュ、繰り越し、破棄を判断します。選定されなかった論文は破棄されず、次回まで保留されます。configure(review_mode="dual") で有効にできます。

ランキングの重み(configure)

論文のスコアリングを制御します。4つの重みの合計は約1.0にしてください。

パラメーター評価対象デフォルト
w_relevanceキーワードとトピックの一致度0.55
w_recency論文の公開時期0.20
w_impact被引用数(対数正規化)0.15
w_novelty初登場かどうか0.10

例:「最近の論文を優先して」→ configure(w_recency=0.35, w_relevance=0.40)

スクレイパー/要旨抽出の委任先(configure)

要旨の抽出は、最も多くのトークンを消費する処理です。デフォルトではメインエージェントで実行されますが、より低コストのモデルに委任して、大幅にコストを削減できます。

パラメーター値説明
summarizer"self"メインエージェントが抽出を担当します(最も高コスト)
エージェント名(例:"scraper")低コストのサブエージェントに委任します
API URL外部LLM API(DeepSeek、Ollamaなど)を呼び出します

🔧 強く推奨:論文が30件を超えると、最先端モデルのコストはすぐにかさみます。トークン100万個あたり0.14ドルのモデルでも、同じ品質で抽出を行えます。configure(summarizer="scraper") で設定してください。

論文プールとスキャンバッチ(configure)
パラメーター説明デフォルト
scan_batches論文プールを N 個のバッチに分割し、N+1 日かけてレビューします2(3 日間)

pool_refresh() は 11 個すべての API を検索して、プールを満たします。その後、1 回のレビューで 60 件を超える論文がまとめて表示されないよう、プールを日ごとの AI レビュー用バッチに分割します。

  • scan_batches=2(デフォルト):1 日目に前半、2 日目に後半をレビューし、3 日目に確定します
  • scan_batches=3:毎日 3 分の 1 ずつレビューし、4 日目に確定します

すべてのバッチがレビューされるとプールが使い切られ、次回の実行時に新しい API 検索が自動的に開始されます。

配信プラットフォーム(環境変数)
プラットフォーム環境変数platform の値
TelegramTELEGRAM_BOT_TOKEN + TELEGRAM_CHAT_ID"telegram"
DiscordDISCORD_WEBHOOK_URL"discord"
FeishuFEISHU_WEBHOOK_URL"feishu"
WeComWECOM_WEBHOOK_URL"wecom"

⚠️ 重要:環境変数はシステム環境変数ではなく、MCP クライアントの設定の env フィールドに設定してください。そうしないと、send_push() が Webhook URL にアクセスできず、AI が Webhook を直接呼び出すスクリプトを生成して、エンコーディングの問題が発生する可能性があります。

設定例(WeCom + Claude Desktop):

{
  "mcpServers": {
    "paper-distill": {
      "command": "uvx",
      "args": ["paper-distill-mcp"],
      "env": {
        "WECOM_WEBHOOK_URL": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"
      }
    }
  }
}

設定を編集した後、MCP クライアントを再起動してください。

プッシュメッセージの形式(固定):

1. Paper Title (Year)
   Journal Name
   - One-sentence summary
   - Why it was selected
   https://doi.org/...
論文ライブラリーサイト(configure)

個人用論文ライブラリーサイトです。プッシュのたびに自動更新されます。Astro + Vercel(無料プラン)で構築されています。

パラメーター説明
site_deploy_hookVercel のデプロイフック URL(サイトの再ビルドを実行)
site_repo_path論文ライブラリーリポジトリーのローカルパス

セットアップ手順(AI エージェントが案内します):

  1. paper-library-template からリポジトリーを作成します
  2. Vercel に接続してデプロイします
  3. Vercel でデプロイフックを作成します(Settings > Git > Deploy Hooks)
  4. フック URL をエージェントに伝えます → configure(site_deploy_hook=...) で保存されます

セットアップ後、finalize_review() を呼び出すたびに、ダイジェスト JSON がサイトリポジトリーにプッシュされ、Vercel の再ビルドが実行されます。サイトは約 30 秒で更新されます。

Zotero 連携

コマンド 1 つで論文を Zotero に保存できます。Zotero アカウントと API キーが必要です。

認証情報の取得方法:

  1. API キー:zotero.org/settings/keys/new にアクセスし、「Allow library access」+「Allow write access」にチェックを入れて、「Save Key」をクリックします
  2. ライブラリー ID:zotero.org/settings/keys にアクセスすると、ページ上部にユーザー ID が表示されます

MCP クライアントの設定に追加:

{
  "mcpServers": {
    "paper-distill": {
      "command": "uvx",
      "args": ["paper-distill-mcp"],
      "env": {
        "ZOTERO_LIBRARY_ID": "your userID",
        "ZOTERO_API_KEY": "your API key"
      }
    }
  }
}

セットアップ後、プッシュの後に collect 1 3 と返信すると、論文 1 と 3 が Zotero に保存され、トピックごとのフォルダーに自動で振り分けられます。

すべての環境変数
変数説明必須
OPENALEX_EMAILOpenAlex API のレート制限を緩和します。Unpaywall にも使用されます任意
CORE_API_KEYCORE API キー(無料登録)任意
DEEPSEEK_API_KEYDeepSeek による検索機能の強化任意
ZOTERO_LIBRARY_ID + ZOTERO_API_KEY論文を Zotero に保存します任意
SITE_URL論文ライブラリーサイトの URL任意
PAPER_DISTILL_DATA_DIRデータディレクトリーデフォルト:~/.paper-distill/

🛠️ ツール(全 19 個)

セットアップと設定
ツール説明
setup()最初の呼び出し — 新規インストールを検出し、初期化手順を案内します
add_topic(key, label, keywords)検索キーワードを指定して研究トピックを追加します
configure(...)論文数、ランキングの重み、レビューモードなど、任意の設定を更新します
検索とキュレーション
ツール説明
search_papers(query)11 のソースを並列検索します
rank_papers(papers)4 次元の重み付けスコアリングを行います
filter_duplicates(papers)以前にプッシュした論文と照合して重複を除外します
毎日のパイプライン(論文プールモード)
ツール説明
pool_refresh(topic?)11 の API をすべて検索し、論文プールを作成します
prepare_summarize(custom_focus?)AI による要旨抽出プロンプトを生成します
prepare_review(dual?)レビュープロンプトを生成します — AI がプッシュ/保留/破棄を判断します
finalize_review(selections)AI の判断を処理し、プールを更新して、プッシュメッセージを出力します
pool_status()プールの状態を表示します:件数、スキャン日、枯渇しているかどうか
collect(paper_indices)論文を Zotero に保存し、Obsidian ノートを生成します
セッションと出力
ツール説明
init_session配信プラットフォームを検出し、研究コンテキストを読み込みます
load_session_context過去の研究コンテキストを読み込みます
generate_digest(papers, date)出力ファイル(JSONL、サイト、Obsidian)を生成します
send_push(date, papers, platform)Telegram / Discord / Feishu / WeCom に配信します
collect_to_zotero(paper_ids)DOI を使って論文を Zotero に保存します
manage_topics(action, topic)トピックの一覧表示/無効化/有効化/重みの変更を行います
ingest_research_context(text)セッション間で研究コンテキストを引き継ぎます

🏗️ アーキテクチャ

AI client (Claude Code / Codex CLI / Gemini CLI / Cursor / ...)
    ↓ MCP (stdio or HTTP)
paper-distill-mcp
    ├── search/         — 11-source academic search (with OA full-text enrichment)
    ├── curate/         — scoring + deduplication
    ├── generate/       — output (JSONL, Obsidian, site)
    ├── bot/            — push formatting (4 platforms)
    └── integrations/   — Zotero API

このサーバーは内部で LLM を呼び出しません。検索、ランキング、重複排除はすべて純粋なデータ操作です。インテリジェンスは AI クライアントが担います。


📖 ペイウォール論文とオープンアクセス

システムはデフォルトですべての論文(購読制ジャーナルを含む)を検索し、次の方法で無料の全文へのアクセスを最大化します。

  1. CORE — 世界最大の OA アグリゲーター(2 億件以上の論文)で、機関リポジトリに著者がセルフアーカイブしたバージョンを収録しています
  2. Unpaywall — 検索結果を統合した後、DOI を使って合法的に無料公開されている PDF を自動検索します(プレプリント、グリーン OA、著者版)

無料版がない論文については、システムは DOI リンクを返します。機関の VPN にアクセスできる場合、接続中に DOI リンクをクリックするだけで通常は十分です。出版社は IP アドレスから所属機関を判別します。

open_access_url の優先順位:arXiv > CORE > Unpaywall > OpenAlex > Semantic Scholar > Papers with Code


❓ FAQ

レビュー段階で停止する/30 分以上応答がない

症状:prepare_review() が生成したレビュープロンプトによって、AI クライアントが停止またはタイムアウトします。

原因:プール内の候補論文が多すぎる(例:80~100 件)ため、プロンプトがクライアントのコンテキストウィンドウまたは出力トークンの上限を超えています。VS Code Copilot や一部の IDE プラグインは、コンテキスト容量に制限があります。

解決策(いずれかを選択してください):

  1. scan_batches を増やす(推奨) — プールをより多くのバッチに分割します:
    configure(scan_batches=5)
    
  2. トピックまたはキーワードを減らす — トピックを減らすと検索結果が減り、プールも小さくなります。
  3. より大きなコンテキストに対応したクライアントに切り替える — Claude Code(200k)、Claude Desktop(200k)、または Cursor は長いプロンプトをより適切に処理できます。
インストールエラー:Requires-Python >=3.10

Python 3.10 以降が必要です。macOS にはデフォルトで Python 3.9 が付属しています。brew install [email protected] で新しいバージョンをインストールするか、uv を使用してください。

Docker イメージをプルできない(中国本土)

中国本土では ghcr.io がブロックされています。中国のミラーを使って pip を実行してください:

pip install paper-distill-mcp -i https://pypi.tuna.tsinghua.edu.cn/simple

🧑‍💻 開発

git clone https://github.com/Eclipse-Cj/paper-distill-mcp.git
cd paper-distill-mcp
python3 -m venv .venv && .venv/bin/pip install --upgrade pip && .venv/bin/pip install -e .
python tests/test_mcp_smoke.py   # 9 tests, no network required

📄 ライセンス

このプロジェクトは AGPL-3.0 ライセンスの下で公開されています。詳細は LICENSE を参照してください。

許可されていない商用利用は禁止されています。 商用ライセンスに関するお問い合わせは、作者までご連絡ください。


📬 お問い合わせ

バグ報告や機能リクエストを歓迎します。このプロジェクトは開発初期段階にあり、現在も活発に開発中です。ご理解とご支援に感謝いたします 🙏

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。