retrogradelabs avatar

Lune Research

retrogradelabs/lune-mcp-server

Connects Claude to Lune Research's academic paper database through 12 tools covering search, retrieval, and subscriptions. You can run hybrid vector and BM25 searches across security, ML, NLP, CV, and systems venues, pull full paper text as markdown or JSON, walk citation graphs, and subscribe to conference updates. Works over stdio locally with an API key from your environment, or hit their hosted endpoint at mcp.luneresearch.com with a bearer token. Reach for this when you need your agent to literature review, track new papers in specific venues, or pull methodology guidance from their curated reproducibility corpus.

GitHub stars
4
tools
13
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
Nov 5, 2026

Install

From registry metadata
$ npx add-mcp https://mcp.luneresearch.com --name lune --header 'Authorization: Bearer ${API_TOKEN}'

Run in your terminal. add-mcp asks which agents to add it to, then asks for each value it needs. Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http lune https://mcp.luneresearch.com --header 'Authorization: YOUR_AUTHORIZATION'

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 13 tools

Verified live against the running server on Nov 6, 2026.

search_papersSearches full-text, peer-reviewed papers from top-tier venues. Use for questions about academic papers, research topics, literature reviews, surveys, “what's been published on X”, named methods, or any claim that should be backed by a peer-reviewed citation. Returns each paper...10 params

Searches full-text, peer-reviewed papers from top-tier venues. Use for questions about academic papers, research topics, literature reviews, surveys, “what's been published on X”, named methods, or any claim that should be backed by a peer-reviewed citation. Returns each paper...

Parameters* required
conferencestring
Filter by conference short name, e.g. "CCS", "NeurIPS".
detailboolean
true (default): include the full abstract, ids, and contexts[] matched spans for grounding. false: concise hits (title, authors, year, venue, citations, score, and a single grounding snippet) for t...default: true
limitinteger
default: 10
offsetinteger
Pagination offset over the ranked results. Re-call with offset += limit while the response `has_more` is true. offset + limit must stay <= 50.default: 0
query*string
Full natural-language research query; phrase it the way you would ask a human research assistant. On the paper corpus the server drops request wording ("find me papers on"), adds the standard names...
sort_bystring
Result ordering within the ranked shortlist: `relevance` (default), `date` (newest first), or `citations` (most-cited first).one of relevance · date · citationsdefault: relevance
venuesarray
Restrict to these conference short names (e.g. ["NeurIPS", "ICML"]).
yearinteger
year_maxinteger
Only include papers published in this year or earlier.
year_mininteger
Only include papers published in this year or later.
search_papers_manyUse for a LITERATURE SWEEP or survey: a research question broad enough to need several angles, e.g. "what's been done on X", a related-work section, or a state-of-the-field summary. One call returns one merged, ranked list of the papers the angles found, with the passages that...8 params

Use for a LITERATURE SWEEP or survey: a research question broad enough to need several angles, e.g. "what's been done on X", a related-work section, or a state-of-the-field summary. One call returns one merged, ranked list of the papers the angles found, with the passages that...

