Lacuna Research

公式

コーディングエージェント向けのML研究の読み取り専用マップ。論文、研究の方向性、著者、会議・学術誌、機関、仮説を収録し、それぞれの出典にリンクしています。ホスト型で認証不要。PyPIパッケージもあります。

Lacuna Research MCPで何ができますか?

  • コードから論文をたどる — GitHubリポジトリがどの論文を実装しているかを尋ね、記録された official_code_for の関係をたどって論文とその情報源を確認します。
  • 文献を検索する — search_lacuna で論文を検索し、結果を get_paper で開いて、概要、著者、図を含む簡潔なコンテキストを確認します。
  • 関連リソースを見つける — search_lacuna でコードベース、データセット、モデル、デモを検索し、get_resource でそのうち1つを調べて、関連論文やファセットを確認します。
  • 研究の方向性を探る — ある方向性の概要を調べ、get_direction_papers で関連論文を順に確認します。
  • 生成された提案を概観する — search_type="hypothesis" の提案を検索し、返されたものを get_hypothesis で読み、研究すべきアイデアとして扱います。研究成果として扱うものではありません。
  • 研究者や研究発表の場を調べる — 著者のコンテキスト、論文、方向性、近接する研究者を取得し、研究発表の場や所属機関を比較します。

ホスト型 MCP サーバー

npx add-mcp 'https://lacuna.tiptreesystems.com/api/mcp'

Claude Code、Codex、Cursor などにインストールできます

ドキュメント

Lacuna Research MCP — Empower your coding agent for machine learning research

Python 3.11+ MCP server MIT license

Lacuna Research MCP

Tiptree Systems が構築した Lacuna は、機械学習の研究マップです。論文、研究の方向性、著者、会議・ジャーナル、機関、生成された研究提案を結び付ける異種ナレッジグラフであり、派生した各オブジェクトから、それを生み出した正確な論文とページまでたどれる出典情報を備えています。

Lacuna Research MCP は、AI 研究者のコーディングエージェントに次の機能を提供します。

  • 生成された研究提案。 The Alien Space of Science を使って生成された研究アイデアを探索できます。
  • 研究の方向性。 論文、著者、提案が関連付けられた概念クラスターをたどれます。
  • エージェント向け文献。 出典リンク付きの Markdown 形式で、最近の論文を検索できます。
  • 研究者情報。 著者、出版物、研究の方向性、影響力、関連する研究者をたどれます。
  • 研究ランドスケープのマッピング。 会議・ジャーナル、機関、主要な研究者、出版活動を比較できます。

たとえば、実装と記録された論文との関係をたどれます。

Dao-AILab/flash-attention の元になった論文を見つけてください。リポジトリとの記録された関係を示し、元の論文にリンクしてください。

この例では、リポジトリ → 記録された論文との関係 → 論文と出典の順にたどります。 Lacuna は official_code_for の関係を返し、 FlashAttention へのリンクとともに、 リポジトリと元の論文へのリンクを示します。出典を確認して、関係を検証してください。 例を実行するか、 ノートブックで手順を確認してください。

インストール · 研究スキル · 初回利用 · ツール · API リファレンス · 設定

インストール

Cursor 用エージェントプラグイン

このリポジトリには、ホスト型 MCP 接続と 2 つの 研究スキルも エージェントプラグインとしてパッケージされています。Cursor はこの形式に対応しています。

ローカルで試すには、このリポジトリを ~/.cursor/plugins/local/lacuna-research-mcp にコピーし、Cursor を再読み込みして、 Customize を開き、2 つのスキルと MCP 接続を確認してください。プラグインは https://lacuna.tiptreesystems.com/api/mcp に接続します。ローカルへの Python のインストールも Lacuna アカウントも必要ありません。ツールの重複を避けるため、この接続か、手動で設定した Lacuna サーバーのどちらか一方を有効にしてください。

Cursor と VS Code

ローカルへの Python のインストールも Lacuna アカウントも不要な、ホスト型サーバーを使用します。

Add to Cursor Add to VS Code

ボタンを押すと、エディターの MCP インストールフローが開きます。サーバー URL を確認して、インストールを確定してください。接続後、上記の FlashAttention に関する質問をすると、エージェントは search_lacuna、get_resource、get_paper を使用するはずです。

