Lacuna Research

resmi

Peta riset ML hanya-baca untuk agen coding: makalah, arah riset, penulis, venue, institusi, dan hipotesis, masing-masing ditautkan ke sumbernya. Dihosting, tanpa autentikasi; juga tersedia sebagai paket PyPI.

Apa yang bisa Anda lakukan dengan Lacuna Research MCP?

  • Telusuri kode hingga ke makalah — Tanyakan makalah mana yang diimplementasikan oleh repositori GitHub, lalu ikuti hubungan official_code_for yang tercatat ke makalah dan sumbernya.
  • Telusuri literatur — Jalankan pencarian makalah search_lacuna, lalu buka hasilnya dengan get_paper untuk melihat konteks ringkas yang mencakup ringkasan, penulis, dan gambar.
  • Temukan sumber daya terkait — Telusuri basis kode, dataset, model, atau demo dengan search_lacuna, lalu periksa salah satunya melalui get_resource untuk melihat makalah dan aspek terkait.
  • Jelajahi arah penelitian — Lihat ringkasan suatu arah penelitian dan telusuri makalah-makalah yang terkait dengannya menggunakan get_direction_papers.
  • Tinjau proposal yang dihasilkan — Telusuri proposal search_type="hypothesis" dan baca salah satu hasilnya dengan get_hypothesis sebagai gagasan untuk diselidiki, bukan sebagai temuan.
  • Buat profil peneliti dan venue — Ambil konteks, makalah, arah penelitian, atau jejaring seorang penulis, lalu bandingkan venue dan institusi.

Server MCP Terhosting

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

Terpasang ke Claude Code, Codex, Cursor, dan lainnya

Dokumentasi

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

Python 3.11+ MCP server MIT license

Lacuna Research MCP

Lacuna, yang dibuat oleh Tiptree Systems, adalah peta riset pembelajaran mesin: graf pengetahuan heterogen yang menghubungkan makalah, arah riset, penulis, venue, institusi, dan proposal riset yang dihasilkan, dengan jejak sumber dari setiap objek turunan kembali ke makalah dan halaman persis yang menjadi sumbernya.

Lacuna Research MCP menyediakan hal-hal berikut bagi agen coding peneliti AI:

  • Proposal riset yang dihasilkan. Jelajahi ide riset yang dihasilkan dengan The Alien Space of Science.
  • Arah riset. Telusuri klaster konsep yang terhubung dengan makalah, penulis, dan proposal.
  • Literatur siap pakai untuk agen. Cari makalah terbaru dalam format markdown dengan tautan sumber.
  • Informasi peneliti. Telusuri penulis, publikasi, arah riset, dampak, dan peneliti terkait.
  • Pemetaan lanskap. Bandingkan venue, institusi, peneliti terkemuka, dan aktivitas publikasi.

Contohnya, telusuri implementasi hingga hubungan makalah yang tercatat:

Temukan makalah di balik Dao-AILab/flash-attention. Tampilkan hubungan yang tercatat dengan repositori dan tautkan makalah aslinya.

Contoh ini mengikuti alur repositori → hubungan makalah yang tercatat → makalah dan sumber. Lacuna menampilkan hubungan official_code_for ke FlashAttention, beserta tautan ke repositori dan makalah asli. Periksa sumber tersebut untuk memverifikasi hubungannya. Jalankan contoh atau ikuti notebook.

Instalasi · Skill riset · Penggunaan pertama · Tools · Referensi API · Konfigurasi

Instalasi

Plugin agen untuk Cursor

Repositori ini juga mengemas koneksi MCP ter-host dan dua skill riset sebagai Agent Plugin. Cursor mendukung format ini.

Untuk mengujinya secara lokal, salin repositori ini ke ~/.cursor/plugins/local/lacuna-research-mcp, muat ulang Cursor, lalu buka Customize untuk memeriksa kedua skill dan koneksi MCP. Plugin terhubung ke https://lacuna.tiptreesystems.com/api/mcp; instalasi Python lokal atau akun Lacuna tidak diperlukan. Aktifkan koneksi ini atau server Lacuna yang dikonfigurasi secara manual agar tidak ada tools duplikat.

Cursor dan VS Code

Gunakan server ter-host tanpa instalasi Python lokal atau akun Lacuna:

Add to Cursor Add to VS Code

Tombol-tombol tersebut membuka alur instalasi MCP editor Anda. Periksa URL server dan konfirmasikan instalasi. Setelah terhubung, ajukan pertanyaan FlashAttention di atas; agen Anda seharusnya menggunakan search_lacuna, get_resource, dan get_paper.

