Lacuna Research
oficialMapa 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_forhasta el artículo y sus fuentes. - Buscar literatura — Ejecuta una búsqueda de artículos con
search_lacunay luego abre un resultado conget_paperpara 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_lacunae inspecciona uno conget_resourcepara 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 conget_hypothesiscomo 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
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:
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-mcpde 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:
| Habilidad | Ejemplo de solicitud |
|---|---|
| Comprobar trabajos previos | Antes 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:
search_lacuna(query="FlashAttention", search_type="resource", resource_kind="codebase", limit=5)- Comprueba la identidad del repositorio y, luego, pasa el ID devuelto a
get_resource(resource_id_or_url=...). - Si se devuelve un
publications[].paper_id, continúa conget_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_lacunaUsa el endpoint público de/api/v1/searchde 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. Pasasearch_type="hypothesis"para buscar hipótesis. Pasasearch_type="resource"para buscar repositorios de código, conjuntos de datos, modelos y demostraciones vinculados a artículos, con filtros opcionales medianteresource_kind(codebase,dataset,model,demo) yprovider(github,huggingface,zenodo); por ejemplo,resource_kind="dataset"encuentra conjuntos de datos de referencia. La búsqueda de recursos rechazadate_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 enversions[].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; pasainclude_resources=Falsepara 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_limitlimita la vista previa de figuras (el valor predeterminado del servidor es 3; pasa 0 para suprimir las vistas previas y conservar una señalfigures_truncated).get_resource(resource_id_or_url)Consulta de recursos por id (de la búsqueda de recursos o de la listaresourcesdeget_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 bajopublications(conpaper_idy relaciones comodataset_for), direcciones relacionadas y recursos mencionados.- Herramientas de autor:
get_author_context(…, view="context"),get_author_papers,get_author_directionsyget_author_neighbors. Empieza conget_author_context, que muestra de forma predeterminada la vista compacta orientada a agentes (artículos limitados y una lista legible deimpact_directionsen lugar de la telemetría sin procesar deimpact_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). Pasainclude_neighbors=truepara 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 elyearsolicitado). Usaget_institution_authorspara recorrer por páginas la lista completa de autores de una institución.
API envueltas
| Herramienta MCP | Endpoint 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/lexicalEl perfil predeterminado para todas las búsquedas. Sisearch_type="paper",sort="relevance"yfieldsno están definidos, usa el clasificador léxico+semántico de producción del servidor con una alternativa de respaldo gradual. El valor predeterminado desearch_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 depaperyall(solo los artículos tienen embeddings semánticos), y no junto con los filtrosresource_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 deauthoryinstitution(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_URLEl valor predeterminado eshttps://lacuna.tiptreesystems.comLACUNA_MCP_TIMEOUTEl valor predeterminado es30LACUNA_MCP_MAX_RETRIESEl valor predeterminado es2; se aplica a tiempos de espera, errores de transporte y respuestas HTTP429,502,503y504.LACUNA_MCP_USER_AGENTEl valor predeterminado eslacuna-research-mcp/{package_version}LACUNA_MCP_BEARER_TOKENToken bearer opcional que se envía comoAuthorization: Bearer ...para implementaciones privadas de Lacuna.LACUNA_MCP_CLIENT_TOKENToken opcional que se envía comoX-Lacuna-Client-Tokenpara identificar ante Lacuna un servidor MCP alojado, a efectos de su propio límite de frecuencia de búsqueda.LACUNA_MCP_LOG_LEVELEl valor predeterminado esWARNING(uno deDEBUG,INFO,WARNING,ERROR,CRITICAL). El valor predeterminado mantiene silencioso el funcionamiento normal; auméntalo solo para depurar, ya queINFO/DEBUGpermiten 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.pyCreación de la aplicación MCPServer, registro de herramientas, limpieza del ciclo de vida y punto de entrada CLI delacuna-research-mcp.lacuna_research_mcp/tools.pyFunciones 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.pyAcceso HTTP en tiempo de ejecución a Lacuna: elhttpx.AsyncClientvinculado al bucle de eventos, gestión de reintentos, envoltura de errores, análisis de JSON, normalización de URL en las respuestas yapi_get/api_object/api_payload.lacuna_research_mcp/config.pyConstantes de tiempo de ejecución,RuntimeConfig, construcción del user-agent del paquete y análisis del entorno.lacuna_research_mcp/ids.pyHelpers 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.pyPosprocesamiento de respuestas para URL relativas de Lacuna y enlaces Markdown.lacuna_research_mcp/errors.pyTipo de excepción visible para el usuario para los errores de acceso a la API de Lacuna.
Notas
get_paperyget_directionusanview="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 incluyesummary_markdowncuando está disponible (de lo contrario,abstract), autores y figuras; el contexto de una dirección incluyesummary_markdown, artículos/autores/direcciones relacionadas con un límite y marcadores de truncamiento. Usaview="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
fieldspersonalizado usa de forma predeterminada el clasificador léxico-semántico de producción del servidor. Estableceranking_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/*_urly en los campos llamadossummary_markdown,article_markdown,markdown,contentodescriptionse normalizan a URL absolutas. - Las claves de sedes e instituciones son hashes opacos (por ejemplo,
d7bf22905bd6), nunca nombres legibles para las personas, comoicml. Primero, busca la clave consearch_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.