インストールリンクが開かない場合の手動設定

Cursor では、.cursor/mcp.json 内の mcpServers に次のエントリを統合してください。

{
  "mcpServers": {
    "lacuna-research": {"url": "https://lacuna.tiptreesystems.com/api/mcp"}
  }
}

VS Code では、.vscode/mcp.json 内の servers に次のエントリを統合してください。

{
  "servers": {
    "lacuna-research": {"type": "http", "url": "https://lacuna.tiptreesystems.com/api/mcp"}
  }
}

既存のサーバーエントリはそのまま残してください。エディターの MCP 設定を開いて接続を確認し、会話で Lacuna のツールを有効にしてください。

ホスト型 MCP サーバー(Claude コネクター)

Streamable HTTP に対応する任意のクライアントで、Lacuna のホスト型 MCP サーバーを使用できます。ローカルへのインストールは不要です。

https://lacuna.tiptreesystems.com/api/mcp

Claude で Customize → Connectors → + Add → Add custom connector を開きます。名前を Lacuna Research にし、上記の URL を貼り付け、認証を求められた場合は No sign in を選択します。追加を完了したら、会話画面で + → Connectors から有効にしてください。

Team および Enterprise ワークスペースでは、まず Organization settings → Connectors でコネクターを追加する必要があります。詳しくはClaude のカスタムコネクター設定を参照してください。

ローカルインストール

Lacuna Research MCP をインストールする最も簡単な方法は、Codex や Claude Code などのコーディングエージェントに依頼することです。

このクライアント用に、PyPI の lacuna-research-mcp パッケージをインストールして設定してください。

手動で設定する場合、以下の手順では uvx を使って、PyPI から最新のタグ付きリリースを実行します。まず uv をインストールしてください。Lacuna Research MCP には Python 3.11 以降が必要です。

Codex

Codex CLI でサーバーを追加します。

codex mcp add lacuna-research -- uvx lacuna-research-mcp

または、~/.codex/config.toml に次の内容を追加してください(プロジェクト単位で設定する場合は、信頼済みプロジェクトの .codex/config.toml に追加します)。

[mcp_servers.lacuna-research]
command = "uvx"
args = ["lacuna-research-mcp"]

codex mcp list を実行して、サーバーが設定されていることを確認してください。同じマシン上では、Codex アプリ、CLI、IDE 拡張機能でこの設定が共有されます。

Claude Code

Claude Code CLI で、すべてのプロジェクトにサーバーを追加します。

claude mcp add --scope user lacuna-research -- uvx lacuna-research-mcp

現在のプロジェクトだけに追加する場合は、--scope user を省略してください。または、~/.claude.json のトップレベル mcpServers オブジェクトに次の内容を追加します。

{
  "mcpServers": {
    "lacuna-research": {
      "type": "stdio",
      "command": "uvx",
      "args": ["lacuna-research-mcp"]
    }
  }
}

claude mcp get lacuna-research を実行して、サーバーが設定されていることを確認してください。

Claude Desktop

Settings → Developer → Edit Config を開き、claude_desktop_config.json の mcpServers にサーバーを追加します。

{
  "mcpServers": {
    "lacuna-research": {
      "command": "uvx",
      "args": ["lacuna-research-mcp"]
    }
  }
}

ファイルを保存した後、Claude Desktop を再起動してください。

その他の MCP クライアント

ローカルの stdio MCP サーバーに対応するクライアントでは、次の標準設定を使用してください。

{
  "mcpServers": {
    "lacuna-research": {
      "command": "uvx",
      "args": ["lacuna-research-mcp"]
    }
  }
}

単独コマンド

MCP サーバーを永続的なコマンドとしてインストールします。

uv tool install lacuna-research-mcp
lacuna-research-mcp

永続的なコマンドとしてインストールせずに実行します。

uvx lacuna-research-mcp

「Python 3.14.0rc2 is a prerelease...」などのプレリリースエラーが発生して終了する場合、uv が MCP SDK でサポートされていない Python 3.14 の初期プレリリース版を使用しています。uv を更新する(uv self update)、リリース済みの Python をインストールする(uv python install 3.14)、または uvx --python 3.13 lacuna-research-mcp を実行してください。