Konfigurasi manual jika tautan instalasi tidak terbuka

Di Cursor, gabungkan entri ini ke dalam mcpServers di .cursor/mcp.json:

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

Di VS Code, gabungkan entri ini ke dalam servers di .vscode/mcp.json:

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

Pertahankan entri server yang sudah ada. Buka pengaturan MCP editor Anda untuk memverifikasi koneksi dan mengaktifkan tools Lacuna untuk percakapan.

Server MCP ter-host (konektor Claude)

Gunakan server MCP ter-host Lacuna dengan klien apa pun yang mendukung Streamable HTTP. Instalasi lokal tidak diperlukan.

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

Di Claude, buka Customize → Connectors → + Add → Add custom connector. Beri nama Lacuna Research, tempel URL di atas, lalu pilih No sign in jika diminta melakukan autentikasi. Selesaikan penambahannya, lalu aktifkan dari + → Connectors dalam percakapan Anda.

Untuk ruang kerja Team dan Enterprise, konektor harus ditambahkan terlebih dahulu melalui Organization settings → Connectors. Lihat penyiapan konektor kustom Claude untuk detailnya.

Instalasi lokal

Cara termudah untuk menginstal Lacuna Research MCP adalah meminta agen coding Anda, seperti Codex atau Claude Code:

Instal dan konfigurasi paket lacuna-research-mcp dari PyPI untuk klien ini.

Untuk penyiapan manual, petunjuk di bawah menggunakan uvx untuk menjalankan rilis bertag terbaru dari PyPI. Instal uv terlebih dahulu; Lacuna Research MCP memerlukan Python 3.11 atau yang lebih baru.

Codex

Tambahkan server dengan Codex CLI:

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

Sebagai alternatif, tambahkan entri berikut ke ~/.codex/config.toml (atau ke .codex/config.toml dalam proyek tepercaya untuk penyiapan khusus proyek):

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

Jalankan codex mcp list untuk memverifikasi konfigurasi server. Aplikasi Codex, CLI, dan ekstensi IDE menggunakan konfigurasi yang sama pada mesin yang sama.

Claude Code

Tambahkan server untuk semua proyek Anda dengan Claude Code CLI:

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

Hilangkan --scope user untuk menambahkannya hanya ke proyek saat ini. Sebagai alternatif, tambahkan entri berikut di bawah objek tingkat teratas mcpServers dalam ~/.claude.json:

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

Jalankan claude mcp get lacuna-research untuk memverifikasi konfigurasi server.

Claude Desktop

Buka Settings → Developer → Edit Config, lalu tambahkan server di bawah mcpServers dalam claude_desktop_config.json:

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

Mulai ulang Claude Desktop setelah menyimpan file.

Klien MCP lainnya

Untuk klien apa pun yang mendukung server MCP stdio lokal, gunakan konfigurasi standar berikut:

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

Perintah mandiri

Instal server MCP sebagai perintah persisten:

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

Jalankan tanpa menginstal perintah persisten:

uvx lacuna-research-mcp

Jika perintah ini keluar dengan kesalahan prarilis (misalnya, "Python 3.14.0rc2 is a prerelease..."), uv Anda menggunakan prarilis awal Python 3.14 yang tidak didukung oleh MCP SDK. Perbarui uv (uv self update), instal Python versi rilis (uv python install 3.14), atau jalankan uvx --python 3.13 lacuna-research-mcp.

Server HTTP yang di-host sendiri

Untuk melayani klien MCP jarak jauh melalui Streamable HTTP, bukan stdio:

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

Endpoint-nya adalah /mcp. Server ini stateless dan memberikan respons dalam format JSON, sehingga dapat berjalan di belakang load balancer tanpa afinitas sesi. Dengan --host 127.0.0.1 default, server hanya menerima header Host dari localhost, jadi ikat ke alamat non-loopback jika reverse proxy meneruskan hostname publik.

Versi pengembangan terbaru

PyPI berisi rilis bertag. Untuk mencoba kode terbaru dari cabang main:

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

Pengembangan lokal

Dengan uv:

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

Dengan 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 .

Skill riset

Server MCP menyediakan tools. Skill opsional ini mengajarkan agen Anda cara menggunakannya untuk dua tugas riset:

SkillContoh permintaan
Periksa riset terdahuluSebelum saya menerapkan penggabungan token untuk vision transformer, temukan riset terdekat dan baseline yang perlu disertakan.
Telusuri kode ke makalahMakalah mana yang diimplementasikan oleh Dao-AILab/flash-attention? Tampilkan hubungan yang tercatat dan sumbernya.

Hubungkan server MCP terlebih dahulu. Kemudian, setelah Node.js 22.20+ terinstal, jalankan CLI skills dari proyek Anda:

npx skills add tiptreesystems/lacuna-research-mcp

Pilih skill dan agen yang Anda gunakan. Untuk menginstal hanya alur kerja kode-ke-makalah:

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

Secara default, skill diinstal ke proyek saat ini. Skill tidak menginstal atau mengonfigurasi server MCP. Mulai sesi agen baru setelah instalasi jika klien Anda memerlukannya untuk menemukan skill baru.

Penggunaan pertama

Ajukan salah satu pertanyaan di atas kepada agen yang sudah terhubung, atau coba pertanyaan tentang daftar bacaan:

Daftar saya berisi FlashAttention dan FlashAttention-2. Baseline atau keterbatasan apa yang perlu saya baca terkait attention konteks panjang?

Untuk contoh yang dapat direproduksi tanpa kunci API model, klon repositori ini dan jalankan:

uv run examples/code_to_paper.py

Notebook menjelaskan setiap langkah dan membandingkan jejak sumber dengan satu pencarian makalah. Untuk penggunaan tools secara langsung, alurnya sama:

  1. search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)
  2. Periksa identitas repositori, lalu teruskan ID yang dikembalikan ke get_resource(resource_id_or_url=...).
  3. Ikuti publications[].paper_id yang dikembalikan dengan get_paper(artifact_id_or_url=..., view="context", figure_limit=0).

Untuk pencarian literatur, gunakan search_lacuna(query="methods for detecting prompt injection attacks", search_type="paper", limit=5). Untuk proposal yang dihasilkan, gunakan search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=5) dan ikuti ID yang dikembalikan dengan get_hypothesis. Proposal yang dihasilkan adalah ide untuk diteliti, bukan bukti temuan yang telah dipublikasikan.

Tentang Lacuna

Pipeline Lacuna merekonsiliasi rekaman ilmiah dari OpenAlex, OpenReview, DBLP, dan arXiv; mengekstrak elemen konsep dari teks makalah dan mengelompokkannya menjadi arah riset (makalah Lacuna); serta mengambil sampel proposal riset baru dari arah tersebut dengan The Alien Space of Science. Peta ini mencakup lebih dari 2.29 juta makalah, 215,000+ profil penulis, 28,000+ arah riset, 25,000+ proposal riset, dan 5,300+ venue — dan terus berkembang seiring masuknya makalah AI baru dari arXiv dan sumber lainnya.

Cakupan

Korpus ini mencakup riset pembelajaran mesin dan AI: makalah, arah riset, hasil riset penulis, venue, institusi, hipotesis riset yang dihasilkan, serta sumber daya riset (repositori GitHub, dataset dan model Hugging Face, rekaman Zenodo) yang ditautkan ke makalah. Korpus ini tidak memuat biografi, berita, atau konten web nonriset. Agen sebaiknya menjawab pertanyaan di luar cakupan tersebut dengan menggunakan sumber lain.