Parameters* required
conferencestring
Shared across every query: filter to this conference short name, e.g. "CCS", "NeurIPS".
detail*boolean
true (default): include the full abstract, ids, and contexts[] non-abstract matched spans for grounding. false: concise hits (title, authors, year, venue, citations, score, and a single grounding s...default: true
limit*integer
Max papers in the merged, deduped result list (default 10, max 50).default: 10
queries*array
1 to 25 query variants to run in ONE call. Phrase each the way you would ask a human research assistant (full natural-language questions beat keyword bags). Supply genuinely different angles on the...
venuesarray
Shared across every query: restrict to these conference short names (e.g. ["NeurIPS", "ICML"]).
yearinteger
Shared across every query: restrict to a single publication year.
year_maxinteger
Shared across every query: only papers published in this year or earlier.
year_mininteger
Shared across every query: only papers published in this year or later.
get_paper_fulltextUse this when the user asks “what does the methods/results section say”, wants to quote a specific section, or when the abstract isn't enough to verify a claim. Heavy: only call once a paper looks relevant from `search_papers`, `search_related_papers`, or `get_paper_citations`...3 params

Use this when the user asks “what does the methods/results section say”, wants to quote a specific section, or when the abstract isn't enough to verify a claim. Heavy: only call once a paper looks relevant from `search_papers`, `search_related_papers`, or `get_paper_citations`...

Parameters* required
formatstring
`markdown` returns one rendered document, ready to read or quote inline. `json` returns a structured section list, useful when you want to navigate by section name (methods / results / related work).one of markdown · jsondefault: markdown
paper_id*string
A corpus paper UUID, from a search_papers / search_papers_many / search_related_papers / get_paper_citations result.
sectionsarray
Return only these sections (case-insensitive heading match), e.g. ["Methods", "Results"]. Omit to return the whole document.
get_paper_citationsUse this when the user asks “what does this paper build on”, “what built on this”, traces influence chains, asks for follow-up work, or wants the lineage of an idea. `direction=cited_by` returns indexed papers that cite this one; `direction=cites` returns this paper's parsed r...4 params

Use this when the user asks “what does this paper build on”, “what built on this”, traces influence chains, asks for follow-up work, or wants the lineage of an idea. `direction=cited_by` returns indexed papers that cite this one; `direction=cites` returns this paper's parsed r...

Parameters* required
directionstring
`cited_by`: indexed papers that cite this one (forward, follow-up work). `cites`: this paper's parsed references (back, what it built on).one of cited_by · citesdefault: cited_by
limitinteger
Max citation edges to return per page (default 25, max 100).default: 25
offsetinteger
Pagination offset; re-call with offset += limit while the response `has_more` is true. The response also reports `total`.default: 0
paper_id*string
A corpus paper UUID, taken from a `search_papers` or `search_related_papers` result.
list_conferencesUse this when the user asks “what conferences does Lune track”, “is venue X covered”, or wants a category-level browse (e.g. AI/ML, security, databases, software/systems). Pass `category` as a keyword (`ai`, `security`, ...) to narrow; it matches the conference's research area.1 params

Use this when the user asks “what conferences does Lune track”, “is venue X covered”, or wants a category-level browse (e.g. AI/ML, security, databases, software/systems). Pass `category` as a keyword (`ai`, `security`, ...) to narrow; it matches the conference's research area.

Parameters* required
categorystring
Optional research-area filter, matched case-insensitively against the conference's field. Accepts short codes (`ai`, `ml`, `nlp`, `cv`, `security`, `databases`, `software`, `systems`) or any substr...
get_conference_papersUse this when the user asks for papers from a specific conference (optionally a year), e.g. “most-cited NeurIPS 2024 papers”, “show me CCS 2025 accepted papers”, or “what's new in security at IEEE S&P this year”. `sort` is `recency` (newest first, default) or `citations` (most...5 params

Use this when the user asks for papers from a specific conference (optionally a year), e.g. “most-cited NeurIPS 2024 papers”, “show me CCS 2025 accepted papers”, or “what's new in security at IEEE S&P this year”. `sort` is `recency` (newest first, default) or `citations` (most...

Parameters* required
conference*string
Conference short name, e.g. "NeurIPS", "CCS", "ICLR".
limitinteger
Max papers to return per page (default 20, max 100).default: 20
offsetinteger
Pagination offset; use to fetch subsequent pages.default: 0
sortstring
`recency` (newest first, default) or `citations` (most-cited first).one of recency · citationsdefault: recency
yearinteger
Restrict to a single year (e.g. 2024). Omit to span all years.
search_related_papersGiven a paper_id, return the most semantically similar papers by embedding distance, NOT by citation links. Use for “more papers like this one” / “adjacent work on the same topic”. For papers this one cites or that cite it, use `get_paper_citations` instead. Each hit carries m...2 params

Given a paper_id, return the most semantically similar papers by embedding distance, NOT by citation links. Use for “more papers like this one” / “adjacent work on the same topic”. For papers this one cites or that cite it, use `get_paper_citations` instead. Each hit carries m...

Parameters* required
limitinteger
default: 6
paper_id*string
A corpus paper UUID (from a paper search) to find neighbors for.
extract_from_papersPull a structured table out of up to 50 papers in ONE call: you define the columns (`fields`: each a snake_case `name`, a `type`, and an optional `description`) and an `instruction`, and the server reads each paper's full text and returns one typed row per paper. Use this when...4 params

Pull a structured table out of up to 50 papers in ONE call: you define the columns (`fields`: each a snake_case `name`, a `type`, and an optional `description`) and an `instruction`, and the server reads each paper's full text and returns one typed row per paper. Use this when...

Parameters* required
fields*array
1 to 12 fields to extract per paper. Each becomes a typed column on every row, keyed by its `name`.
instruction*string
Natural-language guidance for the extraction (e.g. "Pull the primary evaluation dataset and the headline accuracy"). The model is told to use only what the paper states.
paper_ids*array
1 to 50 corpus paper UUIDs to extract from in ONE call, from a search_papers / search_papers_many / search_related_papers / get_paper_citations result.
sectionsarray
Restrict extraction to these sections (case-insensitive heading match), e.g. ["Results", "Experiments"]. Omit to consider the whole paper.
verify_claimsFact-check 1 to 25 natural-language claims against Lune's peer-reviewed corpus in ONE call. For each claim the server retrieves the most relevant passages and an LLM judges the claim ONLY against those passages (never outside knowledge), returning one verdict per claim: `suppo...7 params

Fact-check 1 to 25 natural-language claims against Lune's peer-reviewed corpus in ONE call. For each claim the server retrieves the most relevant passages and an LLM judges the claim ONLY against those passages (never outside knowledge), returning one verdict per claim: `suppo...

Parameters* required
claims*array
1 to 25 natural-language factual claims to fact-check against the corpus in ONE call. Phrase each as a complete, self-contained assertion (e.g. "LoRA fine-tuning matches full fine-tuning on GLUE wh...
conferencestring
Restrict the evidence search to this conference short name, e.g. "CCS", "NeurIPS". Shared across every claim.
contextstring
Optional shared framing passed to the judge for every claim, e.g. the surrounding paragraph or the question the claims answer. Use it to disambiguate terse claims; it does not change what is retrie...
venuesarray
Restrict the evidence search to these conference short names (e.g. ["NeurIPS", "ICML"]). Shared across every claim.
yearinteger
Restrict the evidence search to a single publication year.
year_maxinteger
Restrict the evidence search to this publication year or earlier. Shared across every claim.
year_mininteger
Restrict the evidence search to this publication year or later. Shared across every claim.
gather_evidenceUse for a multi-part research task when you need to know whether your gathered evidence is SUFFICIENT, what is still MISSING, and what to search next, without the tool writing the answer. Pass the goal in `task` and your first search angles in `queries`; the server runs one co...11 params

Use for a multi-part research task when you need to know whether your gathered evidence is SUFFICIENT, what is still MISSING, and what to search next, without the tool writing the answer. Pass the goal in `task` and your first search angles in `queries`; the server runs one co...

Parameters* required
conferencestring
Filter to this conference short name, e.g. "NeurIPS".
draftstring
Optional current draft. Each sentence is checked for support against the gathered spans (no extra searches). The tool never rewrites your draft.
max_iterations*integer
Sufficiency rounds. Default 1 is a one-shot advisor. Set >1 (with max_total_queries>len(queries)) to authorize bounded server-side follow-up searches.default: 1
max_total_queriesinteger
Total search budget across all iterations (the billed ceiling). Defaults to len(queries). Must exceed len(queries) only when max_iterations>1.
queries*array
Your initial search angles (full natural-language questions). One corpus search runs per angle; they are billed like search_papers_many.
requirementsarray
Optional explicit evidence slots; omit to let the server derive them from `task`.
task*string
The research goal in prose: what you are trying to establish. Drives requirement decomposition and the sufficiency judgment.
venuesarray
Restrict to these conference short names.
yearinteger
year_maxinteger
year_mininteger
search_research_guidanceUse before recommending experimental design, ablation strategy, evaluation metrics, baselines, reproducibility, paper structure, related-work organisation, venue choice, response-to-reviewers, scientific writing, or methodology in general. Searches the Lune guidance corpus, cu...2 params

Use before recommending experimental design, ablation strategy, evaluation metrics, baselines, reproducibility, paper structure, related-work organisation, venue choice, response-to-reviewers, scientific writing, or methodology in general. Searches the Lune guidance corpus, cu...

Parameters* required
limitinteger
default: 5
query*string
get_research_guidance_docUse this AFTER `search_research_guidance` when you need the full text of a guidance document (not just the matched excerpt), for example to quote a passage or follow a checklist end-to-end. Pass the `doc_id` from a search hit.1 params

Use this AFTER `search_research_guidance` when you need the full text of a guidance document (not just the matched excerpt), for example to quote a passage or follow a checklist end-to-end. Pass the `doc_id` from a search hit.

Parameters* required
doc_id*string
Guidance document UUID, from a `search_research_guidance` hit. NOT a corpus paper_id (those come from `search_papers`).
send_feedbackSends the user's feedback about Lune to the Lune team. Use it when the user says something about Lune itself (papers it missed, results that did not fit, an error, something that helped, an idea): offer to pass it on, show the user the message you would send, and call this onl...3 params

Sends the user's feedback about Lune to the Lune team. Use it when the user says something about Lune itself (papers it missed, results that did not fit, an error, something that helped, an idea): offer to pass it on, show the user the message you would send, and call this onl...

Parameters* required
allow_trainingboolean
True only when the user explicitly agreed that Lune may use this feedback to train its models.default: false
category*string
missing_papers: Lune did not find papers the user expected. irrelevant_results: the results did not fit the question. helpful: Lune helped. issue: an error or something broken. idea: a suggestion.one of missing_papers · irrelevant_results · helpful · issue · idea · other
message*string
The feedback as the user approved it: what they asked Lune for and what happened, naming the papers involved. Leave out the user's own name and contact details, credentials, and private documents.

Sponsors

Configuration

LUNE_API_KEY*secret

Lune access key (lune_...). Create one at https://luneresearch.com/dashboard/settings/credentials.

Readme

@retrograde-labs/lune-mcp-server

The official Lune Research MCP server. It lets an AI agent search the full text of papers from top-tier venues, follow citations, and look up curated research-methodology guidance, so its answers can cite each paper by title, authors and venue.

Install

Hosted (recommended). Add this URL to any client that speaks Streamable HTTP:

https://mcp.luneresearch.com

A client that supports MCP authorization signs you in through the browser, so there is no token to paste or rotate. In Claude Code:

claude mcp add --transport http --scope user lune https://mcp.luneresearch.com

Then run /mcp inside Claude Code, choose lune, and sign in through the browser tab that opens.


View the full README on GitHub

Details

Repository
github.com/retrogradelabs/lune-mcp-server
Website
luneresearch.com
Categories
AI & LLM Tools, Search & Web Crawling
Package
@retrograde-labs/lune-mcp-server
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Prompts
6
Tools verified
Nov 6, 2026

Related AI & LLM Tools MCP servers

View all
1garagon avatarAguara MCPgaragon/aguara-mcpSecurity scanner for AI agent skills and MCP servers4stars
2go-ports avatarEchoVault Memorygo-ports/echovaultLocal-first memory for coding agents; stores decisions, bugs, and context across sessions.4stars
3iamvirul avatarWso2 Docs Mcp Serveriamvirul/wso2-docs-mcp-serverSemantic search over WSO2 docs (APIM, IS, MI, Choreo, Ballerina) via RAG and pgvector.4stars
4indhar01 avatarMemographindhar01/memographGraph-based memory system for LLMs with knowledge graphs and semantic search.4stars
5coinrithm avatarCoinRithm Agent Tradingcoinrithm/coinrithm-agent-tradingKeyless prediction-market data across 12 venues plus paper-trading of crypto spot, futures, and PM.4stars
6levelsofself avatarNervous Systemlevelsofself/mcp-nervous-systemGovernance for LLM agents: 7 enforced rules + read-only reference tools. Safe in any MCP client.4stars