セルフホスト型 HTTP サーバー

stdio の代わりに Streamable HTTP を使ってリモート MCP クライアントにサービスを提供するには、次を実行します。

uvx lacuna-research-mcp --transport streamable-http --host 0.0.0.0 --port 8000

エンドポイントは /mcp です。サーバーはステートレスで JSON を返すため、セッションアフィニティなしでロードバランサーの背後で実行できます。デフォルトの --host 127.0.0.1 では、サーバーは localhost の Host ヘッダーのみを受け付けます。そのため、リバースプロキシが公開ホスト名を転送する場合は、ループバック以外のアドレスにバインドしてください。

最新の開発版

PyPI にはタグ付きリリースが公開されています。代わりに main ブランチの最新コードを試すには、次を実行します。

uvx --from git+https://github.com/tiptreesystems/lacuna-research-mcp.git lacuna-research-mcp

ローカル開発

uv を使用する場合:

git clone https://github.com/tiptreesystems/lacuna-research-mcp.git
cd lacuna-research-mcp
uv sync --extra dev
uv run lacuna-research-mcp

pip を使用する場合:

cd <path-to-lacuna-research-mcp>
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
python -m pip install -e .

研究スキル

MCP サーバーはツールを提供します。次の 2 つの研究タスクでツールを活用する方法をエージェントに教える、任意のスキルも用意されています。

スキルリクエスト例
先行研究を確認するビジョントランスフォーマー向けのトークンマージを実装する前に、最も関連性の高い研究と、比較対象に含めるベースラインを見つけてください。
コードから論文をたどるDao-AILab/flash-attention が実装している論文はどれですか?記録された関係と出典を示してください。

まず MCP サーバーに接続してください。次に、Node.js 22.20 以降をインストールした状態で、プロジェクトから skills CLI を実行します。

npx skills add tiptreesystems/lacuna-research-mcp

使用するスキルとエージェントを選択してください。コードから論文をたどるワークフローだけをインストールするには、次を実行します。

npx skills add tiptreesystems/lacuna-research-mcp --skill lacuna-code-to-paper

デフォルトでは、スキルは現在のプロジェクトにインストールされます。MCP サーバーのインストールや設定は行いません。新しいスキルを認識するためにクライアントで必要な場合は、インストール後に新しいエージェントセッションを開始してください。

初回利用

接続済みのエージェントに上記の質問をするか、文献リストに関する質問を試してください。

私のリストには FlashAttention と FlashAttention-2 があります。長いコンテキストのアテンションについて、どのようなベースラインや制約を読むべきですか?

モデル API キーなしで再現可能な例を試すには、このリポジトリをクローンして次を実行します。

uv run examples/code_to_paper.py

ノートブックでは各手順を説明し、出典をたどる方法と単一の論文検索を比較しています。ツールを直接使う場合も、同じ流れになります。

  1. search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)
  2. リポジトリの識別情報を確認し、返された ID を get_resource(resource_id_or_url=...) に渡します。
  3. 返された publications[].paper_id を get_paper(artifact_id_or_url=..., view="context", figure_limit=0) でたどります。

文献検索には search_lacuna(query="methods for detecting prompt injection attacks", search_type="paper", limit=5) を使用してください。 生成された提案には search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=5) を使用し、 返された ID を get_hypothesis でたどってください。生成された提案は調査すべきアイデアであり、発表済みの研究結果を示す証拠ではありません。

Lacuna について

Lacuna のパイプラインは、OpenAlex、OpenReview、DBLP、arXiv の学術記録を照合し、論文本文から概念要素を抽出して研究の方向性に分類し(Lacuna 論文)、The Alien Space of Science を使って、それらの方向性から新しい研究提案を生成します。このマップには 229 万件以上の論文、21 万 5,000 件以上の著者プロフィール、2 万 8,000 件以上の研究の方向性、2 万 5,000 件以上の研究提案、5,300 件以上の会議・ジャーナルが含まれており、新しい arXiv 論文やその他の AI 論文が取り込まれるたびに継続的に拡大しています。

対象範囲