Hal yang disediakan

  • search_lacuna Menggunakan endpoint publik /api/v1/search milik Lacuna untuk arah penelitian, makalah, penulis, venue, institusi, hipotesis, dan sumber daya. Pencarian makalah eksplisit (search_type="paper") menggunakan pemeringkat leksikal+semantik produksi server jika argumen pemeringkatan lainnya tetap pada nilai default. Berikan search_type="hypothesis" untuk pencarian hipotesis. Berikan search_type="resource" untuk repositori kode, set data, model, dan demo yang ditautkan ke makalah, yang secara opsional dapat difilter dengan resource_kind (codebase, dataset, model, demo) dan provider (github, huggingface, zenodo); misalnya, resource_kind="dataset" menemukan set data tolok ukur. Pencarian sumber daya menolak date_from/date_to, venue, pengurutan berdasarkan tahun, dan pemeringkatan semantik (sumber daya tidak memiliki tanggal, venue, atau embedding).
  • get_hypothesis(hypothesis_id_or_url, view="context") Hipotesis/proposal. view="context" (default) adalah konteks proposal ringkas dengan satu kali pengambilan (ringkasan, abstrak, arah penelitian tertaut); view="full" mengembalikan catatan versi server beserta riwayat versi dan jumlah sinyal. Isi proposal tersedia di versions[].markdown.
  • get_direction(cluster_id_or_url, view="context") Arah penelitian/klaster. view="context" (default) meminta ringkasan ringkas yang berorientasi pada agen; view="full" mengembalikan catatan klaster mentah.
  • get_direction_papers(cluster_id_or_url, page, limit, view="compact") Makalah berpaginasi yang terkait dengan suatu arah penelitian. view="compact" (default) mengembalikan baris siap sitasi (id, url, judul, tahun, venue, beberapa penulis, cuplikan abstrak); view="full" mengembalikan catatan makalah mentah dari upstream.
  • get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True) Pencarian makalah dengan versi yang tersedia; gunakan ID artefak versi untuk membacanya. Sumber daya tertaut (repositori kode, set data, model, dan demo) disertakan secara default dalam tampilan konteks dan lengkap; berikan include_resources=False untuk mengecualikannya. Tampilan lain mengabaikan opsi ini. view="context" (default) meminta konteks ringkas yang berorientasi pada agen; tampilan lainnya adalah "full", "preview", "blog", "figures", "concepts", atau "neighbors". Dalam tampilan konteks, figure_limit membatasi pratinjau gambar (default server 3; berikan 0 untuk meniadakan pratinjau sambil tetap menyertakan sinyal figures_truncated).
  • get_resource(resource_id_or_url) Pencarian sumber daya berdasarkan id (dari pencarian sumber daya atau daftar resources milik get_paper) atau URL /resource/... Lacuna: URL eksternal, ringkasan, faset (tugas, modalitas, ukuran, lisensi), metrik penyedia, kutipan README/kartu, makalah tertaut di bawah publications (dengan paper_id dan hubungan seperti dataset_for), arah penelitian terkait, dan sumber daya yang disebutkan.
  • Alat penulis: get_author_context(…, view="context"), get_author_papers, get_author_directions, dan get_author_neighbors. Mulailah dengan get_author_context, yang secara default menampilkan tampilan ringkas berorientasi pada agen (makalah dibatasi jumlahnya serta daftar impact_directions yang mudah dibaca, bukan telemetri impact_clusters mentah). Gunakan alat khusus untuk makalah, arah penelitian, dan tetangga guna menelusuri koleksi tersebut dengan paginasi tanpa mengulang konteks penulis. view="full" mengembalikan konteks lengkap berbentuk penuh yang dibatasi server (koleksi tetap dibatasi hingga 100). Berikan include_neighbors=true untuk menyertakan penulis serupa secara eksplisit; ini dapat menambah latensi server secara signifikan.
  • Alat venue dan institusi: get_venue_context(…, view="context"), get_institution_context(…, view="context"), get_institution_authors. Alat konteks secara default menampilkan versi ringkas (daftar dibatasi jumlahnya, blok duplikat dihapus; venue mempertahankan cuplikan aktivitas terbaru yang selalu menyertakan year yang diminta). Gunakan get_institution_authors untuk menelusuri seluruh daftar penulis suatu institusi dengan paginasi.

API yang Dibungkus

Alat MCPEndpoint API Lacuna
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 dan provider dikirim sebagai parameter kueri kind dan provider berulang, serta memerlukan search_type="resource" atau "all". author_id_or_url membatasi search_type="paper" ke satu penulis, dengan menerima ID penulis mentah atau URL halaman penulis Lacuna. fields membatasi/memberi bobot pada bidang teks yang digunakan untuk pemeringkatan leksikal, misalnya title^4,abstract, dan memilih pemeringkat leksikal eksperimental; untuk pencarian makalah yang diurutkan berdasarkan relevansi secara default, opsi ini melewati pemeringkat leksikal+semantik produksi. Bidang yang diizinkan adalah title, abstract, summary, concepts, name, top_names, venue, description, topics, provider_key, paper_titles, yang masing-masing hanya valid untuk jenis yang memilikinya — title: makalah/klaster/venue/hipotesis/sumber daya; description/topics/provider_key/paper_titles: sumber daya; abstract/summary/concepts: makalah; name: penulis/institusi/venue; top_names: klaster/hipotesis; venue: makalah/venue (search_type="all" mencakup semuanya). Bobot harus memenuhi 0 < weight <= 100. Bidang yang tidak dikenal, bobot di luar rentang, bidang yang tidak sesuai dengan jenis, serta fields yang digabungkan dengan ranking_profile="semantic" akan ditolak, karena jika tidak, server akan menghapus, membatasi, atau mengabaikannya secara diam-diam.)
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 (default) atau ?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 jika ditetapkan); view="full" → GET /api/v1/papers/{artifact_id}; view="preview" → …/preview; view="blog" → …/blog; view="figures" → …/figures; view="concepts" → …/concepts; view="neighbors" → …/neighbors; konteks dan tampilan lengkap mengirim include_resources. URL halaman Work (/work/<name>, /work/<slug>/wrk_…) atau id wrk_… tanpa awalan dibaca melalui GET /api/v1/context/work/{work_id_or_name} terlebih dahulu
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} yang sama (include_neighbors=true meminta penulis serupa secara eksplisit)
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" → rute yang sama tanpa view
get_institution_context(institution_key_or_url, view="context")view="context" → GET /api/v1/context/institution/{ikey}?view=compact; view="full" → rute yang sama tanpa view
get_institution_authors(institution_key_or_url, limit=50, offset=0)GET /api/v1/institutions/{ikey}/authors

