Lacuna Research

offiziell

Schreibgeschü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_for zum Paper und seinen Quellen.
  • Literatur durchsuchen — Führe eine Papersuche mit search_lacuna aus und öffne anschließend ein Ergebnis mit get_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_lacuna und prüfe eine davon mit get_resource auf verknüpfte Papers und Facetten.
  • Forschungsrichtungen erkunden — Sieh dir die Zusammenfassung einer Forschungsrichtung an und blättere mit get_direction_papers durch die zugehörigen Papers.
  • Generierte Vorschläge sichten — Durchsuche Vorschläge mit search_type="hypothesis" und lies einen davon mit get_hypothesis als 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 — Empower your coding agent for machine learning research

Python 3.11+ MCP server MIT license

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:

Add to Cursor Add to VS Code

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-mcp von 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:

SkillBeispielanfrage
Vorarbeiten prüfenBevor ich Token-Merging für einen Vision Transformer implementiere, finde die ähnlichsten Arbeiten und eine Baseline, die ich einbeziehen sollte.
Code zu Arbeiten zurückverfolgenWelche 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:

  1. search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)
  2. Überprüfe die Identität des Repositorys und übergib dann die zurückgegebene ID an get_resource(resource_id_or_url=...).
  3. Folge einem zurückgegebenen publications[].paper_id mit get_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_lacuna Verwendet 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 Hypothesensuche search_type="hypothesis" übergeben. Für Code-Repositories, Datensätze, Modelle und Demos, die mit Arbeiten verknüpft sind, search_type="resource" übergeben; optional mit resource_kind (codebase, dataset, model, demo) und provider (github, huggingface, zenodo) filtern. Zum Beispiel findet resource_kind="dataset" Benchmark-Datensätze. Die Ressourcensuche weist date_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 in versions[].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 Auslassen include_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 begrenzt figure_limit die Abbildungsvorschau (Serverstandard: 3; 0 übergeben, um Vorschauen zu unterdrücken und ein figures_truncated-Signal beizubehalten).
  • get_resource(resource_id_or_url) Ressourcensuche anhand der ID (aus der Ressourcensuche oder der get_paper-Liste resources) oder einer Lacuna-/resource/...-URL: externe URL, Zusammenfassung, Facetten (Aufgaben, Modalitäten, Größe, Lizenz), Anbieterkennzahlen, README-/Kartenauszug, verknüpfte Arbeiten unter publications (mit paper_id und Beziehungen wie dataset_for), verwandte Richtungen und erwähnte Ressourcen.
  • Autorentools: get_author_context(…, view="context"), get_author_papers, get_author_directions und get_author_neighbors. Beginnen Sie mit get_author_context, das standardmäßig die kompakte, agentenorientierte Ansicht verwendet (begrenzte Anzahl von Arbeiten sowie eine lesbare Liste impact_directions statt unverarbeiteter impact_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 Sie include_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 angeforderten year enthält). Verwenden Sie get_institution_authors, um die vollständige Autorenliste einer Institution seitenweise abzurufen.

Gekapselte APIs

MCP-ToolLacuna-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 / lexical Das Standardprofil für alle Suchen. Wenn search_type="paper", sort="relevance" und fields nicht gesetzt sind, verwendet es den produktiven lexikalisch-semantischen Ranker des Servers mit einem robusten Fallback. Der standardmäßige search_type="all" des MCP verwendet stattdessen das standardmäßige lexikalische Ranking des Servers.
  • semantic Fü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 nach paper und all unterstützt (nur Arbeiten verfügen über semantische Embeddings) und nicht zusammen mit Filtern für resource_kind/provider.
  • bm25_title_abstract / bm25 Für lexikalische Übereinstimmungen verwenden, die auf Titel und Abstract beschränkt sind. Wird bei Suchen nach author und institution zurü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_URL Standardwert: https://lacuna.tiptreesystems.com
  • LACUNA_MCP_TIMEOUT Standardwert: 30
  • LACUNA_MCP_MAX_RETRIES Standardwert: 2; gilt für Timeouts, Transportfehler und HTTP-Antworten 429, 502, 503 und 504.
  • LACUNA_MCP_USER_AGENT Standardwert: lacuna-research-mcp/{package_version}
  • LACUNA_MCP_BEARER_TOKEN Optionales Bearer-Token, das für private Lacuna-Bereitstellungen als Authorization: Bearer ... gesendet wird.
  • LACUNA_MCP_CLIENT_TOKEN Optionales Token, das als X-Lacuna-Client-Token gesendet wird, um einen gehosteten MCP-Server bei Lacuna für dessen eigenes Suchratenlimit zu identifizieren.
  • LACUNA_MCP_LOG_LEVEL Standardwert: WARNING (einer von DEBUG, INFO, WARNING, ERROR, CRITICAL). Der Standardwert hält den normalen Betrieb ruhig; nur zur Fehlersuche niedriger einstellen, da INFO/DEBUG den 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.py Erstellung der MCPServer-App, Registrierung von Tools, Bereinigung des Lifespans und der lacuna-research-mcp-CLI-Einstiegspunkt.
  • lacuna_research_mcp/tools.py MCP-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.py HTTP-Zugriff zur Laufzeit auf Lacuna: der an die Ereignisschleife gebundene httpx.AsyncClient, Wiederholungsbehandlung, Fehlerumhüllung, JSON-Parsing, URL-Normalisierung in Antworten sowie api_get/api_object/api_payload.
  • lacuna_research_mcp/config.py Laufzeitkonstanten, RuntimeConfig, Erstellung des Paket-User-Agents und Verarbeitung der Umgebungsvariablen.
  • lacuna_research_mcp/ids.py Hilfsfunktionen, die entweder rohe IDs oder Lacuna-Seiten-URLs akzeptieren und sichere API-Pfadsegmente extrahieren.
  • lacuna_research_mcp/normalize.py Nachbearbeitung von Antworten für relative Lacuna-URLs und Markdown-Links.
  • lacuna_research_mcp/errors.py Benutzersichtbarer Ausnahmetyp für Fehler beim Zugriff auf die Lacuna-API.

Hinweise

  • get_paper und get_direction verwenden standardmäßig view="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 (andernfalls abstract), Autorinnen und Autoren sowie Abbildungen; der Richtungskontext enthält summary_markdown, eine begrenzte Anzahl von Papers, Autorinnen und Autoren sowie verwandten Richtungen und Kürzungsmarkierungen. Verwende view="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 fields verwendet standardmäßig den lexikalisch-semantischen Produktions-Ranker des Servers. Setze ranking_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/*_url sowie in Feldern namens summary_markdown, article_markdown, markdown, content oder description werden in absolute URLs umgewandelt.
  • Schlüssel für Veranstaltungsorte und Institutionen sind undurchsichtige Hashes (zum Beispiel d7bf22905bd6), keine menschenlesbaren Namen wie icml. Ermittle den Schlüssel zuerst mit search_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.