npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

trove-mcp

v0.1.9

Published

Unified MCP server for open academic research search, retrieval, and synthesis.

Readme

trove-mcp

Give Claude the ability to search, read, and synthesize academic research across 250M+ papers using free/open sources.

What it connects to

  • OpenAlex (primary metadata, discovery, citations)
  • Semantic Scholar (semantic recommendations and similarity)
  • arXiv (preprint metadata and full text)
  • Unpaywall (OA discovery by DOI)
  • PubMed (biomedical indexing)
  • Hugging Face Papers API (discovery context endpoints; strict trending uses citation snapshots only)
  • CORE (full-text fallback)

Install (Claude Desktop, stdio)

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"

Claude Desktop on macOS

  1. Open Claude Desktop.
  2. Go to Settings -> Developer -> Edit Config.
  3. Edit ~/Library/Application Support/Claude/claude_desktop_config.json.
  4. Add this server entry under mcpServers:
{
  "mcpServers": {
    "trove": {
      "command": "npx",
      "args": ["-y", "trove-mcp"],
      "env": {
        "TROVE_CONTACT_EMAIL": "[email protected]",
        "TROVE_DB_PATH": "/Users/you/.trove-mcp/trove.db",
        "SEMANTIC_SCHOLAR_API_KEY": "",
        "UNPAYWALL_EMAIL": "[email protected]",
        "CORE_API_KEY": ""
      }
    }
  }
}
  1. Save the file and fully restart Claude Desktop.
  2. Start a new chat and use Trove tools.

No API keys are required to start. Missing optional keys produce graceful partial/degraded responses.

Provider hardening behavior

  • Every tool returns a structured envelope with status, degraded, and warnings.
  • Every tool envelope also includes meta.version so clients can verify the running package version.
  • Provider outages/rate limits are reported as warnings (not process crashes), and other sources are still used.
  • Semantic Scholar is publicly accessible without a key, but unauthenticated traffic is shared and may return 429; Trove reports this as degraded and falls back to OpenAlex where possible.
  • Semantic Scholar recommendations are effectively API-key-backed for reliable use. find_similar_papers now fails fast with a clear warning when SEMANTIC_SCHOLAR_API_KEY is not configured.
  • Unpaywall is only used when UNPAYWALL_EMAIL (or TROVE_CONTACT_EMAIL) is set.
  • CORE works without key for basic access but may rate-limit heavily; set CORE_API_KEY for higher/stabler throughput.
  • get_trending_papers is strict fail-closed: only mode = snapshot when non-zero citation velocity evidence exists; otherwise mode = unavailable.
  • get_trending_papers self-bootstraps local citation snapshots from OpenAlex, Semantic Scholar, and Hugging Face candidate discovery, then reports snapshot_coverage diagnostics per source.
  • get_trending_papers requires local snapshot history to become useful. Official provider APIs do not expose day-level citation history, so first-run mode = unavailable is expected until at least one older snapshot date exists.
  • find_similar_papers is strict fail-closed: Semantic Scholar only; no lexical fallback output.
  • compare_papers and build_literature_map return explicit insufficiency errors when extraction evidence quality is too low.
  • PapersWithCode runtime enrichment is disabled in strict mode.
  • 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 instead of guessed references. Use get_full_text to inspect inline citations directly when this happens.
  • get_author returns mostCitedPaperIds and recentPaperIds as best-effort enrichment. If those follow-up lists cannot be fetched reliably, Trove returns the author profile as partial and does not treat empty arrays as authoritative cache data.
  • OpenAlex-heavy search can still be domain-ambiguous for niche queries; search_papers and build_literature_map prefer precision gates, but queries with overloaded terms may still need tighter prompts or filters.
  • trace_idea uses heuristic origin candidate ranking; timeline quality is often good, but the earliest canonical paper can still be missed when provider search ranking is imperfect.

HTTP mode (streamable)

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 requests
  • GET /health for health checks
  • Auth header: Authorization: Bearer <token>
  • CORS exposes Mcp-Session-Id/MCP-Session-Id for browser MCP clients

Tools

| 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 | unavailable | | get_paper | Resolve paper by DOI/arXiv/S2/OpenAlex/PubMed/title | | get_full_text | arXiv -> Unpaywall -> CORE full-text fallback with chunked output | | get_citations | Papers that cite a target paper | | get_references | Papers referenced by a target paper | | find_similar_papers | Semantic Scholar recommendations; reliable use requires SEMANTIC_SCHOLAR_API_KEY | | 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 |

Resources

  • trove://resources/version
  • trove://resources/source-capability-matrix
  • trove://resources/schema-reference
  • trove://resources/cache-health

Prompts

  • literature-review-workflow
  • paper-comparison-workflow
  • idea-lineage-workflow

Sync job for citation snapshots

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.

Development

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

Data and compliance

  • No scraping
  • No Sci-Hub or paywalled bypassing
  • All sources are public/open APIs or legal OA links

License

MIT