Untuk argumen id-atau-URL, berikan id mentah yang dikembalikan oleh search_lacuna atau URL halaman Lacuna yang sesuai. MCP menormalkan bidang url dan *_url yang relatif terhadap Lacuna menjadi URL absolut, dan juga mengubah tautan Lacuna (termasuk halaman /resource/...) di dalam bidang bernama summary_markdown, article_markdown, markdown, content, atau description menjadi URL absolut.

get_author_context dibatasi di sisi server pada kedua tampilan. Tampilan ringkas default memberikan ikhtisar pilihan; view="full" mengembalikan bentuk lengkap yang lebih besar dengan koleksi tertanam dibatasi hingga 100. Gunakan get_author_papers dan get_author_directions, bukan mencoba melakukan paginasi pada koleksi konteks tertanam.

Permintaan pencarian dibatasi hingga 50 hasil per panggilan, dan permintaan halaman makalah arah penelitian dibatasi hingga 100 hasil per panggilan. Dalam search_lacuna, date_from dan date_to adalah batas tanggal publikasi inklusif. Format yang diterima adalah YYYY, YYYY-MM, dan YYYY-MM-DD; misalnya, date_from="2020", date_to="2022-03" menyertakan makalah dari 1 Januari 2020 hingga 31 Maret 2022.

search_lacuna menyediakan profil pemeringkatan berikut:

  • default / lexical Profil default untuk semua pencarian. Jika search_type="paper", sort="relevance", dan fields tidak ditetapkan, profil ini menggunakan pemeringkat leksikal+semantik produksi server dengan fallback yang lancar. Sebaliknya, default search_type="all" MCP menggunakan pemeringkatan leksikal default server.
  • semantic Gunakan untuk pengambilan makalah berbasis embedding. Kueri semantik tidak menyertakan komponen pemeringkatan leksikal yang biasa, tetapi server tetap dapat menambahkan kecocokan leksikal judul yang persis. Hanya didukung untuk pencarian paper dan all (hanya makalah yang memiliki embedding semantik), dan tidak dapat digunakan bersama filter resource_kind/provider.
  • bm25_title_abstract / bm25 Gunakan untuk pencocokan leksikal yang dibatasi pada judul dan abstrak. Ditolak untuk pencarian author dan institution (catatan tersebut tidak memiliki bidang judul atau abstrak).

Semua pencarian menggunakan default server kecuali jika ranking_profile diberikan. MCP menolak kombinasi profil/jenis yang tidak didukung karena jika tidak, server akan beralih ke pencarian substring dan mengabaikan profil pemeringkatan yang diminta secara diam-diam.

sort menerima relevance (default), year_desc, dan year_asc. Pengurutan berdasarkan tahun tidak dapat digabungkan dengan ranking_profile="semantic" — server akan mengabaikan pengurutan tersebut secara diam-diam — sehingga MCP menolak kombinasi itu; untuk kueri yang mengutamakan hasil terbaru dan relevan, pertahankan pemeringkatan semantik dan batasi kebaruan dengan date_from/date_to.