コーパスの対象は、機械学習と AI の研究です。論文、研究の方向性、著者の研究成果、会議・ジャーナル、機関、生成された研究仮説、および論文に関連付けられた研究リソース(GitHub リポジトリ、Hugging Face のデータセットとモデル、Zenodo の記録)が含まれます。人物紹介、ニュース、研究以外のウェブコンテンツは含まれません。対象範囲外の質問には、エージェントは他の情報源を使って回答してください。

提供内容

  • search_lacuna Lacuna の公開 /api/v1/search エンドポイントを使用して、方向性、論文、著者、会場、機関、仮説、リソースを検索します。明示的な論文検索(search_type="paper")では、他のランキング引数がデフォルトのままであれば、サーバーの本番用 lexical+semantic ランカーを使用します。仮説を検索するには search_type="hypothesis" を指定します。論文にリンクされたコードリポジトリ、データセット、モデル、デモを検索するには search_type="resource" を指定します。必要に応じて resource_kind(codebase、dataset、model、demo)および provider(github、huggingface、zenodo)で絞り込めます。たとえば、resource_kind="dataset" はベンチマーク用データセットを検索します。リソース検索では date_from/date_to、venue、年による並べ替え、セマンティックランキングは拒否されます(リソースには日付、会場、埋め込みがありません)。
  • get_hypothesis(hypothesis_id_or_url, view="context") 仮説/提案。view="context"(デフォルト)は、コンパクトな単一取得の提案コンテキスト(要約、概要、関連する方向性)を返します。view="full" は、バージョン履歴とシグナル数を含むサーバーのバージョンレコードを返します。提案本文は versions[].markdown にあります。
  • get_direction(cluster_id_or_url, view="context") 研究の方向性/クラスター。view="context"(デフォルト)は、エージェント向けの簡潔な要約を要求します。view="full" は未加工のクラスター記録を返します。
  • get_direction_papers(cluster_id_or_url, page, limit, view="compact") 方向性に関連付けられたページ分割済みの論文。view="compact"(デフォルト)は、引用に使える行(ID、URL、タイトル、年、会場、数名の著者、概要の抜粋)を返します。view="full" は上流の未加工の論文レコードを返します。
  • get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True) 利用可能なバージョンを含む論文の検索。バージョンのアーティファクト ID を使って読み取ります。関連リソース(コードリポジトリ、データセット、モデル、デモ)は、デフォルトでコンテキストビューとフルビューに含まれます。省略するには include_resources=False を指定します。他のビューではこのオプションは無視されます。view="context"(デフォルト)は、エージェント向けの簡潔なコンテキストを要求します。他のビューは "full"、"preview"、"blog"、"figures"、"concepts"、"neighbors" です。コンテキストビューでは、figure_limit によって図のプレビュー数を制限できます(サーバーのデフォルトは 3。0 を指定すると、figures_truncated シグナルを維持したままプレビューを抑制します)。
  • get_resource(resource_id_or_url) ID(リソース検索または get_paper の resources リストから)または Lacuna の /resource/... URL によるリソース検索。外部 URL、要約、ファセット(タスク、モダリティ、サイズ、ライセンス)、プロバイダーの指標、README/カードの抜粋、publications にある関連論文(paper_id および dataset_for などの関係性を含む)、関連する方向性、言及されたリソースを返します。
  • 著者ツール: get_author_context(…, view="context")、get_author_papers、get_author_directions、get_author_neighbors。まず get_author_context を使用します。デフォルトでは、未加工の impact_clusters テレメトリの代わりに、コンパクトなエージェント向けビュー(件数を制限した論文と、読みやすい impact_directions リスト)を返します。著者コンテキストを繰り返さずに各コレクションをページ分割するには、専用の論文、方向性、近傍ツールを使用します。view="full" は、サーバー側で上限を設けた完全な形式のコンテキストを返します(コレクションの上限は 100 件です)。類似する著者を明示的に含めるには include_neighbors=true を指定します。サーバーのレイテンシが大幅に増加する場合があります。
  • 会場および機関ツール: get_venue_context(…, view="context")、get_institution_context(…, view="context")、get_institution_authors。コンテキストツールはデフォルトでコンパクトな形式を返します(リストの件数を制限し、重複ブロックを除外します。会場では、要求された year を必ず含む最近の活動の一部を保持します)。機関の著者リスト全体をページ分割するには get_institution_authors を使用します。

