Lacuna Research

oficial

Mapa de solo lectura de la investigación en ML para agentes de programación: artículos, líneas de investigación, autores, publicaciones, instituciones e hipótesis, cada uno vinculado a sus fuentes. Alojado, sin autenticación; también es un paquete de PyPI.

¿Qué puedes hacer con Lacuna Research MCP?

  • Rastrear código hasta los artículos — Pregunta qué artículo implementa un repositorio de GitHub y sigue la relación registrada official_code_for hasta el artículo y sus fuentes.
  • Buscar literatura — Ejecuta una búsqueda de artículos con search_lacuna y luego abre un resultado con get_paper para obtener una vista contextual concisa con resumen, autores e imágenes.
  • Encontrar recursos vinculados — Busca bases de código, conjuntos de datos, modelos o demostraciones con search_lacuna e inspecciona uno con get_resource para consultar los artículos vinculados y las facetas.
  • Explorar líneas de investigación — Consulta el resumen de una línea de investigación y recorre sus artículos asociados con get_direction_papers.
  • Revisar propuestas generadas — Busca propuestas con search_type="hypothesis" y lee una de las devueltas con get_hypothesis como ideas que investigar, no como hallazgos.
  • Perfilar investigadores y publicaciones — Consulta el contexto, los artículos, las líneas de investigación o los colaboradores de un autor, y compara publicaciones e instituciones.

Servidor MCP alojado

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

Se instala en Claude Code, Codex, Cursor y más

Documentación

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

Python 3.11+ MCP server MIT license

Lacuna Research MCP

Lacuna, creado por Tiptree Systems, es un mapa de investigación del aprendizaje automático: un grafo de conocimiento heterogéneo que conecta artículos, líneas de investigación, autores, publicaciones, instituciones y propuestas de investigación generadas, con un rastro de fuentes que lleva desde cada objeto derivado hasta el artículo y la página exactos que lo originaron.

Lacuna Research MCP proporciona a los agentes de programación de investigadores de IA:

  • Propuestas de investigación generadas. Explora ideas de investigación generadas con The Alien Space of Science.
  • Líneas de investigación. Recorre grupos de conceptos con artículos, autores y propuestas vinculados.
  • Literatura lista para agentes. Busca artículos recientes en Markdown con enlaces a las fuentes.
  • Información sobre investigadores. Rastrea autores, publicaciones, líneas de investigación, impacto e investigadores relacionados.
  • Mapeo del panorama. Compara publicaciones, instituciones, investigadores destacados y actividad de publicación.

Por ejemplo, rastrea una implementación hasta las relaciones registradas con artículos:

Encuentra el artículo detrás de Dao-AILab/flash-attention. Muestra la conexión registrada con el repositorio y enlaza el artículo original.

Este ejemplo sigue repositorio → relación registrada con el artículo → artículo y fuentes. Lacuna devuelve la relación official_code_for con FlashAttention, con enlaces al repositorio y al artículo original. Inspecciona esas fuentes para verificar la conexión. Ejecuta el ejemplo o prueba el notebook.

Instalación · Habilidades de investigación · Primer uso · Herramientas · Referencia de la API · Configuración

Instalación

Plugin de agente para Cursor

Este repositorio también incluye la conexión MCP alojada y las dos habilidades de investigación como un Agent Plugin. Cursor admite este formato.

Para probarlo localmente, copia este repositorio en ~/.cursor/plugins/local/lacuna-research-mcp, vuelve a cargar Cursor y abre Customize para comprobar las dos habilidades y la conexión MCP. El plugin se conecta a https://lacuna.tiptreesystems.com/api/mcp; no se requiere una instalación local de Python ni una cuenta de Lacuna. Habilita esta conexión o un servidor de Lacuna configurado manualmente para evitar herramientas duplicadas.

Cursor y VS Code

Usa el servidor alojado sin instalar Python localmente ni tener una cuenta de Lacuna:

Add to Cursor Add to VS Code

Los botones abren el flujo de instalación MCP de tu editor. Revisa la URL del servidor y confirma la instalación. Después de conectarte, haz la pregunta sobre FlashAttention de arriba; tu agente debería usar search_lacuna, get_resource y get_paper.

Configuración manual si no se abre el enlace de instalación

