Lacuna Research
offiziellSchreibgeschützte Karte der ML-Forschung für Coding-Agenten: Papers, Forschungsrichtungen, Autoren, Publikationsorte, Institutionen und Hypothesen, jeweils mit Quellen verknüpft. Gehostet, ohne Authentifizierung; außerdem ein PyPI-Paket.
Was kann man mit Lacuna Research MCP machen?
- Code zu Papers zurückverfolgen — Frage, welches Paper ein GitHub-Repository implementiert, und folge der erfassten Beziehung
official_code_forzum Paper und seinen Quellen. - Literatur durchsuchen — Führe eine Papersuche mit
search_lacunaaus und öffne anschließend ein Ergebnis mitget_paper, um eine kompakte Kontextansicht mit Zusammenfassung, Autorinnen und Autoren sowie Abbildungen zu erhalten. - Verknüpfte Ressourcen finden — Durchsuche Codebasen, Datensätze, Modelle oder Demos mit
search_lacunaund prüfe eine davon mitget_resourceauf verknüpfte Papers und Facetten. - Forschungsrichtungen erkunden — Sieh dir die Zusammenfassung einer Forschungsrichtung an und blättere mit
get_direction_papersdurch die zugehörigen Papers. - Generierte Vorschläge sichten — Durchsuche Vorschläge mit
search_type="hypothesis"und lies einen davon mitget_hypothesisals Idee zur Untersuchung, nicht als Ergebnis. - Forschende und Publikationsorte profilieren — Rufe den Kontext, die Papers, Forschungsrichtungen oder Nachbarn einer Autorin oder eines Autors ab und vergleiche Publikationsorte und Institutionen.
Gehosteter MCP-Server
npx add-mcp 'https://lacuna.tiptreesystems.com/api/mcp'Installiert in Claude Code, Codex, Cursor und mehr
Dokumentation
Lacuna Research MCP
Lacuna, entwickelt von Tiptree Systems, ist eine Forschungskarte des maschinellen Lernens: ein heterogener Wissensgraph, der Arbeiten, Forschungsrichtungen, Autorinnen und Autoren, Publikationsorte, Institutionen und generierte Forschungsvorschläge miteinander verknüpft. Für jedes abgeleitete Objekt führt eine Quellenspur zurück zur genauen Arbeit und Seite, aus der es hervorgegangen ist.
Lacuna Research MCP bietet Coding-Agenten für die KI-Forschung:
- Generierte Forschungsvorschläge. Entdecke Forschungsideen, die mit The Alien Space of Science generiert wurden.
- Forschungsrichtungen. Navigiere durch Konzeptcluster mit verknüpften Arbeiten, Autorinnen und Autoren sowie Vorschlägen.
- Agentengerechte Literatur. Durchsuche aktuelle Arbeiten im Markdown-Format mit Quellenlinks.
- Informationen zu Forschenden. Verfolge Autorinnen und Autoren, Veröffentlichungen, Forschungsrichtungen, Wirkung und verwandte Forschende.
- Kartierung der Forschungslandschaft. Vergleiche Publikationsorte, Institutionen, führende Forschende und Publikationsaktivitäten.
Verfolge beispielsweise eine Implementierung bis zu den erfassten Beziehungen zu Forschungsarbeiten zurück:
Finde die Arbeit hinter Dao-AILab/flash-attention. Zeige die erfasste Verbindung zum Repository und verlinke die Originalarbeit.
Dieses Beispiel folgt dem Pfad Repository → erfasste Beziehung zur Arbeit → Arbeit und Quellen.
Lacuna gibt die Beziehung official_code_for zu
FlashAttention zurück,
mit Links zum Repository und zur Originalarbeit. Prüfe diese Quellen, um
die Verbindung zu verifizieren. Führe das Beispiel aus oder
arbeite das Notebook durch.
Installation · Research-Skills · Erste Schritte · Tools · API-Referenz · Konfiguration
Installation
Agent-Plugin für Cursor
Dieses Repository enthält außerdem die gehostete MCP-Verbindung und die beiden Research-Skills als Agent Plugin. Cursor unterstützt dieses Format.
Um es lokal zu testen, kopiere dieses Repository nach
~/.cursor/plugins/local/lacuna-research-mcp, lade Cursor neu und öffne
Anpassen, um die beiden Skills und die MCP-Verbindung zu überprüfen. Das Plugin verbindet sich
mit https://lacuna.tiptreesystems.com/api/mcp; eine lokale Python-Installation oder
ein Lacuna-Konto ist nicht erforderlich. Aktiviere entweder diese Verbindung oder einen manuell konfigurierten
Lacuna-Server, um doppelte Tools zu vermeiden.
Cursor und VS Code
Nutze den gehosteten Server ohne lokale Python-Installation oder Lacuna-Konto:
Die Schaltflächen öffnen den MCP-Installationsablauf deines Editors. Überprüfe die Server-URL und
bestätige die Installation. Stelle nach dem Verbinden die obige FlashAttention-Frage;
dein Agent sollte search_lacuna, get_resource und get_paper verwenden.
Manuelle Konfiguration, falls sich der Installationslink nicht öffnet
Füge in Cursor diesen Eintrag in mcpServers unter .cursor/mcp.json ein:
{
"mcpServers": {
"lacuna-research": {"url": "https://lacuna.tiptreesystems.com/api/mcp"}
}
}
Füge in VS Code diesen Eintrag in servers unter .vscode/mcp.json ein:
{
"servers": {
"lacuna-research": {"type": "http", "url": "https://lacuna.tiptreesystems.com/api/mcp"}
}
}
Behalte alle vorhandenen Servereinträge bei. Öffne die MCP-Einstellungen deines Editors, um die Verbindung zu überprüfen und Lacunas Tools für die Unterhaltung zu aktivieren.
Gehosteter MCP-Server (Claude-Connector)
Nutze Lacunas gehosteten MCP-Server mit jedem Client, der Streamable HTTP unterstützt. Eine lokale Installation ist nicht erforderlich.
https://lacuna.tiptreesystems.com/api/mcp
Öffne in Claude Anpassen → Connectors → + Hinzufügen → Benutzerdefinierten Connector hinzufügen. Nenne ihn Lacuna Research, füge die obige URL ein und wähle bei einer Aufforderung zur Authentifizierung Keine Anmeldung aus. Schließe das Hinzufügen ab und aktiviere ihn anschließend in deiner Unterhaltung über + → Connectors.
In Team- und Enterprise-Arbeitsbereichen muss der Connector zuerst unter Organisationseinstellungen → Connectors hinzugefügt werden. Weitere Informationen findest du unter Claudes Einrichtung benutzerdefinierter Connectors.
Lokale Installation
Am einfachsten installierst du Lacuna Research MCP, indem du deinen Coding-Agenten, etwa Codex oder Claude Code, darum bittest:
Installiere und konfiguriere das Paket
lacuna-research-mcpvon PyPI für diesen Client.
Für die manuelle Einrichtung verwenden die folgenden Anweisungen uvx, um die neueste getaggte Version von PyPI auszuführen. Installiere zuerst uv; Lacuna Research MCP erfordert Python 3.11 oder neuer.
Codex
Füge den Server mit der Codex-CLI hinzu:
codex mcp add lacuna-research -- uvx lacuna-research-mcp
Alternativ kannst du Folgendes zu ~/.codex/config.toml hinzufügen (oder für eine Einrichtung nur für das Projekt zu .codex/config.toml in einem vertrauenswürdigen Projekt):
[mcp_servers.lacuna-research]
command = "uvx"
args = ["lacuna-research-mcp"]
Führe codex mcp list aus, um zu überprüfen, ob der Server konfiguriert ist. Die Codex-App, CLI und IDE-Erweiterung verwenden auf demselben Rechner dieselbe Konfiguration.
Claude Code
Füge den Server mit der Claude-Code-CLI für alle deine Projekte hinzu:
claude mcp add --scope user lacuna-research -- uvx lacuna-research-mcp
Lasse --scope user weg, um ihn nur zum aktuellen Projekt hinzuzufügen. Alternativ kannst du Folgendes unter dem Objekt mcpServers der obersten Ebene in ~/.claude.json hinzufügen:
{
"mcpServers": {
"lacuna-research": {
"type": "stdio",
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
Führe claude mcp get lacuna-research aus, um zu überprüfen, ob der Server konfiguriert ist.
Claude Desktop
Öffne Einstellungen → Entwickler → Konfiguration bearbeiten und füge den Server unter mcpServers in claude_desktop_config.json hinzu:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
Starte Claude Desktop nach dem Speichern der Datei neu.
Andere MCP-Clients
Verwende für jeden Client, der lokale MCP-Server über stdio unterstützt, diese Standardkonfiguration:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}
Eigenständiger Befehl
Installiere den MCP-Server als dauerhaft verfügbaren Befehl:
uv tool install lacuna-research-mcp
lacuna-research-mcp
Führe ihn aus, ohne einen dauerhaften Befehl zu installieren:
uvx lacuna-research-mcp
Wenn dies mit einem Vorabversionsfehler abbricht (zum Beispiel „Python 3.14.0rc2 is a prerelease...“),
verwendet uv eine frühe Vorabversion von Python 3.14, die das MCP SDK nicht unterstützt.
Aktualisiere uv (uv self update), installiere eine veröffentlichte Python-Version (uv python install 3.14)
oder führe uvx --python 3.13 lacuna-research-mcp aus.
Selbst gehosteter HTTP-Server
Um entfernte MCP-Clients über Streamable HTTP statt über stdio zu bedienen:
uvx lacuna-research-mcp --transport streamable-http --host 0.0.0.0 --port 8000
Der Endpunkt lautet /mcp. Der Server ist zustandslos und antwortet mit JSON, sodass er hinter einem Load Balancer ohne Sitzungspersistenz betrieben werden kann. Mit dem Standardwert --host 127.0.0.1 akzeptiert der Server nur localhost-Header Host; binde ihn daher an eine Nicht-Loopback-Adresse, wenn ein Reverse-Proxy einen öffentlichen Hostnamen weiterleitet.
Neueste Entwicklungsversion
PyPI enthält getaggte Versionen. Um stattdessen den neuesten Code aus dem Branch main auszuprobieren:
uvx --from git+https://github.com/tiptreesystems/lacuna-research-mcp.git lacuna-research-mcp
Lokale Entwicklung
Mit uv:
git clone https://github.com/tiptreesystems/lacuna-research-mcp.git
cd lacuna-research-mcp
uv sync --extra dev
uv run lacuna-research-mcp
Mit 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 .
Research-Skills
Der MCP-Server stellt Tools bereit. Diese optionalen Skills zeigen deinem Agenten, wie er sie für zwei Forschungsaufgaben einsetzen kann:
| Skill | Beispielanfrage |
|---|---|
| Vorarbeiten prüfen | Bevor ich Token-Merging für einen Vision Transformer implementiere, finde die ähnlichsten Arbeiten und eine Baseline, die ich einbeziehen sollte. |
| Code zu Arbeiten zurückverfolgen | Welche Arbeit implementiert Dao-AILab/flash-attention? Zeige die erfasste Beziehung und die Quellen. |
Verbinde zuerst den MCP-Server. Führe dann mit installiertem Node.js 22.20+ die Skills-CLI in deinem Projekt aus:
npx skills add tiptreesystems/lacuna-research-mcp
Wähle die Skills und den Agenten aus, die du verwendest. Um nur den Code-zu-Arbeit-Workflow zu installieren:
npx skills add tiptreesystems/lacuna-research-mcp --skill lacuna-code-to-paper
Skills werden standardmäßig im aktuellen Projekt installiert. Sie installieren oder konfigurieren nicht den MCP-Server. Starte nach der Installation eine neue Agentensitzung, falls dein Client neue Skills erst dann erkennt.
Erste Schritte
Stelle eine der obigen Fragen in deinem verbundenen Agenten oder probiere eine Frage zu einer Leseliste aus:
Auf meiner Liste stehen FlashAttention und FlashAttention-2. Welche Baselines oder Einschränkungen sollte ich zu Long-Context-Attention lesen?
Für ein reproduzierbares Beispiel ohne Modell-API-Schlüssel klone dieses Repository und führe Folgendes aus:
uv run examples/code_to_paper.py
Das Notebook erläutert jeden Schritt und vergleicht die Quellenspur mit einer einzelnen Suche nach einer Arbeit. Für die direkte Verwendung der Tools gilt derselbe Ablauf:
search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)- Überprüfe die Identität des Repositorys und übergib dann die zurückgegebene ID an
get_resource(resource_id_or_url=...). - Folge einem zurückgegebenen
publications[].paper_idmitget_paper(artifact_id_or_url=..., view="context", figure_limit=0).
Verwende für die Literatursuche search_lacuna(query="methods for detecting prompt injection attacks", search_type="paper", limit=5).
Verwende für generierte Vorschläge search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=5)
und rufe für eine zurückgegebene ID get_hypothesis auf. Generierte Vorschläge sind Ideen,
die untersucht werden sollen, keine Belege für veröffentlichte Ergebnisse.
Über Lacuna
Lacunas Pipeline gleicht wissenschaftliche Datensätze aus OpenAlex, OpenReview, DBLP und arXiv ab, extrahiert Konzeptelemente aus dem Text von Arbeiten und gruppiert sie zu Forschungsrichtungen (Lacuna-Arbeit); außerdem generiert sie mithilfe von The Alien Space of Science neue Forschungsvorschläge aus diesen Richtungen. Die Karte umfasst mehr als 2,29 Millionen Arbeiten, 215.000+ Autorenprofile, 28.000+ Forschungsrichtungen, 25.000+ Forschungsvorschläge und 5.300+ Publikationsorte — und wächst kontinuierlich, während neue arXiv- und andere KI-Arbeiten aufgenommen werden.
Umfang
Der Korpus deckt Forschung zu maschinellem Lernen und KI ab: Arbeiten, Forschungsrichtungen, Forschungsleistungen von Autorinnen und Autoren, Publikationsorte, Institutionen, generierte Forschungshypothesen und Forschungsressourcen (GitHub-Repositories, Hugging-Face-Datensätze und -Modelle, Zenodo-Einträge), die mit Arbeiten verknüpft sind. Er enthält keine Biografien, Nachrichten oder nichtwissenschaftlichen Webinhalte. Fragen außerhalb dieses Umfangs sollten Agenten anhand anderer Quellen beantworten.
Was es bereitstellt
search_lacunaVerwendet Lacunas öffentlichen/api/v1/search-Endpunkt für Richtungen, Arbeiten, Autoren, Veranstaltungsorte, Institutionen, Hypothesen und Ressourcen. Explizite Arbeitssuchen (search_type="paper") verwenden den produktiven lexikalisch-semantischen Ranker des Servers, wenn die übrigen Ranking-Argumente auf ihren Standardwerten bleiben. Für die Hypothesensuchesearch_type="hypothesis"übergeben. Für Code-Repositories, Datensätze, Modelle und Demos, die mit Arbeiten verknüpft sind,search_type="resource"übergeben; optional mitresource_kind(codebase,dataset,model,demo) undprovider(github,huggingface,zenodo) filtern. Zum Beispiel findetresource_kind="dataset"Benchmark-Datensätze. Die Ressourcensuche weistdate_from/date_to,venue, Jahressortierungen und semantisches Ranking zurück (Ressourcen haben keine Datumsangaben, Veranstaltungsorte oder Embeddings).get_hypothesis(hypothesis_id_or_url, view="context")Hypothese/Vorschlag.view="context"(Standard) liefert einen kompakten Vorschlagskontext mit einem einzelnen Abruf (Zusammenfassung, Abstract, verknüpfte Richtungen);view="full"gibt den Versionsdatensatz des Servers mit Versionsverlauf und Signalanzahlen zurück. Vorschlagstexte befinden sich inversions[].markdown.get_direction(cluster_id_or_url, view="context")Forschungsrichtung/Cluster.view="context"(Standard) fordert die kompakte, agentenorientierte Zusammenfassung an;view="full"gibt den unverarbeiteten Cluster-Datensatz zurück.get_direction_papers(cluster_id_or_url, page, limit, view="compact")Seitennummerierte Arbeiten, die einer Richtung zugeordnet sind.view="compact"(Standard) gibt zitierfähige Zeilen zurück (ID, URL, Titel, Jahr, Veranstaltungsort, einige Autoren, Abstract-Auszug);view="full"gibt die unverarbeiteten Paper-Datensätze der Upstream-Quelle zurück.get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True)Arbeitssuche mit verfügbaren Versionen; zum Lesen einer Version deren Artefakt-ID verwenden. Verknüpfte Ressourcen (Code-Repositories, Datensätze, Modelle und Demos) sind standardmäßig in Kontext- und Vollansichten enthalten; zum Auslasseninclude_resources=Falseübergeben. Andere Ansichten ignorieren diese Option.view="context"(Standard) fordert den kompakten, agentenorientierten Kontext an; weitere Ansichten sind"full","preview","blog","figures","concepts"oder"neighbors". In der Kontextansicht begrenztfigure_limitdie Abbildungsvorschau (Serverstandard: 3; 0 übergeben, um Vorschauen zu unterdrücken und einfigures_truncated-Signal beizubehalten).get_resource(resource_id_or_url)Ressourcensuche anhand der ID (aus der Ressourcensuche oder derget_paper-Listeresources) oder einer Lacuna-/resource/...-URL: externe URL, Zusammenfassung, Facetten (Aufgaben, Modalitäten, Größe, Lizenz), Anbieterkennzahlen, README-/Kartenauszug, verknüpfte Arbeiten unterpublications(mitpaper_idund Beziehungen wiedataset_for), verwandte Richtungen und erwähnte Ressourcen.- Autorentools:
get_author_context(…, view="context"),get_author_papers,get_author_directionsundget_author_neighbors. Beginnen Sie mitget_author_context, das standardmäßig die kompakte, agentenorientierte Ansicht verwendet (begrenzte Anzahl von Arbeiten sowie eine lesbare Listeimpact_directionsstatt unverarbeiteterimpact_clusters-Telemetriedaten). Verwenden Sie die speziellen Tools für Arbeiten, Richtungen und Nachbarn, um diese Sammlungen seitenweise abzurufen, ohne den Autorenkontext erneut abzurufen.view="full"gibt den vollständigen, vom Server begrenzten Kontext zurück (Sammlungen bleiben auf 100 begrenzt). Übergeben Sieinclude_neighbors=true, um ähnliche Autoren explizit einzubeziehen; dies kann die Serverlatenz deutlich erhöhen. - Tools für Veranstaltungsorte und Institutionen:
get_venue_context(…, view="context"),get_institution_context(…, view="context"),get_institution_authors. Kontexttools verwenden standardmäßig die kompakte Ansicht (begrenzte Listen, doppelte Blöcke entfernt; bei Veranstaltungsorten bleibt ein Ausschnitt der jüngsten Aktivitäten erhalten, der immer den angefordertenyearenthält). Verwenden Sieget_institution_authors, um die vollständige Autorenliste einer Institution seitenweise abzurufen.
Gekapselte APIs
| MCP-Tool | Lacuna-API-Endpunkt |
|---|---|
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 und provider werden als wiederholte kind- und provider-Abfrageparameter gesendet und erfordern search_type="resource" oder "all". author_id_or_url beschränkt search_type="paper" auf einen Autor und akzeptiert eine rohe Autoren-ID oder die URL einer Lacuna-Autorenseite. fields beschränkt/gewichtet die für das lexikalische Ranking verwendeten Textfelder, z. B. title^4,abstract, und wählt den experimentellen lexikalischen Ranker aus; bei einer standardmäßig nach Relevanz sortierten Arbeitssuche wird dadurch der produktive lexikalisch-semantische Ranker umgangen. Zulässige Felder sind title, abstract, summary, concepts, name, top_names, venue, description, topics, provider_key, paper_titles; jedes ist nur für die Typen gültig, die es enthalten — title: Arbeit/Cluster/Veranstaltungsort/Hypothese/Ressource; description/topics/provider_key/paper_titles: Ressource; abstract/summary/concepts: Arbeit; name: Autor/Institution/Veranstaltungsort; top_names: Cluster/Hypothese; venue: Arbeit/Veranstaltungsort (search_type="all" gilt für alle). Die Gewichte müssen 0 < weight <= 100 erfüllen. Unbekannte Felder, Gewichte außerhalb des zulässigen Bereichs, typinkompatible Felder sowie die Kombination von fields mit ranking_profile="semantic" werden zurückgewiesen, da der Server sie andernfalls stillschweigend verwerfen, begrenzen oder ignorieren würde.) |
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 (Standard) oder ?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 (bei gesetztem &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; Kontext und Vollansicht senden include_resources. Eine Work-Seiten-URL (/work/<name>, /work/<slug>/wrk_…) oder eine unveränderte wrk_…-ID wird zuerst über GET /api/v1/context/work/{work_id_or_name} gelesen |
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 fordert ähnliche Autoren explizit an) |
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" → dieselbe Route ohne view |
get_institution_context(institution_key_or_url, view="context") | view="context" → GET /api/v1/context/institution/{ikey}?view=compact; view="full" → dieselbe Route ohne view |
get_institution_authors(institution_key_or_url, limit=50, offset=0) | GET /api/v1/institutions/{ikey}/authors |
Bei Argumenten, die eine ID oder URL akzeptieren, übergeben Sie entweder die von search_lacuna zurückgegebene rohe ID oder die entsprechende Lacuna-Seiten-URL. Das MCP wandelt Lacuna-relative Felder url und *_url in absolute URLs um und ergänzt außerdem Lacuna-Links (einschließlich /resource/...-Seiten) in Feldern namens summary_markdown, article_markdown, markdown, content oder description zu absoluten URLs.
get_author_context ist in beiden Ansichten serverseitig begrenzt. Die standardmäßige kompakte Ansicht liefert eine kuratierte Übersicht; view="full" gibt die umfangreichere vollständige Struktur zurück, wobei eingebettete Sammlungen auf 100 begrenzt sind. Verwenden Sie get_author_papers und get_author_directions, statt eingebettete Kontextsammlungen seitenweise abzurufen.
Suchanfragen sind auf 50 Ergebnisse pro Aufruf begrenzt, Anfragen für Seiten mit Arbeiten zu einer Richtung auf 100 Ergebnisse pro Aufruf.
In search_lacuna sind date_from und date_to inklusive Grenzen des Veröffentlichungsdatums.
Zulässige Formate sind YYYY, YYYY-MM und YYYY-MM-DD; zum Beispiel
enthält date_from="2020", date_to="2022-03" Arbeiten vom 1. Januar 2020
bis zum 31. März 2022.
search_lacuna stellt die folgenden Rankingprofile bereit:
default/lexicalDas Standardprofil für alle Suchen. Wennsearch_type="paper",sort="relevance"undfieldsnicht gesetzt sind, verwendet es den produktiven lexikalisch-semantischen Ranker des Servers mit einem robusten Fallback. Der standardmäßigesearch_type="all"des MCP verwendet stattdessen das standardmäßige lexikalische Ranking des Servers.semanticFür die embeddingbasierte Arbeitssuche verwenden. Die semantische Abfrage lässt den üblichen lexikalischen Ranking-Schritt aus, der Server kann jedoch weiterhin exakte lexikalische Titelübereinstimmungen ergänzen. Wird nur für Suchen nachpaperundallunterstützt (nur Arbeiten verfügen über semantische Embeddings) und nicht zusammen mit Filtern fürresource_kind/provider.bm25_title_abstract/bm25Für lexikalische Übereinstimmungen verwenden, die auf Titel und Abstract beschränkt sind. Wird bei Suchen nachauthorundinstitutionzurückgewiesen (diese Datensätze haben keine Titel- oder Abstract-Felder).
Alle Suchen verwenden den Serverstandard, sofern ranking_profile nicht angegeben ist. Das MCP weist nicht unterstützte Kombinationen aus Profil und Typ zurück, da der Server andernfalls auf eine Teilzeichenfolgensuche zurückfallen und das angeforderte Rankingprofil stillschweigend ignorieren würde.
sort akzeptiert relevance (Standard), year_desc und year_asc. Jahressortierungen können nicht mit ranking_profile="semantic" kombiniert werden — der Server würde die Sortierung stillschweigend ignorieren —, daher weist das MCP diese Kombination zurück. Für aktuelle und zugleich relevante Abfragen sollten Sie das semantische Ranking beibehalten und die Aktualität stattdessen mit date_from/date_to einschränken.
Umgebungsvariablen
LACUNA_SITE_URLStandardwert:https://lacuna.tiptreesystems.comLACUNA_MCP_TIMEOUTStandardwert:30LACUNA_MCP_MAX_RETRIESStandardwert:2; gilt für Timeouts, Transportfehler und HTTP-Antworten429,502,503und504.LACUNA_MCP_USER_AGENTStandardwert:lacuna-research-mcp/{package_version}LACUNA_MCP_BEARER_TOKENOptionales Bearer-Token, das für private Lacuna-Bereitstellungen alsAuthorization: Bearer ...gesendet wird.LACUNA_MCP_CLIENT_TOKENOptionales Token, das alsX-Lacuna-Client-Tokengesendet wird, um einen gehosteten MCP-Server bei Lacuna für dessen eigenes Suchratenlimit zu identifizieren.LACUNA_MCP_LOG_LEVELStandardwert:WARNING(einer vonDEBUG,INFO,WARNING,ERROR,CRITICAL). Der Standardwert hält den normalen Betrieb ruhig; nur zur Fehlersuche niedriger einstellen, daINFO/DEBUGden HTTP-Client vollständige Anfrage-URLs — einschließlich der Suchabfrage — auf stderr protokollieren lassen. Manche MCP-Hosts speichern diese Protokolle.
Umgebungsvariablen werden einmalig gelesen, wenn der MCP-Server erstellt wird, oder beim ersten direkten Tool-/API-Aufruf, falls das Modul importiert wird, ohne create_mcp() aufzurufen.
Implementierungsstruktur
Der Server ist ein schlanker MCP-Adapter für Lacunas HTTP-API. Die Implementierung ist nach Zuständigkeiten aufgeteilt:
lacuna_research_mcp/server.pyErstellung der MCPServer-App, Registrierung von Tools, Bereinigung des Lifespans und derlacuna-research-mcp-CLI-Einstiegspunkt.lacuna_research_mcp/tools.pyMCP-Toolfunktionen. Jedes Tool normalisiert seine Eingaben, ruft über die gemeinsamen Client-Hilfsfunktionen den passenden Lacuna-API-Endpunkt auf und gibt JSON-kompatible Daten zurück.lacuna_research_mcp/client.pyHTTP-Zugriff zur Laufzeit auf Lacuna: der an die Ereignisschleife gebundenehttpx.AsyncClient, Wiederholungsbehandlung, Fehlerumhüllung, JSON-Parsing, URL-Normalisierung in Antworten sowieapi_get/api_object/api_payload.lacuna_research_mcp/config.pyLaufzeitkonstanten,RuntimeConfig, Erstellung des Paket-User-Agents und Verarbeitung der Umgebungsvariablen.lacuna_research_mcp/ids.pyHilfsfunktionen, die entweder rohe IDs oder Lacuna-Seiten-URLs akzeptieren und sichere API-Pfadsegmente extrahieren.lacuna_research_mcp/normalize.pyNachbearbeitung von Antworten für relative Lacuna-URLs und Markdown-Links.lacuna_research_mcp/errors.pyBenutzersichtbarer Ausnahmetyp für Fehler beim Zugriff auf die Lacuna-API.
Hinweise
get_paperundget_directionverwenden standardmäßigview="context". Diese Kontextansichten fordern standardmäßig Lacunas kompakte, agentenorientierte Payloads an, damit MCP-Antworten klein bleiben. Der Paper-Kontext enthält, sofern verfügbar,summary_markdown(andernfallsabstract), Autorinnen und Autoren sowie Abbildungen; der Richtungskontext enthältsummary_markdown, eine begrenzte Anzahl von Papers, Autorinnen und Autoren sowie verwandten Richtungen und Kürzungsmarkierungen. Verwendeview="full", wenn du die Rohmetadaten benötigst, und die anderen Paper-Ansichten (preview,blog,figures,concepts,neighbors), wenn du eine einzelne Teilressource abrufen möchtest.- Eine explizite, nach Relevanz sortierte Papersuche ohne benutzerdefiniertes
fieldsverwendet standardmäßig den lexikalisch-semantischen Produktions-Ranker des Servers. Setzeranking_profile="semantic"für ein embeddingbasiertes Retrieval (mit möglicher Überlagerung durch exakte Titelübereinstimmungen) oder"bm25_title_abstract"für den lexikalischen Abgleich von Titel und Abstract. - Die meisten Detailtools akzeptieren entweder die von der Suche zurückgegebene ID oder die entsprechende Lacuna-URL.
- Relative Lacuna-URLs in den Antwortfeldern
url/*_urlsowie in Feldern namenssummary_markdown,article_markdown,markdown,contentoderdescriptionwerden in absolute URLs umgewandelt. - Schlüssel für Veranstaltungsorte und Institutionen sind undurchsichtige Hashes (zum Beispiel
d7bf22905bd6), keine menschenlesbaren Namen wieicml. Ermittle den Schlüssel zuerst mitsearch_lacuna(search_type="venue")oder übergib eine/venue/...-Seiten-URL.
Zitation
Wenn du unsere Arbeit hilfreich findest, kannst du gerne die Papers zitieren, auf denen Lacunas Generierung von Forschungsvorschlägen und die Forschungskarte basieren.
Generierung von Forschungsvorschlägen — 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}
}
Forschungskarte — 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}
}
Lizenz
MIT. Siehe LICENSE.