scholar-feed-mcp

mcp
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Warn
  • network request — Outbound network request in .github/ISSUE_TEMPLATE/bug_report.yml
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

MCP server for searching 560k+ CS/AI research papers — works with Claude Code, Cursor, and any MCP client. No signup required.

README.md

Scholar Feed

Scholar Feed MCP Server

CI
npm version
Node
License: MIT

Search 600,000+ CS/AI/ML research papers with LLM-generated novelty analysis, without leaving Claude Code, Cursor, or any MCP client. Built for researchers running a literature review where they already work: search, trace citations, pull full text, and export BibTeX in the same session.

Scholar Feed indexes arXiv papers daily and ranks them using a multi-signal scoring system (recency, citation velocity, institutional reputation, code availability). Each paper has an LLM-generated summary and novelty score.

Quick Start

npx scholar-feed-mcp init

This interactive wizard will:

  1. Optionally ask for an API key (or skip for anonymous access)
  2. Detect your MCP client (Claude Code, Cursor, or Claude Desktop)
  3. Write the config and verify the connection

No API key required. Anonymous access gives you 100 calls/day, enough for a typical research session. For higher limits (1,000/day per account), get a free key at scholarfeed.org/settings.

Try asking: "Search for recent papers on test-time compute scaling"

What You Can Do

Technology scouting: "What novel research on retrieval-augmented generation was published this month?"

Literature review: "Find papers similar to 2401.04088 and export their BibTeX"

Trend monitoring: "What's trending in cs.CV this week? Summarize the top 3."

Author discovery: "Who are the top researchers working on efficient LLM inference?"

Field orientation: "Give me an orientation report on sparse mixture-of-experts architectures."

Installation

The fastest path is npx scholar-feed-mcp init, which auto-detects your client and writes the config. To set it up by hand, every client launches the same stdio server (npx -y scholar-feed-mcp); only the config-file location and the wrapper key differ.

Claude Code takes a one-line command:

# Anonymous (100 calls/day)
claude mcp add scholar-feed -- npx -y scholar-feed-mcp

# With an API key (1,000 calls/day per account)
claude mcp add scholar-feed -e SF_API_KEY=sf_your_key_here -- npx -y scholar-feed-mcp

Every other client takes this standard JSON block:

{
  "mcpServers": {
    "scholar-feed": {
      "command": "npx",
      "args": ["-y", "scholar-feed-mcp"]
    }
  }
}

To raise limits to 1,000 calls/day, add "env": { "SF_API_KEY": "sf_your_key_here" } to the server entry. Get a free key at scholarfeed.org/settings.

Drop that block into the right config file:

Client Config file Notes
Cursor .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) Restart Cursor.
Claude Desktop macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json Settings → Developer → Edit Config, then restart.
Windsurf ~/.codeium/windsurf/mcp_config.json Cascade → MCP icon → Configure, then refresh.
Cline / Roo Code cline_mcp_settings.json MCP Servers sidebar icon → Configure. Cline and Roo Code share this format.
Gemini CLI ~/.gemini/settings.json (or project .gemini/settings.json)
LM Studio ~/.lmstudio/mcp.json Program tab → Install → Edit mcp.json. Follows Cursor's notation.
JetBrains (PyCharm / IntelliJ) AI Assistant → MCP → Add → As JSON Requires AI Assistant 2025.1+.

A few clients need a different wrapper key or file format:

VS Code (GitHub Copilot), Zed, Continue, and project-scoped configs

VS Code: GitHub Copilot (.vscode/mcp.json) uses a servers key and an explicit type, and needs Copilot agent mode. You can also run MCP: Add Server from the Command Palette.

{
  "servers": {
    "scholar-feed": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "scholar-feed-mcp"]
    }
  }
}

Zed (settings.json) uses a context_servers key, and the "source": "custom" line is required (without it, Zed silently skips the entry).

{
  "context_servers": {
    "scholar-feed": {
      "source": "custom",
      "command": "npx",
      "args": ["-y", "scholar-feed-mcp"]
    }
  }
}

Continue uses YAML, with mcpServers as a list, in ~/.continue/config.yaml (global) or .continue/config.yaml (workspace).

mcpServers:
  - name: scholar-feed
    type: stdio
    command: npx
    args:
      - "-y"
      - scholar-feed-mcp

Project-scoped (.mcp.json), to share the server across a repo:

{
  "mcpServers": {
    "scholar-feed": {
      "command": "npx",
      "args": ["-y", "scholar-feed-mcp"],
      "env": { "SF_API_KEY": "${SF_API_KEY}" }
    }
  }
}

Windows: for any JSON config above, use "command": "cmd" and "args": ["/c", "npx", "-y", "scholar-feed-mcp"].

Scholar Feed is a standard stdio MCP server, so any other MCP-compatible client works with the standard block too.

Available Tools (25)

Core Search & Discovery

Tool Description Key Parameters
search_papers Semantic + keyword search with filters. Also does similar-paper discovery, citation-scoped search, and trending. q, category, novelty_min, days, sort, anchor_paper_id, scope_to_citations_of, mode, method_category, task, dataset, contribution_type, task_category, cursor, limit
get_paper Get full paper details by arXiv ID. Also handles batch lookup and BibTeX export. arxiv_ids, format, fields, verbose
get_citations Citation graph (outgoing refs or incoming citations) arxiv_id, direction, limit, fields
fetch_fulltext Extract results/experiments from LaTeX source arxiv_id

Authors

Tool Description Key Parameters
find_author Find researchers by topic/name query, or retrieve a profile by ID. q, id, field, limit
co_author_graph Co-authorship neighborhood for an author author_ids, window_years

Embeddings

Tool Description Key Parameters
embed_text Get a 768-dim Gemini embedding for text (for HyDE and custom similarity). Pro-only, so anonymous/free callers get a 403 pro_required. text, task_type

Research

Tool Description Key Parameters
get_field_orientation Cheap retrieval orientation for a research area: top papers, subfields, open problems. No Pro quota. topic, limit
get_foundational_lineage Foundational work for a paper's niche via the citation graph (consensus-then-lift): niche_roots → field_level → discipline, with cited_by_in_niche evidence. Surfaces canonical anchors semantic search misses. No Pro quota. anchor_paper_id, scope, generality_ceiling, limit

Library, Collections, Watches & Gap Analysis (require SF_API_KEY)

These MUTATE or read the authenticated user's account. The core read/search tools above work anonymously; these need a key.

Tool Description Key Parameters
save_paper Bookmark a paper to your library (idempotent; feeds personalization). arxiv_id
unsave_paper Remove a paper from your library (idempotent). arxiv_id
like_paper "More like this" calibration signal for the For You feed (insert-only). arxiv_id
list_library List your saved papers, newest first. limit, page
list_collections List collections with paper counts. (none)
create_collection Create a named collection (get-or-create; no error on duplicate). name
add_to_collection Add a paper to a collection by name or id (also auto-saves). arxiv_id, collection_name, collection_id
remove_from_collection Remove a paper from a collection (stays saved). arxiv_id, collection_name, collection_id
create_watch Standing daily-evaluated saved search; get-or-create by name. Define it with a structured criteria filter (recommended) or a single seed selector. name, novelty_min, criteria, recency_days, q, collection_name, collection_id, anchor_paper_id, scope_to_citations_of, author_id, category
list_watches List watches with summary, last_evaluated_at, and pending_hits. (none)
check_watches Pull new matches since the last digest (read-only, idempotent). watch_name, watch_id, limit
update_watch Edit a watch in place: rename, change novelty_min, or retarget its structured criteria (clears pending hits). Address by name or id. name, watch_id, new_name, novelty_min, criteria, recency_days
preview_watch Dry-run a structured criteria filter over recent papers without creating a watch; returns match_count and a sample to tune before saving. Read-only. criteria, recency_days
delete_watch Delete a watch by name or id (idempotent). name, watch_id
find_gaps "What am I missing?" for a collection or topic: foundational + frontier work you haven't saved (read-only, Pro). collection_name, collection_id, topic, scope, limit
ask_library "Answer from my saved set": a cited synthesis over your library or one collection, grounded only in papers you've saved (read-only). The inverse of find_gaps. Free 1/month, then Pro 200/day. question, collection_name, collection_id, limit

Novelty Score

Every paper has an llm_novelty_score from 0.0 to 1.0:

Range Meaning Example
0.7+ Paradigm shift or broad SOTA New architecture that changes the field
0.5-0.7 Novel method with strong results New training technique with clear gains
0.3-0.5 Incremental improvement Applying known method to new domain
<0.3 Survey, dataset, or minor extension Literature review, benchmark release

