Fail-closed academic research server: search, full text, citations across open scholarly APIs.
Runs on your machine from its package; the steps are below.
At most: only reads or looks up information.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y trove-mcp
MCP client config
{
"mcpServers": {
"trove": {
"command": "npx",
"args": [
"-y",
"trove-mcp"
]
}
}
}Trove is an MCP server for academic research.
The basic idea is simple: let Claude search papers, fetch metadata, read open full text when it can, and build structured outputs on top of that.
I have tried to keep it conservative. If a provider cannot support an answer well enough, Trove returns partial, error, or unavailable instead of pretending it knows more than it does.
No local install is required with npx.
Quick smoke test:
npx -y trove-mcp@latest sync --queries="graph neural network"
Optional global install:
npm i -g trove-mcp
trove-mcp sync --queries="graph neural network"
Settings -> Developer -> Edit Config.~/Library/Application Support/Claude/claude_desktop_config.json.mcpServers:{
"mcpServers": {
"trove": {
"command": "npx",
"args": ["-y", "trove-mcp"],
"env": {
"TROVE_CONTACT_EMAIL": "you@example.com",
"TROVE_DB_PATH": "/Users/you/.trove-mcp/trove.db",
"SEMANTIC_SCHOLAR_API_KEY": "",
"UNPAYWALL_EMAIL": "you@example.com",
"CORE_API_KEY": ""
}
}
}
}
No API keys are required to start. Missing optional keys produce graceful partial/degraded responses.
If you want Claude to use Trove, just say so in the prompt.
Examples:
If you do not want Claude to touch the setup-sensitive tools, hide them with TROVE_DISABLED_TOOLS.
get_trending_papers will usually return mode = unavailable on first run. Trove has to accumulate at least two local citation snapshot dates before it can compute citation velocity honestly.find_similar_papers works without a Semantic Scholar key, but keyless calls share a busy pool and often get 429. Semantic Scholar also has no recommendations for many papers outside computer science and recent work. In both cases Trove returns an error and says why. It never falls back to keyword overlap.status, degraded, warnings, provenance, meta.version, and tool-specific data.get_trending_papers
mode = snapshot when local citation history contains at least two snapshot dates and the computed velocity is non-zero.mode = unavailable is expected. Run trove sync once to seed, then rerun after a later day to accumulate history.find_similar_papers
SEMANTIC_SCHOLAR_API_KEY.429.UNPAYWALL_EMAIL or TROVE_CONTACT_EMAIL is set.CORE_API_KEY improves throughput. Also the CORE API is free, you just need to signup on their site and verify your mail address.get_references is strict fail-closed. Some large institutional arXiv preprints are retrievable as papers but still lack usable reference coverage in both Semantic Scholar and OpenAlex. In those cases Trove returns an explicit warning and suggests get_full_text for inline citation inspection.get_author returns mostCitedPaperIds and recentPaperIds as best-effort enrichment. If those follow-up lists cannot be fetched reliably, Trove returns the profile as partial and does not cache empty arrays as authoritative.search_papers and build_literature_map apply precision gates, but overloaded terms may still need tighter prompts or filters.trace_idea uses heuristic origin ranking. The timeline is often useful, but the earliest canonical paper can still be missed when provider ranking is imperfect.If you just want the useful core workflow, this is enough:
TROVE_CONTACT_EMAILUNPAYWALL_EMAILTROVE_DB_PATHIf you want similar-paper recommendations to work reliably, also set:
SEMANTIC_SCHOLAR_API_KEYIf you want trending to become useful, run:
npx -y trove-mcp@latest sync
and do that on a schedule. Trending depends on local snapshot history, so it will not be useful on day one.
If you want a more conservative setup, you can hide the tools that need extra setup:
{
"mcpServers": {
"trove": {
"command": "npx",
"args": ["-y", "trove-mcp"],
"env": {
"TROVE_CONTACT_EMAIL": "you@example.com",
"TROVE_DB_PATH": "/Users/you/.trove-mcp/trove.db",
"UNPAYWALL_EMAIL": "you@example.com",
"TROVE_DISABLED_TOOLS": "get_trending_papers,find_similar_papers"
}
}
}
}
That gives you the core paper-search / paper-read / compare / trace workflow without exposing the two tools that are most sensitive to setup.
TROVE_HTTP_BEARER_TOKEN=change-me npx trove-mcp --transport=http --port=3000
Browser client example:
TROVE_HTTP_BEARER_TOKEN=change-me TROVE_HTTP_CORS_ORIGIN=http://localhost:3000 npx trove-mcp --transport=http --port=3000
POST /mcp for authenticated MCP requestsGET /health for health checksAuthorization: Bearer <token>Mcp-Session-Id/MCP-Session-Id for browser MCP clients| Tool | What it does |
|---|---|
search_papers | Multi-source search + dedupe + deterministic ranking (OpenAlex/S2/arXiv/PubMed/CORE) |
get_trending_papers | Topic papers ranked by citation velocity with `mode = snapshot |
get_paper | Resolve paper by DOI/arXiv/S2/OpenAlex/PubMed/title |
get_full_text | arXiv -> OpenAlex open-access PDF location -> Unpaywall -> CORE full-text fallback with chunked output; a journal landing page is followed to the PDF named in its citation_pdf_url tag |
get_citations | Papers that cite a target paper |
get_references | Papers referenced by a target paper |
find_similar_papers | Semantic Scholar recommendations; works without a key, SEMANTIC_SCHOLAR_API_KEY makes it reliable |
get_author | Author profile and impact metrics; paper-list enrichment is best-effort |
get_institution_output | Institution profile + publication output |
get_coauthor_network | Collaboration graph around an author |
build_literature_map | Structured evidence map (claims/methods/limitations/consensus) |
compare_papers | Structured 2-5 paper comparison |
trace_idea | Concept lineage across time and influence |
trove://resources/versiontrove://resources/source-capability-matrixtrove://resources/schema-referencetrove://resources/cache-healthliterature-review-workflowpaper-comparison-workflowidea-lineage-workflowThese are optional workflow helpers.
npx trove-mcp sync
npx trove-mcp sync --queries="agentic ai,graph neural network,causal inference"
Run this on a schedule (e.g. cron) to improve get_trending_papers quality.
Without older local snapshots, first-run trending results will correctly return mode = unavailable.
If you want actual short-window trending, run this at least twice on different days.
The tests are mostly there to protect the parts that are easy to quietly break:
npm run verify:release is in the publish path. Live tests are separate because they depend on upstream providers behaving that day.
npm install
npm run typecheck
npm test
npm run test:quality
npm run verify:release
npm run build
npm run inspect
Live-contract tests:
LIVE_CONTRACT=1 npm run test:live
Temporarily hide tools from MCP registration (for strict release gating):
TROVE_DISABLED_TOOLS=get_trending_papers,find_similar_papers npx -y trove-mcp@latest
Bug reports, questions and pull requests are welcome. See CONTRIBUTING.md.
If you use Trove in research, please cite it using CITATION.cff.
MIT