En Cursor, combina esta entrada con mcpServers en .cursor/mcp.json:

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

En VS Code, combina esta entrada con servers en .vscode/mcp.json:

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

Conserva las entradas de servidor existentes. Abre la configuración MCP de tu editor para verificar la conexión y habilitar las herramientas de Lacuna para la conversación.

Servidor MCP alojado (conector de Claude)

Usa el servidor MCP alojado de Lacuna con cualquier cliente compatible con Streamable HTTP. No se requiere instalación local.

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

En Claude, abre Customize → Connectors → + Add → Add custom connector. Asígnale el nombre Lacuna Research, pega la URL de arriba y selecciona No sign in si se te solicita autenticación. Termina de añadirlo y, luego, habilítalo desde + → Connectors en tu conversación.

En los espacios de trabajo Team y Enterprise, primero hay que añadir el conector en Organization settings → Connectors. Consulta la configuración de conectores personalizados de Claude para obtener más información.

Instalación local

La forma más sencilla de instalar Lacuna Research MCP es pedírselo a tu agente de programación, como Codex o Claude Code:

Instala y configura el paquete lacuna-research-mcp de PyPI para este cliente.

Para la configuración manual, las instrucciones siguientes usan uvx para ejecutar la versión etiquetada más reciente de PyPI. Instala uv primero; Lacuna Research MCP requiere Python 3.11 o posterior.

Codex

Añade el servidor con la CLI de Codex:

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

Como alternativa, añade lo siguiente a ~/.codex/config.toml (o a .codex/config.toml en un proyecto de confianza para configurarlo solo para ese proyecto):

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

Ejecuta codex mcp list para verificar que el servidor esté configurado. La aplicación Codex, la CLI y la extensión para IDE comparten esta configuración en la misma máquina.

Claude Code

Añade el servidor para todos tus proyectos con la CLI de Claude Code:

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

Omite --scope user para añadirlo solo al proyecto actual. Como alternativa, añade lo siguiente dentro del objeto de nivel superior mcpServers en ~/.claude.json:

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

Ejecuta claude mcp get lacuna-research para verificar que el servidor esté configurado.

Claude Desktop

Abre Settings → Developer → Edit Config y añade el servidor bajo mcpServers en claude_desktop_config.json:

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

Reinicia Claude Desktop después de guardar el archivo.

Otros clientes MCP

Para cualquier cliente compatible con servidores MCP locales mediante stdio, usa esta configuración estándar:

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

Comando independiente

Instala el servidor MCP como un comando persistente:

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

Ejecútalo sin instalar un comando persistente:

uvx lacuna-research-mcp

Si esto termina con un error de versión preliminar (por ejemplo, «Python 3.14.0rc2 is a prerelease...»), es posible que uv esté usando una versión preliminar temprana de Python 3.14 que el SDK de MCP no admite. Actualiza uv (uv self update), instala una versión publicada de Python (uv python install 3.14), o ejecuta uvx --python 3.13 lacuna-research-mcp.

Servidor HTTP autohospedado

Para ofrecer acceso a clientes MCP remotos mediante Streamable HTTP en lugar de stdio:

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

El endpoint es /mcp. El servidor no tiene estado y responde con JSON, por lo que puede ejecutarse detrás de un balanceador de carga sin afinidad de sesión. Con el valor predeterminado --host 127.0.0.1, el servidor solo acepta encabezados Host de localhost, así que vincúlalo a una dirección que no sea de loopback cuando un proxy inverso reenvíe un nombre de host público.

Última versión de desarrollo

PyPI contiene versiones etiquetadas. Para probar el código más reciente de la rama main:

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

Desarrollo local

Con uv:

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

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

Habilidades de investigación

El servidor MCP proporciona herramientas. Estas habilidades opcionales enseñan a tu agente a usarlas para dos tareas de investigación:

HabilidadEjemplo de solicitud
Comprobar trabajos previosAntes de implementar la fusión de tokens para un transformador de visión, encuentra el trabajo más cercano y una línea base que pueda incluir.
Rastrear código hasta artículos¿Qué artículo implementa Dao-AILab/flash-attention? Muestra la relación registrada y las fuentes.

Conecta primero el servidor MCP. Luego, con Node.js 22.20+ instalado, ejecuta la CLI de habilidades desde tu proyecto:

npx skills add tiptreesystems/lacuna-research-mcp

Elige las habilidades y el agente que quieras usar. Para instalar solo el flujo de trabajo de código a artículo:

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

De forma predeterminada, las habilidades se instalan en el proyecto actual. No instalan ni configuran el servidor MCP. Inicia una nueva sesión del agente después de la instalación si tu cliente necesita una para detectar las nuevas habilidades.

Primer uso

Haz una de las preguntas anteriores en tu agente conectado o prueba una pregunta sobre una lista de lectura:

Mi lista incluye FlashAttention y FlashAttention-2. ¿Qué líneas base o limitaciones debería consultar para la atención de contexto largo?

Para reproducir un ejemplo sin una clave de API de modelo, clona este repositorio y ejecuta:

uv run examples/code_to_paper.py

El notebook explica cada paso y compara el rastro de fuentes con una búsqueda de un solo artículo. Para usar las herramientas directamente, el mismo flujo es:

  1. search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)
  2. Comprueba la identidad del repositorio y, luego, pasa el ID devuelto a get_resource(resource_id_or_url=...).
  3. Si se devuelve un publications[].paper_id, continúa con get_paper(artifact_id_or_url=..., view="context", figure_limit=0).

Para buscar literatura, usa search_lacuna(query="methods for detecting prompt injection attacks", search_type="paper", limit=5). Para obtener propuestas generadas, usa search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=5) y continúa con el ID devuelto mediante get_hypothesis. Las propuestas generadas son ideas para investigar, no pruebas de hallazgos publicados.

Acerca de Lacuna

El proceso de Lacuna reconcilia registros académicos de OpenAlex, OpenReview, DBLP y arXiv; extrae elementos conceptuales del texto de los artículos y los agrupa en líneas de investigación (artículo de Lacuna); y genera propuestas de investigación novedosas a partir de esas líneas con The Alien Space of Science. El mapa abarca más de 2.29 millones de artículos, 215,000+ perfiles de autor, 28,000+ líneas de investigación, 25,000+ propuestas de investigación y 5,300+ publicaciones; y crece continuamente a medida que se incorporan nuevos artículos de arXiv y otros trabajos de IA.

Alcance

El corpus abarca la investigación en aprendizaje automático e IA: artículos, líneas de investigación, producción investigadora de los autores, publicaciones, instituciones, hipótesis de investigación generadas y recursos de investigación (repositorios de GitHub, conjuntos de datos y modelos de Hugging Face, registros de Zenodo) vinculados a artículos. No contiene biografías, noticias ni contenido web ajeno a la investigación. Los agentes deben responder las preguntas fuera de ese ámbito usando otras fuentes.