Variabel lingkungan

  • LACUNA_SITE_URL Default ke https://lacuna.tiptreesystems.com
  • LACUNA_MCP_TIMEOUT Default ke 30
  • LACUNA_MCP_MAX_RETRIES Default ke 2; berlaku untuk batas waktu, kesalahan transportasi, dan respons HTTP 429, 502, 503, dan 504.
  • LACUNA_MCP_USER_AGENT Default ke lacuna-research-mcp/{package_version}
  • LACUNA_MCP_BEARER_TOKEN Token bearer opsional yang dikirim sebagai Authorization: Bearer ... untuk deployment Lacuna privat.
  • LACUNA_MCP_CLIENT_TOKEN Token opsional yang dikirim sebagai X-Lacuna-Client-Token untuk mengidentifikasi server MCP ter-host kepada Lacuna demi batas laju pencariannya sendiri.
  • LACUNA_MCP_LOG_LEVEL Default ke WARNING (salah satu dari DEBUG, INFO, WARNING, ERROR, CRITICAL). Default ini menjaga operasi normal tetap senyap; turunkan hanya untuk debugging, karena INFO/DEBUG memungkinkan klien HTTP mencatat URL permintaan lengkap — termasuk string kueri pencarian — ke stderr, yang dapat disimpan oleh beberapa host MCP.

Variabel lingkungan dibaca sekali saat server MCP dibuat, atau saat pemanggilan alat/API langsung pertama jika modul diimpor tanpa memanggil create_mcp().

Tata letak implementasi

Server ini adalah adaptor MCP tipis di atas API HTTP Lacuna. Implementasinya dibagi berdasarkan tanggung jawab:

  • lacuna_research_mcp/server.py Pembuatan aplikasi MCPServer, pendaftaran alat, pembersihan siklus hidup, dan titik masuk CLI lacuna-research-mcp.
  • lacuna_research_mcp/tools.py Fungsi alat MCP. Setiap alat menormalkan inputnya, memanggil endpoint API Lacuna yang sesuai melalui helper klien bersama, lalu mengembalikan data yang kompatibel dengan JSON.
  • lacuna_research_mcp/client.py Akses HTTP runtime ke Lacuna: httpx.AsyncClient yang terikat pada event loop, penanganan percobaan ulang, pembungkusan kesalahan, penguraian JSON, normalisasi URL pada respons, dan api_get/api_object/api_payload.
  • lacuna_research_mcp/config.py Konstanta runtime, RuntimeConfig, pembuatan user-agent paket, dan penguraian lingkungan.
  • lacuna_research_mcp/ids.py Helper yang menerima id mentah atau URL halaman Lacuna dan mengekstrak segmen jalur API yang aman.
  • lacuna_research_mcp/normalize.py Pemrosesan pascarespons untuk URL Lacuna relatif dan tautan Markdown.
  • lacuna_research_mcp/errors.py Jenis pengecualian yang ditampilkan kepada pengguna untuk kegagalan akses API Lacuna.

Catatan

  • get_paper dan get_direction secara default menggunakan view="context". Tampilan konteks ini secara default meminta payload ringkas berorientasi agen dari Lacuna agar respons MCP tetap kecil. Konteks makalah mencakup summary_markdown jika tersedia (jika tidak, abstract), penulis, dan gambar; konteks arah mencakup summary_markdown, makalah/penulis/arah terkait yang dibatasi jumlahnya, serta penanda pemotongan. Gunakan view="full" jika Anda memerlukan metadata mentah, dan tampilan makalah lainnya (preview, blog, figures, concepts, neighbors) jika Anda menginginkan satu sub-sumber daya secara terpisah.
  • Pencarian makalah eksplisit yang diurutkan berdasarkan relevansi tanpa fields khusus secara default menggunakan pemeringkat leksikal+semantik produksi server. Atur ranking_profile="semantic" untuk pengambilan berbasis embedding (dengan kemungkinan lapisan tambahan pencocokan judul persis) atau "bm25_title_abstract" untuk pencocokan leksikal judul dan abstrak.
  • Sebagian besar alat detail menerima ID yang dikembalikan oleh pencarian atau URL Lacuna yang sesuai.
  • URL Lacuna relatif dalam kolom respons url/*_url dan kolom bernama summary_markdown, article_markdown, markdown, content, atau description dinormalisasi menjadi URL absolut.
  • Kunci venue dan institusi adalah hash opak (misalnya d7bf22905bd6), bukan nama yang dapat dibaca manusia seperti icml. Temukan kuncinya terlebih dahulu dengan search_lacuna(search_type="venue"), atau berikan URL halaman /venue/....

Sitasi

Jika Anda merasa karya kami bermanfaat, silakan mengutip makalah di balik pembuatan proposal riset dan peta riset Lacuna.

Pembuatan proposal riset — 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}
}

Peta riset — 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}
}

Lisensi

MIT. Lihat LICENSE.