Lacuna Research MCP
Provides access to machine learning research papers and related metadata from arXiv, enabling search and retrieval of papers within the Lacuna research map.
Provides access to scholarly publication records from dblp, enabling search and retrieval of papers, authors, and venues within the Lacuna research map.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Lacuna Research MCPSearch for recent papers on large language model alignment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Lacuna Research MCP
๐ฌ Ground your coding agent in novel ideas, papers, and the ML landscape
Lacuna Research MCP gives AI researchers' coding agents:
Novel research proposals. Explore novel research ideas generated with Alien Science.
Research directions. Navigate concept clusters with linked papers, authors, and proposals.
Agent-ready literature. Search recent papers in markdown with source links.
Researcher intelligence. Trace authors, publications, directions, impact, and related researchers.
Landscape mapping. Compare venues, institutions, leading researchers, and publication activity.
Lacuna, built by Tiptree Systems, is a research map of machine learning: a heterogeneous knowledge graph linking papers, research directions, authors, venues, institutions, and generated research proposals, with a source trail from every derived object back to the exact paper and page that produced it. Its pipeline reconciles scholarly records from OpenAlex, OpenReview, DBLP, and arXiv; extracts concept elements from paper text and clusters them into research directions (Lacuna paper); and samples novel research proposals from those directions with Alien Science. The map spans more than 730,000 papers, 190,000+ author profiles, 38,000+ research directions, and 3,000+ research proposals built from over 15 million concept elements โ and it grows continuously as new arXiv and other AI papers are ingested.
Install ยท First use ยท Tools ยท API reference ยท Configuration
Install
The easiest way to install Lacuna Research MCP is to ask your coding agent, such as Codex or Claude Code:
Install and configure the
lacuna-research-mcppackage from PyPI for this client.
For manual setup, the instructions below use uvx to run the latest tagged release from PyPI. Install uv first; Lacuna Research MCP requires Python 3.11 or newer.
Codex
Add the server with the Codex CLI:
codex mcp add lacuna-research -- uvx lacuna-research-mcpAlternatively, add the following to ~/.codex/config.toml (or to .codex/config.toml in a trusted project for project-only setup):
[mcp_servers.lacuna-research]
command = "uvx"
args = ["lacuna-research-mcp"]Run codex mcp list to verify the server is configured. The Codex app, CLI, and IDE extension share this configuration on the same machine.
Claude Code
Add the server for all of your projects with the Claude Code CLI:
claude mcp add --scope user lacuna-research -- uvx lacuna-research-mcpOmit --scope user to add it only to the current project. Alternatively, add the following under the top-level mcpServers object in ~/.claude.json:
{
"mcpServers": {
"lacuna-research": {
"type": "stdio",
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}Run claude mcp get lacuna-research to verify the server is configured.
Claude Desktop
Open Settings โ Developer โ Edit Config, then add the server under mcpServers in claude_desktop_config.json:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}Restart Claude Desktop after saving the file.
Other MCP clients
For any client that supports local stdio MCP servers, use this standard configuration:
{
"mcpServers": {
"lacuna-research": {
"command": "uvx",
"args": ["lacuna-research-mcp"]
}
}
}Standalone command
Install the MCP server as a persistent command:
uv tool install lacuna-research-mcp
lacuna-research-mcpRun it without installing a persistent command:
uvx lacuna-research-mcpLatest development version
PyPI contains tagged releases. To try the latest code from the main branch instead:
uvx --from git+https://github.com/tiptreesystems/lacuna-research-mcp.git lacuna-research-mcpLocal development
With uv:
git clone https://github.com/tiptreesystems/lacuna-research-mcp.git
cd lacuna-research-mcp
uv sync --extra dev
uv run lacuna-research-mcpWith 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 .Related MCP server: scholar-memory
First use
After connecting the server, call:
search_lacuna(query="LLM jailbreak defense", search_type="hypothesis", limit=10)search_lacuna(query="methods for detecting prompt injection attacks", search_type="papers", limit=10)(production lexical+semantic paper ranking by default)get_hypothesis(hypothesis_id_or_url="bd35de182c2325ae")get_paper(artifact_id_or_url="art_79c57fbfec094f26b79c422cf08fed34")(defaults toview="context")get_direction(cluster_id_or_url=25108)(defaults toview="context")
Scope
The corpus covers machine learning and AI research: papers, research directions, authors' research output, venues, institutions, and generated research hypotheses. It does not contain biographies, news, or non-research web content. Agents should answer questions outside that scope from other sources.
What it exposes
search_lacunaUses Lacuna's public/api/v1/searchendpoint for directions, papers, authors, venues, institutions, and hypotheses. Explicit paper searches (search_type="paper") use the server's production lexical+semantic ranker when the other ranking arguments remain at their defaults. Passsearch_type="hypothesis"(or"hypotheses"/"proposal"/"proposals") for hypothesis search.get_hypothesis(hypothesis_id_or_url, view="context")Hypothesis/proposal.view="context"(default) is a compact single-fetch proposal context (summary, abstract, linked directions);view="full"returns the server's version record with version history and signal counts. Proposal bodies are inversions[].markdown.get_direction(cluster_id_or_url, view="context")Research direction/cluster.view="context"(default) requests the compact agent-oriented summary;view="full"returns the raw cluster record.get_direction_papers(cluster_id_or_url, page, limit, view="compact")Paginated papers attached to a direction.view="compact"(default) returns citation-ready rows (id, url, title, year, venue, a few authors, abstract snippet);view="full"returns the raw upstream paper records.get_paper(artifact_id_or_url, view="context", figure_limit=None)Paper lookup.view="context"(default) requests the compact agent-oriented context; other views are"full","preview","blog","figures","concepts", or"neighbors". In context view,figure_limitcaps the figure preview (server default 3; pass 0 to suppress previews while keeping afigures_truncatedsignal).Author tools:
get_author_context(โฆ, view="context"),get_author_papers,get_author_directions, andget_author_neighbors. Start withget_author_context, which defaults to the compact agent-oriented view (capped papers plus a readableimpact_directionslist instead of rawimpact_clusterstelemetry). Use the dedicated papers, directions, and neighbors tools to page through those collections without repeating the author context.view="full"returns the server-bounded full-shape context (collections remain capped at 100). Passinclude_neighbors=trueto explicitly include similar authors; this may add significant server latency.Venue and institution tools:
get_venue_context(โฆ, view="context"),get_institution_context(โฆ, view="context"),get_institution_authors. Context tools default to compact (capped lists, duplicated blocks dropped; venue keeps a recent-activity slice that always includes the requestedyear). Useget_institution_authorsto page through an institution's complete author list.
Wrapped APIs
MCP tool | Lacuna API endpoint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
For id-or-URL arguments, pass either the raw id returned by search_lacuna or the corresponding Lacuna page URL. The MCP normalizes Lacuna-relative url and *_url fields to absolute URLs, and it also absolutifies Lacuna links inside fields named summary_markdown, article_markdown, markdown, content, or description.
get_author_context is bounded server-side in both views. The default compact view returns a curated briefing; view="full" returns the larger complete shape with embedded collections capped at 100. Use get_author_papers and get_author_directions rather than trying to page embedded context collections.
Search requests are capped at 50 results per call, and direction-paper page
requests are capped at 100 results per call.
In search_lacuna, date_from and date_to are inclusive publication-date
bounds. Accepted formats are YYYY, YYYY-MM, and YYYY-MM-DD; for example,
date_from="2020", date_to="2022-03" includes papers from January 1, 2020
through March 31, 2022.
search_lacuna exposes these ranking profiles:
default/lexicalThe default profile for all searches. Withsearch_type="paper",sort="relevance", andfieldsunset, it uses the server's production lexical+semantic ranker with graceful fallback. The MCP's defaultsearch_type="all"uses the server's default lexical ranking instead.semanticUse for embedding-based paper retrieval. The semantic query omits the normal lexical ranking leg, but the server can still overlay exact-title lexical matches. Only supported forpaperandallsearches (only papers have semantic embeddings).bm25_title_abstract/bm25Use for lexical matching constrained to title and abstract. Rejected forauthorandinstitutionsearches (those records have no title or abstract fields).
All searches use the server default unless ranking_profile is provided. The MCP rejects unsupported profile/type combinations because the server would otherwise fall back to substring search and silently ignore the requested ranking profile.
sort accepts relevance (default), year_desc, and year_asc. Year sorts cannot be combined with ranking_profile="semantic" โ the server would silently ignore the sort โ so the MCP rejects that combination; for recent-and-relevant queries, keep semantic ranking and constrain recency with date_from/date_to instead.
Environment variables
LACUNA_SITE_URLDefaults tohttps://lacuna.tiptreesystems.comLACUNA_MCP_TIMEOUTDefaults to30LACUNA_MCP_MAX_RETRIESDefaults to2; applies to timeouts, transport errors, and HTTP429,502,503, and504responses.LACUNA_MCP_USER_AGENTDefaults tolacuna-research-mcp/{package_version}LACUNA_MCP_BEARER_TOKENOptional bearer token sent asAuthorization: Bearer ...for private Lacuna deployments.LACUNA_MCP_LOG_LEVELDefaults toWARNING(one ofDEBUG,INFO,WARNING,ERROR,CRITICAL). The default keeps normal operation quiet; lower it only for debugging, sinceINFO/DEBUGlet the HTTP client log full request URLs โ including the search query string โ to stderr, which some MCP hosts retain.
Environment variables are read once when the MCP server is created, or on the first direct tool/API call if the module is imported without calling create_mcp().
Implementation layout
The server is a thin MCP adapter over Lacuna's HTTP API. The implementation is split by responsibility:
lacuna_research_mcp/server.pyMCPServer app creation, tool registration, lifespan cleanup, and thelacuna-research-mcpCLI entrypoint.lacuna_research_mcp/tools.pyMCP tool functions. Each tool normalizes its inputs, calls the matching Lacuna API endpoint through the shared client helpers, and returns JSON-compatible data.lacuna_research_mcp/client.pyRuntime HTTP access to Lacuna: the event-loop-boundhttpx.AsyncClient, retry handling, error wrapping, JSON parsing, URL normalization on responses, andapi_get/api_object/api_payload.lacuna_research_mcp/config.pyRuntime constants,RuntimeConfig, package user-agent construction, and environment parsing.lacuna_research_mcp/ids.pyHelpers that accept either raw ids or Lacuna page URLs and extract safe API path segments.lacuna_research_mcp/normalize.pyResponse post-processing for relative Lacuna URLs and markdown links.lacuna_research_mcp/errors.pyUser-facing exception type for Lacuna API access failures.
Notes
get_paperandget_directiondefault toview="context". These context views request Lacuna's compact agent-oriented payloads by default to keep MCP responses small. Paper context includessummary_markdownwhen available (otherwiseabstract), authors, and figures; direction context includessummary_markdown, capped papers/authors/related directions, and truncation markers. Useview="full"when you need the raw metadata, and the other paper views (preview,blog,figures,concepts,neighbors) when you want one isolated sub-resource.An explicit relevance-sorted paper search with no custom
fieldsdefaults to the server's production lexical+semantic ranker. Setranking_profile="semantic"for embedding-based retrieval (with a possible exact-title overlay) or"bm25_title_abstract"for title-and-abstract lexical matching.Search type aliases are normalized client-side, so
papers,directions, andhypothesesare accepted and mapped to the server's singular values.Most detail tools accept either the id returned by search or the corresponding Lacuna URL.
Relative Lacuna URLs in
url/*_urlresponse fields and fields namedsummary_markdown,article_markdown,markdown,content, ordescriptionare normalized to absolute URLs.Venue and institution keys are opaque hashes (for example
d7bf22905bd6), never human-readable names likeicml. Find the key withsearch_lacuna(search_type="venue")first, or pass a/venue/...page URL.
Citation
If you find our work helpful, feel free to cite the papers behind Lacuna's research-proposal generation and research map.
Research-proposal generation โ Alien Science
@inproceedings{artiles2026alien,
title = {Alien Science: Sampling Coherent but Cognitively Unavailable Research Directions from Idea Atoms},
author = {Artiles, Alejandro H. and Weiss, Martin and Brinkmann, Levin and Goyal, Anirudh and Rahaman, Nasim},
booktitle = {ICLR 2026 Workshop on Post-AGI Science and Society},
year = {2026},
url = {https://openreview.net/forum?id=XZWkDET1ia}
}Research map โ 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}
}License
MIT. See LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityCmaintenanceEnables AI agents to search code by meaning, explore codebase structure, store and query knowledge with temporal facts, and read source code through a set of MCP tools.Last updated4996MIT
- Alicense-qualityCmaintenanceEnables scientific literature research through multi-agent search, analysis, and semantic memory, exposing 9 MCP tools for querying, storing, and retrieving research findings.Last updated1MIT
- AlicenseAqualityBmaintenanceEnables AI agents to search and retrieve academic papers, author profiles, and citation data from the Scopus database via MCP tools.Last updated1717MIT
- Alicense-qualityBmaintenanceEnables searching arXiv and top AI conferences, finding related papers, generating research insights, and managing a personal library via MCP tools.Last updated314MIT
Related MCP Connectors
Shared, peer-validated knowledge archive for AI agents โ search, contribute, and validate via MCP
65+ AI tools as MCP: research, write, code, scrape, translate, RAG, agent memory, workflows
Real-time Amazon, WIPO & PACER data for AI agents โ 19 tools via the MCP protocol.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tiptreesystems/lacuna-research-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server