Qué ofrece

  • search_lacuna Usa el endpoint público de /api/v1/search de Lacuna para consultar direcciones, artículos, autores, publicaciones, instituciones, hipótesis y recursos. Las búsquedas explícitas de artículos (search_type="paper") usan el clasificador léxico+semántico de producción del servidor cuando los demás argumentos de clasificación conservan sus valores predeterminados. Pasa search_type="hypothesis" para buscar hipótesis. Pasa search_type="resource" para buscar repositorios de código, conjuntos de datos, modelos y demostraciones vinculados a artículos, con filtros opcionales mediante resource_kind (codebase, dataset, model, demo) y provider (github, huggingface, zenodo); por ejemplo, resource_kind="dataset" encuentra conjuntos de datos de referencia. La búsqueda de recursos rechaza date_from/date_to, venue, la ordenación por año y la clasificación semántica (los recursos no tienen fechas, publicaciones ni embeddings).
  • get_hypothesis(hypothesis_id_or_url, view="context") Hipótesis/propuesta. view="context" (predeterminado) es un contexto compacto de propuesta obtenido en una sola consulta (resumen, abstract, direcciones vinculadas); view="full" devuelve el registro de versiones del servidor, con el historial de versiones y el recuento de señales. Los cuerpos de las propuestas están en versions[].markdown.
  • get_direction(cluster_id_or_url, view="context") Dirección/grupo de investigación. view="context" (predeterminado) solicita el resumen compacto orientado a agentes; view="full" devuelve el registro sin procesar del grupo.
  • get_direction_papers(cluster_id_or_url, page, limit, view="compact") Artículos paginados asociados a una dirección. view="compact" (predeterminado) devuelve filas listas para citar (id, url, título, año, publicación, algunos autores, fragmento del abstract); view="full" devuelve los registros sin procesar de artículos de origen.
  • get_paper(artifact_id_or_url, view="context", figure_limit=None, include_resources=True) Consulta de artículos con las versiones disponibles; usa el ID de artefacto de una versión para leerla. Los recursos vinculados (repositorios de código, conjuntos de datos, modelos y demostraciones) se incluyen de forma predeterminada en las vistas de contexto y completa; pasa include_resources=False para omitirlos. Las demás vistas ignoran esta opción. view="context" (predeterminado) solicita el contexto compacto orientado a agentes; las otras vistas son "full", "preview", "blog", "figures", "concepts" o "neighbors". En la vista de contexto, figure_limit limita la vista previa de figuras (el valor predeterminado del servidor es 3; pasa 0 para suprimir las vistas previas y conservar una señal figures_truncated).
  • get_resource(resource_id_or_url) Consulta de recursos por id (de la búsqueda de recursos o de la lista resources de get_paper) o por URL de Lacuna /resource/...: URL externa, resumen, facetas (tareas, modalidades, tamaño, licencia), métricas del proveedor, extracto del README/tarjeta, artículos vinculados bajo publications (con paper_id y relaciones como dataset_for), direcciones relacionadas y recursos mencionados.
  • Herramientas de autor: get_author_context(…, view="context"), get_author_papers, get_author_directions y get_author_neighbors. Empieza con get_author_context, que muestra de forma predeterminada la vista compacta orientada a agentes (artículos limitados y una lista legible de impact_directions en lugar de la telemetría sin procesar de impact_clusters). Usa las herramientas específicas de artículos, direcciones y vecinos para recorrer esas colecciones por páginas sin repetir el contexto del autor. view="full" devuelve el contexto completo con la estructura limitada por el servidor (las colecciones siguen limitadas a 100). Pasa include_neighbors=true para incluir explícitamente autores similares; esto puede aumentar considerablemente la latencia del servidor.
  • Herramientas de publicaciones e instituciones: get_venue_context(…, view="context"), get_institution_context(…, view="context"), get_institution_authors. Las herramientas de contexto usan de forma predeterminada el formato compacto (listas limitadas, bloques duplicados eliminados; la publicación conserva una sección de actividad reciente que siempre incluye el year solicitado). Usa get_institution_authors para recorrer por páginas la lista completa de autores de una institución.

API envueltas