Use novelty_min: 0.5 in search_papers to filter for genuinely novel work.

Rate Limits

Endpoint Limit
search_papers 30/min
get_paper 30/min
get_citations 30/min
fetch_fulltext 10/min
find_author 20/min
co_author_graph 20/min
embed_text 30/min
get_field_orientation 20/min
get_foundational_lineage 20/min
find_gaps 20/min
ask_library 10/min

Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.

Daily volume quota (separate from the per-minute limits above, counted per account across all your keys): 100 calls/day anonymous, 1,000/day with a free key, 10,000/day on Pro. The AI synthesis tools have their own limits: ask_library is 1/month free, then 200/day on Pro; find_gaps and embed_text are Pro-only (a 403 pro_required otherwise).

Example Response

search_papers with q: "attention mechanism" returns:

{
  "papers": [
    {
      "arxiv_id": "2401.04088",
      "title": "Attention Is All You Need (But Not All You Get)",
      "authors": ["A. Researcher", "B. Scientist"],
      "year": 2024,
      "categories": ["cs.LG", "cs.AI"],
      "primary_category": "cs.LG",
      "arxiv_url": "https://arxiv.org/abs/2401.04088",
      "has_code": true,
      "github_url": "https://github.com/example/repo",
      "citation_count": 42,
      "rank_score": 0.73,
      "llm_summary": "Proposes a sparse attention variant that reduces compute by 60% while matching dense attention accuracy on 5 benchmarks.",
      "llm_novelty_score": 0.55
    }
  ],
  "total": 1847,
  "page": 1,
  "limit": 20,
  "next_cursor": "eyJzIjogMC43MywgImlkIjogIjI0MDEuMDQwODgifQ=="
}

Pass next_cursor back to get the next page (keyset pagination, which is more stable than page numbers for large result sets).

Environment Variables

Variable Required Default Description
SF_API_KEY No (none) Your Scholar Feed API key (starts with sf_). Without it, runs in anonymous mode (100 calls/day).
SF_API_BASE_URL No Production URL Override API base URL

Development

npm install
npm run build      # Build to build/
npm run dev        # Watch mode
npm run typecheck  # Type check without emitting
npm test           # Run tests

Contributing

See CONTRIBUTING.md for guidelines.

Troubleshooting

"Authentication failed: your SF_API_KEY is invalid"
The key may have been revoked. Generate a new one at scholarfeed.org/settings. Or remove the key to use anonymous mode.

"Rate limit exceeded" or "Anonymous daily limit exceeded"
Anonymous mode allows 100 calls/day. Get a free API key at scholarfeed.org/settings for 1,000 calls/day per account.

Tool calls time out or fail silently
Ensure Node.js 18+ is installed (node --version). Older versions lack the native fetch API.

Stale npx cache
If you're stuck on an old version after an update: npx --yes scholar-feed-mcp@latest

Windows: "command not found"
Use "command": "cmd" with "args": ["/c", "npx", "-y", "scholar-feed-mcp"] in your MCP config.

Migrating from v1.x

Removed v1.x tools and their v3 replacements

v3.0.0 was a hard cutover with no deprecation window: the v1.x surface was consolidated into a smaller set of focused tools. If an agent still calls a removed v1.x tool, update it per this table. Full version history is in CHANGELOG.md.

Removed tool (v1.x) v3 replacement
find_similar(arxiv_id=id) search_papers(anchor_paper_id=id)
find_citations_about(arxiv_id=X, query=Q) search_papers(scope_to_citations_of=X, q=Q)
whats_trending(category=C) search_papers(sort='trending', category=C)
batch_lookup(arxiv_ids=[...]) get_paper(arxiv_ids=[...])
export_bibtex(arxiv_ids=[...]) get_paper(arxiv_ids=[...], format='bibtex')
discover_authors(q=Q) find_author(q=Q)
get_author(author_id=id) find_author(id=id)
compare_methods(models=[...]) Use the /compare-methods skill (see scholarfeed.org/skills)
field_guide(topic=T) get_field_orientation(topic=T) for cheap retrieval; full orientation via the /field-guide skill
check_connection Removed. Errors signal connectivity; remove any health-check calls.
fetch_repo(arxiv_id=id) Removed (0 observed calls in production). Backend route preserved for skill use.

License

MIT

Reviews (0)

No results found