ラップされた API

MCP ツールLacuna API エンドポイント
search_lacuna(query, search_type, limit, offset, author_id_or_url, date_from, date_to, venue, sort, ranking_profile, fields, resource_kind, provider)GET /api/v1/search(resource_kind と provider は、繰り返し指定される kind および provider クエリパラメーターとして送信され、search_type="resource" または "all" が必要です。author_id_or_url は search_type="paper" を 1 人の著者に限定し、生の著者 ID または Lacuna の著者ページ URL を受け付けます。fields は、字句ランキングに使用するテキストフィールドを制限/重み付けします(例:title^4,abstract)。また、実験的な字句ランカーを選択します。デフォルトの関連度順の論文検索では、これを指定すると本番用 lexical+semantic ランカーが使われなくなります。使用可能なフィールドは title、abstract、summary、concepts、name、top_names、venue、description、topics、provider_key、paper_titles です。それぞれ、該当フィールドを持つタイプでのみ有効です。title:論文/クラスター/会場/仮説/リソース、description/topics/provider_key/paper_titles:リソース、abstract/summary/concepts:論文、name:著者/機関/会場、top_names:クラスター/仮説、venue:論文/会場(search_type="all" はすべてに適用)。重みは 0 < weight <= 100 を満たす必要があります。不明なフィールド、範囲外の重み、タイプと互換性のないフィールド、および fields と ranking_profile="semantic" の併用は拒否されます。これらを許可すると、サーバーが値を黙って破棄、上限設定、または無視するためです。)
get_hypothesis(hypothesis_id_or_url, view="context")view="context" → GET /api/v1/context/hypothesis/{hypothesis_id}?view=compact;view="full" → GET /api/v1/hypotheses/{hypothesis_id}
get_direction(cluster_id_or_url, view="context")view="context" → GET /api/v1/context/direction/{cluster_id}?view=compact;view="full" → GET /api/v1/clusters/{cluster_id}
get_direction_papers(cluster_id_or_url, page, limit, view="compact")GET /api/v1/clusters/{cluster_id}/papers?view=compact(デフォルト)または ?view=complete
get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True)view="context" → GET /api/v1/context/paper/{artifact_id}?view=compact(設定時は &figure_limit=N);view="full" → GET /api/v1/papers/{artifact_id};view="preview" → …/preview;view="blog" → …/blog;view="figures" → …/figures;view="concepts" → …/concepts;view="neighbors" → …/neighbors;コンテキストビューとフルビューでは include_resources を送信します。Work ページの URL(/work/<name>、/work/<slug>/wrk_…)または単独の wrk_… ID は、まず GET /api/v1/context/work/{work_id_or_name} を通じて読み取られます
get_resource(resource_id_or_url)GET /api/v1/resources/{resource_id}
get_author_papers(author_id_or_url, limit=50, offset=0)GET /api/v1/authors/{author_id}/papers
get_author_directions(author_id_or_url, limit=50, offset=0)GET /api/v1/authors/{author_id}/directions
get_author_context(author_id_or_url, view="context", include_neighbors=false)view="context" → GET /api/v1/context/author/{author_id}?view=compact;view="full" → GET /api/v1/context/author/{author_id}(include_neighbors=true は類似する著者を明示的に要求します)
get_author_neighbors(author_id_or_url, limit=8, offset=0)GET /api/v1/authors/{author_id}/neighbors
get_venue_context(venue_key_or_url, year, view="context")view="context" → GET /api/v1/context/venue/{vkey}[/{year}]?view=compact;view="full" → view を含まない同じルート
get_institution_context(institution_key_or_url, view="context")view="context" → GET /api/v1/context/institution/{ikey}?view=compact;view="full" → view を含まない同じルート
get_institution_authors(institution_key_or_url, limit=50, offset=0)GET /api/v1/institutions/{ikey}/authors

ID または URL を受け取る引数には、search_lacuna が返す生の ID、または対応する Lacuna ページ URL のいずれかを渡します。MCP は Lacuna 相対の url フィールドと *_url フィールドを絶対 URL に正規化します。また、summary_markdown、article_markdown、markdown、content、description という名前のフィールド内にある Lacuna リンク(/resource/... ページを含む)も絶対 URL に変換します。

