Lacuna Research
resmiPeta 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_foryang tercatat ke makalah dan sumbernya. - Telusuri literatur — Jalankan pencarian makalah
search_lacuna, lalu buka hasilnya denganget_paperuntuk 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 melaluiget_resourceuntuk 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 denganget_hypothesissebagai 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
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:
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-mcpdari 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:
| Skill | Contoh permintaan |
|---|---|
| Periksa riset terdahulu | Sebelum saya menerapkan penggabungan token untuk vision transformer, temukan riset terdekat dan baseline yang perlu disertakan. |
| Telusuri kode ke makalah | Makalah 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:
search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)- Periksa identitas repositori, lalu teruskan ID yang dikembalikan ke
get_resource(resource_id_or_url=...). - Ikuti
publications[].paper_idyang dikembalikan denganget_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_lacunaMenggunakan endpoint publik/api/v1/searchmilik 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. Berikansearch_type="hypothesis"untuk pencarian hipotesis. Berikansearch_type="resource"untuk repositori kode, set data, model, dan demo yang ditautkan ke makalah, yang secara opsional dapat difilter denganresource_kind(codebase,dataset,model,demo) danprovider(github,huggingface,zenodo); misalnya,resource_kind="dataset"menemukan set data tolok ukur. Pencarian sumber daya menolakdate_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 diversions[].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; berikaninclude_resources=Falseuntuk 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_limitmembatasi pratinjau gambar (default server 3; berikan 0 untuk meniadakan pratinjau sambil tetap menyertakan sinyalfigures_truncated).get_resource(resource_id_or_url)Pencarian sumber daya berdasarkan id (dari pencarian sumber daya atau daftarresourcesmilikget_paper) atau URL/resource/...Lacuna: URL eksternal, ringkasan, faset (tugas, modalitas, ukuran, lisensi), metrik penyedia, kutipan README/kartu, makalah tertaut di bawahpublications(denganpaper_iddan hubungan sepertidataset_for), arah penelitian terkait, dan sumber daya yang disebutkan.- Alat penulis:
get_author_context(…, view="context"),get_author_papers,get_author_directions, danget_author_neighbors. Mulailah denganget_author_context, yang secara default menampilkan tampilan ringkas berorientasi pada agen (makalah dibatasi jumlahnya serta daftarimpact_directionsyang mudah dibaca, bukan telemetriimpact_clustersmentah). 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). Berikaninclude_neighbors=trueuntuk 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 menyertakanyearyang diminta). Gunakanget_institution_authorsuntuk menelusuri seluruh daftar penulis suatu institusi dengan paginasi.
API yang Dibungkus
| Alat MCP | Endpoint 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/lexicalProfil default untuk semua pencarian. Jikasearch_type="paper",sort="relevance", danfieldstidak ditetapkan, profil ini menggunakan pemeringkat leksikal+semantik produksi server dengan fallback yang lancar. Sebaliknya, defaultsearch_type="all"MCP menggunakan pemeringkatan leksikal default server.semanticGunakan 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 pencarianpaperdanall(hanya makalah yang memiliki embedding semantik), dan tidak dapat digunakan bersama filterresource_kind/provider.bm25_title_abstract/bm25Gunakan untuk pencocokan leksikal yang dibatasi pada judul dan abstrak. Ditolak untuk pencarianauthordaninstitution(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_URLDefault kehttps://lacuna.tiptreesystems.comLACUNA_MCP_TIMEOUTDefault ke30LACUNA_MCP_MAX_RETRIESDefault ke2; berlaku untuk batas waktu, kesalahan transportasi, dan respons HTTP429,502,503, dan504.LACUNA_MCP_USER_AGENTDefault kelacuna-research-mcp/{package_version}LACUNA_MCP_BEARER_TOKENToken bearer opsional yang dikirim sebagaiAuthorization: Bearer ...untuk deployment Lacuna privat.LACUNA_MCP_CLIENT_TOKENToken opsional yang dikirim sebagaiX-Lacuna-Client-Tokenuntuk mengidentifikasi server MCP ter-host kepada Lacuna demi batas laju pencariannya sendiri.LACUNA_MCP_LOG_LEVELDefault keWARNING(salah satu dariDEBUG,INFO,WARNING,ERROR,CRITICAL). Default ini menjaga operasi normal tetap senyap; turunkan hanya untuk debugging, karenaINFO/DEBUGmemungkinkan 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.pyPembuatan aplikasi MCPServer, pendaftaran alat, pembersihan siklus hidup, dan titik masuk CLIlacuna-research-mcp.lacuna_research_mcp/tools.pyFungsi 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.pyAkses HTTP runtime ke Lacuna:httpx.AsyncClientyang terikat pada event loop, penanganan percobaan ulang, pembungkusan kesalahan, penguraian JSON, normalisasi URL pada respons, danapi_get/api_object/api_payload.lacuna_research_mcp/config.pyKonstanta runtime,RuntimeConfig, pembuatan user-agent paket, dan penguraian lingkungan.lacuna_research_mcp/ids.pyHelper yang menerima id mentah atau URL halaman Lacuna dan mengekstrak segmen jalur API yang aman.lacuna_research_mcp/normalize.pyPemrosesan pascarespons untuk URL Lacuna relatif dan tautan Markdown.lacuna_research_mcp/errors.pyJenis pengecualian yang ditampilkan kepada pengguna untuk kegagalan akses API Lacuna.
Catatan
get_paperdanget_directionsecara default menggunakanview="context". Tampilan konteks ini secara default meminta payload ringkas berorientasi agen dari Lacuna agar respons MCP tetap kecil. Konteks makalah mencakupsummary_markdownjika tersedia (jika tidak,abstract), penulis, dan gambar; konteks arah mencakupsummary_markdown, makalah/penulis/arah terkait yang dibatasi jumlahnya, serta penanda pemotongan. Gunakanview="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
fieldskhusus secara default menggunakan pemeringkat leksikal+semantik produksi server. Aturranking_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/*_urldan kolom bernamasummary_markdown,article_markdown,markdown,content, ataudescriptiondinormalisasi menjadi URL absolut. - Kunci venue dan institusi adalah hash opak (misalnya
d7bf22905bd6), bukan nama yang dapat dibaca manusia sepertiicml. Temukan kuncinya terlebih dahulu dengansearch_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.