Herramienta MCPEndpoint de la API de 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 y provider se envían como parámetros de consulta kind y provider repetidos y requieren search_type="resource" o "all". author_id_or_url limita search_type="paper" a un autor y acepta un ID de autor sin procesar o la URL de una página de autor de Lacuna. fields restringe o pondera los campos de texto usados para la clasificación léxica, p. ej., title^4,abstract, y selecciona el clasificador léxico experimental; para una búsqueda de artículos ordenada por relevancia predeterminada, esto omite el clasificador léxico+semántico de producción. Los campos permitidos son title, abstract, summary, concepts, name, top_names, venue, description, topics, provider_key, paper_titles; cada uno solo es válido para los tipos que lo incluyen: title: artículo/grupo/publicación/hipótesis/recurso; description/topics/provider_key/paper_titles: recurso; abstract/summary/concepts: artículo; name: autor/institución/publicación; top_names: grupo/hipótesis; venue: artículo/publicación (search_type="all" abarca todos). Las ponderaciones deben cumplir 0 < weight <= 100. Se rechazan los campos desconocidos, las ponderaciones fuera de rango, los campos incompatibles con el tipo y fields combinado con ranking_profile="semantic", ya que, de lo contrario, el servidor los descartaría, limitaría o ignoraría silenciosamente.)
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 (predeterminado) o ?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 (cuando se establece &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; las vistas de contexto y completa envían include_resources. Una URL de página Work (/work/<name>, /work/<slug>/wrk_…) o un id wrk_… sin procesar se consulta primero mediante GET /api/v1/context/work/{work_id_or_name}
get_resource(resource_id_or_url)GET /api/v1/resources/{resource_id}
get_author_papers(author_id_or_url, limit=50, offset=0)GET /api/v1/authors/{author_id}/papers
get_author_directions(author_id_or_url, limit=50, offset=0)GET /api/v1/authors/{author_id}/directions
get_author_context(author_id_or_url, view="context", include_neighbors=false)view="context" → GET /api/v1/context/author/{author_id}?view=compact; view="full" → GET /api/v1/context/author/{author_id} (include_neighbors=true solicita explícitamente autores similares)
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" → la misma ruta sin view
get_institution_context(institution_key_or_url, view="context")view="context" → GET /api/v1/context/institution/{ikey}?view=compact; view="full" → la misma ruta sin view
get_institution_authors(institution_key_or_url, limit=50, offset=0)GET /api/v1/institutions/{ikey}/authors

Para los argumentos de tipo id o URL, pasa el id sin procesar devuelto por search_lacuna o la URL de la página de Lacuna correspondiente. El MCP normaliza los campos relativos a Lacuna url y *_url a URL absolutas, y también convierte en absolutas las URL de Lacuna (incluidas las páginas /resource/...) dentro de los campos llamados summary_markdown, article_markdown, markdown, content o description.

get_author_context está limitado en el servidor en ambas vistas. La vista compacta predeterminada devuelve un resumen seleccionado; view="full" devuelve la estructura completa más amplia, con las colecciones integradas limitadas a 100. Usa get_author_papers y get_author_directions en lugar de intentar paginar las colecciones de contexto integradas.

Las solicitudes de búsqueda están limitadas a 50 resultados por llamada, y las solicitudes de páginas de artículos por dirección están limitadas a 100 resultados por llamada. En search_lacuna, date_from y date_to son límites inclusivos de fecha de publicación. Los formatos aceptados son YYYY, YYYY-MM y YYYY-MM-DD; por ejemplo, date_from="2020", date_to="2022-03" incluye artículos desde el 1 de enero de 2020 hasta el 31 de marzo de 2022.

search_lacuna ofrece estos perfiles de clasificación:

  • default / lexical El perfil predeterminado para todas las búsquedas. Si search_type="paper", sort="relevance" y fields no están definidos, usa el clasificador léxico+semántico de producción del servidor con una alternativa de respaldo gradual. El valor predeterminado de search_type="all" del MCP usa, en cambio, la clasificación léxica predeterminada del servidor.
  • semantic Úsalo para recuperar artículos mediante embeddings. La consulta semántica omite el componente de clasificación léxica habitual, pero el servidor aún puede superponer coincidencias léxicas de títulos exactos. Solo se admite en búsquedas de paper y all (solo los artículos tienen embeddings semánticos), y no junto con los filtros resource_kind/provider.
  • bm25_title_abstract / bm25 Úsalo para la coincidencia léxica limitada al título y al abstract. Se rechaza en las búsquedas de author y institution (esos registros no tienen campos de título ni de abstract).

Todas las búsquedas usan el valor predeterminado del servidor, salvo que se proporcione ranking_profile. El MCP rechaza las combinaciones de perfil y tipo no admitidas, ya que, de lo contrario, el servidor recurriría a la búsqueda por subcadenas e ignoraría silenciosamente el perfil de clasificación solicitado.

sort acepta relevance (predeterminado), year_desc y year_asc. La ordenación por año no se puede combinar con ranking_profile="semantic" —el servidor ignoraría silenciosamente la ordenación—, por lo que el MCP rechaza esa combinación; para consultas recientes y relevantes, conserva la clasificación semántica y limita la actualidad con date_from/date_to.

Variables de entorno

  • LACUNA_SITE_URL El valor predeterminado es https://lacuna.tiptreesystems.com
  • LACUNA_MCP_TIMEOUT El valor predeterminado es 30
  • LACUNA_MCP_MAX_RETRIES El valor predeterminado es 2; se aplica a tiempos de espera, errores de transporte y respuestas HTTP 429, 502, 503 y 504.
  • LACUNA_MCP_USER_AGENT El valor predeterminado es lacuna-research-mcp/{package_version}
  • LACUNA_MCP_BEARER_TOKEN Token bearer opcional que se envía como Authorization: Bearer ... para implementaciones privadas de Lacuna.
  • LACUNA_MCP_CLIENT_TOKEN Token opcional que se envía como X-Lacuna-Client-Token para identificar ante Lacuna un servidor MCP alojado, a efectos de su propio límite de frecuencia de búsqueda.
  • LACUNA_MCP_LOG_LEVEL El valor predeterminado es WARNING (uno de DEBUG, INFO, WARNING, ERROR, CRITICAL). El valor predeterminado mantiene silencioso el funcionamiento normal; auméntalo solo para depurar, ya que INFO/DEBUG permiten que el cliente HTTP registre en stderr las URL completas de las solicitudes, incluida la cadena de consulta de búsqueda, que algunos hosts MCP conservan.

Las variables de entorno se leen una sola vez al crear el servidor MCP o en la primera llamada directa a una herramienta/API si se importa el módulo sin llamar a create_mcp().

Estructura de la implementación

El servidor es un adaptador MCP ligero sobre la API HTTP de Lacuna. La implementación se divide según las responsabilidades:

  • lacuna_research_mcp/server.py Creación de la aplicación MCPServer, registro de herramientas, limpieza del ciclo de vida y punto de entrada CLI de lacuna-research-mcp.
  • lacuna_research_mcp/tools.py Funciones de herramientas MCP. Cada herramienta normaliza sus entradas, llama al endpoint correspondiente de la API de Lacuna mediante los helpers compartidos del cliente y devuelve datos compatibles con JSON.
  • lacuna_research_mcp/client.py Acceso HTTP en tiempo de ejecución a Lacuna: el httpx.AsyncClient vinculado al bucle de eventos, gestión de reintentos, envoltura de errores, análisis de JSON, normalización de URL en las respuestas y api_get/api_object/api_payload.
  • lacuna_research_mcp/config.py Constantes de tiempo de ejecución, RuntimeConfig, construcción del user-agent del paquete y análisis del entorno.
  • lacuna_research_mcp/ids.py Helpers que aceptan IDs sin procesar o URL de páginas de Lacuna y extraen segmentos de ruta seguros para la API.
  • lacuna_research_mcp/normalize.py Posprocesamiento de respuestas para URL relativas de Lacuna y enlaces Markdown.
  • lacuna_research_mcp/errors.py Tipo de excepción visible para el usuario para los errores de acceso a la API de Lacuna.

Notas

  • get_paper y get_direction usan view="context" de forma predeterminada. Estas vistas de contexto solicitan por defecto las cargas compactas orientadas a agentes de Lacuna para mantener pequeñas las respuestas de MCP. El contexto de un artículo incluye summary_markdown cuando está disponible (de lo contrario, abstract), autores y figuras; el contexto de una dirección incluye summary_markdown, artículos/autores/direcciones relacionadas con un límite y marcadores de truncamiento. Usa view="full" cuando necesites los metadatos sin procesar, y las otras vistas de artículos (preview, blog, figures, concepts, neighbors) cuando quieras un único subrecurso aislado.
  • Una búsqueda explícita de artículos ordenada por relevancia y sin un fields personalizado usa de forma predeterminada el clasificador léxico-semántico de producción del servidor. Establece ranking_profile="semantic" para la recuperación basada en embeddings (con una posible capa adicional de coincidencia exacta de títulos) o "bm25_title_abstract" para la coincidencia léxica de títulos y resúmenes.
  • La mayoría de las herramientas de detalle aceptan el id devuelto por la búsqueda o la URL correspondiente de Lacuna.
  • Las URL relativas de Lacuna en los campos de respuesta url/*_url y en los campos llamados summary_markdown, article_markdown, markdown, content o description se normalizan a URL absolutas.
  • Las claves de sedes e instituciones son hashes opacos (por ejemplo, d7bf22905bd6), nunca nombres legibles para las personas, como icml. Primero, busca la clave con search_lacuna(search_type="venue") o proporciona una URL de página /venue/....

Cita

Si nuestro trabajo te resulta útil, no dudes en citar los artículos que sustentan la generación de propuestas de investigación y el mapa de investigación de Lacuna.

Generación de propuestas de investigación — 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}
}

Mapa de investigación — 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}
}

Licencia

MIT. Consulta LICENSE.