get_author_context は、どちらのビューでもサーバー側で上限が設定されます。デフォルトのコンパクトビューは、厳選された概要を返します。view="full" は、埋め込みコレクションの上限を 100 件とした、より大きな完全形式を返します。埋め込みコンテキストのコレクションをページ分割しようとせず、代わりに get_author_papers と get_author_directions を使用してください。

検索リクエストでは、1 回の呼び出しにつき最大 50 件の結果が返されます。方向性に関連する論文のページリクエストでは、1 回の呼び出しにつき最大 100 件の結果が返されます。 search_lacuna では、date_from と date_to は出版日の両端を含む範囲指定です。 使用できる形式は YYYY、YYYY-MM、YYYY-MM-DD です。たとえば、 date_from="2020", date_to="2022-03" は、2020 年 1 月 1 日から 2022 年 3 月 31 日までの論文を含みます。

search_lacuna では、次のランキングプロファイルを使用できます。

  • default / lexical すべての検索で使用されるデフォルトのプロファイルです。search_type="paper"、sort="relevance"、fields が未設定の場合、フォールバック機能を備えたサーバーの本番用 lexical+semantic ランカーを使用します。一方、MCP のデフォルトの search_type="all" では、サーバーのデフォルトの字句ランキングが使用されます。
  • semantic 埋め込みベースの論文検索に使用します。セマンティッククエリでは通常の字句ランキング処理を省略しますが、サーバーが完全一致するタイトルの字句マッチを追加する場合があります。paper と all の検索でのみサポートされます(セマンティック埋め込みがあるのは論文のみです)。また、resource_kind/provider フィルターとは併用できません。
  • bm25_title_abstract / bm25 タイトルと概要に限定した字句マッチングに使用します。author と institution の検索では拒否されます(これらのレコードにはタイトルまたは概要のフィールドがありません)。

ranking_profile が指定されない限り、すべての検索でサーバーのデフォルトが使用されます。サーバーは、指定されたランキングプロファイルを黙って無視して部分文字列検索にフォールバックするため、MCP はサポートされていないプロファイルとタイプの組み合わせを拒否します。

sort では、relevance(デフォルト)、year_desc、year_asc を指定できます。年による並べ替えは ranking_profile="semantic" と併用できません。サーバーが並べ替えを黙って無視するため、MCP はこの組み合わせを拒否します。新しさと関連性を両立した検索では、セマンティックランキングを維持し、代わりに date_from/date_to で新しさを絞り込んでください。

環境変数

  • LACUNA_SITE_URL デフォルトは https://lacuna.tiptreesystems.com
  • LACUNA_MCP_TIMEOUT デフォルトは 30
  • LACUNA_MCP_MAX_RETRIES デフォルトは 2。タイムアウト、トランスポートエラー、および HTTP 429、502、503、504 応答に適用されます。
  • LACUNA_MCP_USER_AGENT デフォルトは lacuna-research-mcp/{package_version}
  • LACUNA_MCP_BEARER_TOKEN プライベートな Lacuna デプロイメント向けに、Authorization: Bearer ... として送信される任意のベアラートークン。
  • LACUNA_MCP_CLIENT_TOKEN ホスト型 MCP サーバーを識別するために Lacuna に X-Lacuna-Client-Token として送信される任意のトークン。Lacuna 独自の検索レート制限に使用されます。
  • LACUNA_MCP_LOG_LEVEL デフォルトは WARNING(DEBUG、INFO、WARNING、ERROR、CRITICAL のいずれか)。デフォルトでは通常の動作中にログを出力しません。デバッグ時のみ値を下げてください。INFO/DEBUG を使うと、HTTP クライアントが検索クエリ文字列を含む完全なリクエスト URL を stderr に記録するため、一部の MCP ホストでログが保持される可能性があります。

環境変数は、MCP サーバーの作成時に一度だけ読み込まれます。create_mcp() を呼び出さずにモジュールをインポートした場合は、最初の直接的なツール/API 呼び出し時に読み込まれます。

実装の構成

