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
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 アカウントも不要な、ホスト型サーバーを使用します。
ボタンを押すと、エディターの 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
ノートブックでは各手順を説明し、出典をたどる方法と単一の論文検索を比較しています。ツールを直接使う場合も、同じ流れになります。
search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)- リポジトリの識別情報を確認し、返された ID を
get_resource(resource_id_or_url=...)に渡します。 - 返された
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_lacunaLacuna の公開/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.comLACUNA_MCP_TIMEOUTデフォルトは30LACUNA_MCP_MAX_RETRIESデフォルトは2。タイムアウト、トランスポートエラー、および HTTP429、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.pyMCPServer アプリの作成、ツールの登録、ライフサイクル終了時のクリーンアップ、およびlacuna-research-mcpCLI エントリーポイント。lacuna_research_mcp/tools.pyMCP ツール関数。各ツールは入力を正規化し、共有クライアントヘルパーを通じて対応する Lacuna API エンドポイントを呼び出し、JSON 互換データを返します。lacuna_research_mcp/client.pyLacuna への実行時 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.pyLacuna 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 を参照してください。