このサーバーは、Lacuna の HTTP API を利用する薄い MCP アダプターです。実装は責務ごとに分割されています。

  • lacuna_research_mcp/server.py MCPServer アプリの作成、ツールの登録、ライフサイクル終了時のクリーンアップ、および lacuna-research-mcp CLI エントリーポイント。
  • lacuna_research_mcp/tools.py MCP ツール関数。各ツールは入力を正規化し、共有クライアントヘルパーを通じて対応する Lacuna API エンドポイントを呼び出し、JSON 互換データを返します。
  • lacuna_research_mcp/client.py Lacuna への実行時 HTTP アクセス。イベントループにバインドされた httpx.AsyncClient、再試行処理、エラーのラップ、JSON の解析、レスポンス内 URL の正規化、および api_get/api_object/api_payload を担当します。
  • lacuna_research_mcp/config.py 実行時定数、RuntimeConfig、パッケージのユーザーエージェント構築、環境変数の解析。
  • lacuna_research_mcp/ids.py 生の ID または Lacuna ページ URL を受け取り、安全な API パスセグメントを抽出するヘルパー。
  • lacuna_research_mcp/normalize.py 相対 Lacuna URL と Markdown リンクのレスポンス後処理。
  • lacuna_research_mcp/errors.py Lacuna API アクセス失敗を表す、ユーザー向けの例外型。

注記

  • get_paper と get_direction のデフォルトは view="context" です。これらのコンテキストビューは、MCP の応答を小さく保つため、デフォルトで Lacuna のコンパクトなエージェント向けペイロードを要求します。論文コンテキストには、利用可能な場合は summary_markdown(それ以外の場合は abstract)、著者、図が含まれます。方向性コンテキストには、summary_markdown、上限付きの論文・著者・関連する方向性、および切り詰めを示すマーカーが含まれます。生のメタデータが必要な場合は view="full" を使用し、単独のサブリソースが必要な場合は他の論文ビュー(preview、blog、figures、concepts、neighbors)を使用してください。
  • 関連度順の明示的な論文検索でカスタムの fields を指定しない場合、サーバーの本番用の語彙・意味ランキングがデフォルトで使用されます。埋め込みベースの検索(完全一致タイトルによる補正が行われる場合があります)には ranking_profile="semantic" を、タイトルと要約の語彙マッチングには "bm25_title_abstract" を設定してください。
  • ほとんどの詳細ツールでは、検索で返された ID または対応する Lacuna URL のどちらかを使用できます。
  • url/*_url の応答フィールド、および summary_markdown、article_markdown、markdown、content、description という名前のフィールドに含まれる相対 Lacuna URL は、絶対 URL に正規化されます。
  • 会場と機関のキーは不透明なハッシュです(例: d7bf22905bd6)。icml のような人が読める名前ではありません。まず search_lacuna(search_type="venue") でキーを検索するか、/venue/... のページ URL を渡してください。

引用

私たちの研究がお役に立った場合は、Lacuna の研究提案生成と研究マップを支える論文をぜひ引用してください。

研究提案生成 — The Alien Space of Science

@inproceedings{artiles2026alien,
  title     = {The Alien Space of Science: Sampling Coherent but Cognitively Unavailable Research Directions},
  author    = {Artiles, Alejandro H. and Weiss, Martin and Brinkmann, Levin and Rahwan, Iyad and Sch{\"o}lkopf, Bernhard and Pal, Christopher and Larochelle, Hugo and Goyal, Anirudh and Rahaman, Nasim},
  booktitle = {Advances in Neural Information Processing Systems},
  year      = {2026},
  eprint    = {2603.01092},
  archivePrefix = {arXiv},
  url       = {https://arxiv.org/abs/2603.01092}
}

研究マップ — Lacuna

@misc{weiss2026lacunaresearchmapmachine,
  title         = {Lacuna: A Research Map for Machine Learning},
  author        = {Martin Weiss and Miles Q. Li and Alejandro H. Artiles and Yacine Mkhinini and Chris Pal and Hugo Larochelle and Nasim Rahaman},
  year          = {2026},
  eprint        = {2606.26246},
  archivePrefix = {arXiv},
  primaryClass  = {cs.DL},
  url           = {https://arxiv.org/abs/2606.26246}
}

ライセンス

MIT。LICENSE を参照してください。