ygao2005 avatar

Scholar Feed

ygao2005/scholar-feed-mcp

Puts arXiv's computer science archive directly into your MCP client with semantic search, citation graphs, and LLM-scored novelty rankings across 600,000 papers. The core toolkit gives you search_papers with filters for recency and contribution type, get_paper for batch lookups and BibTeX export, get_citations for traversing the reference graph, and fetch_fulltext to pull experimental results from LaTeX source. Author discovery and co-authorship graphs are built in. The field_orientation tool generates research area summaries without burning Pro credits. Ships with 100 calls per day anonymous or 1,000 with a free API key. Install is npx scholar-feed-mcp init for auto-detection or a standard stdio JSON block for any client. Built for literature reviews where you already work.

GitHub stars
13
tools
27
auth
Secret needed
transport
STDIO, HTTP
env var
1
last updated
Sep 8, 2026

Install

From registry metadata
$ npx add-mcp 'https://mcp.scholarfeed.org/mcp?src=mcp-registry' --name scholar-feed-mcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). 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 scholar-feed-mcp 'https://mcp.scholarfeed.org/mcp?src=mcp-registry'

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

Tools

Verified live · 27 tools

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

search_papersSearch Scholar Feed's 600k+ CS/AI/ML paper corpus. Semantic (embedding) search by default, so it finds conceptually related work even when the wording differs. EVERY PARAMETER DOCUMENTS ITS OWN BEHAVIOUR AND COVERAGE LIMITS — read the ones you intend to use; this description c...27 params

Search Scholar Feed's 600k+ CS/AI/ML paper corpus. Semantic (embedding) search by default, so it finds conceptually related work even when the wording differs. EVERY PARAMETER DOCUMENTS ITS OWN BEHAVIOUR AND COVERAGE LIMITS — read the ones you intend to use; this description c...

Parameters* required
anchor_paper_idstring
Return papers similar to this arXiv paper ID. When set, q is ignored and results carry similarity_score. Example: '2407.15831'.
categorystring
Filter by arXiv category e.g. 'cs.AI', 'cs.LG'
contribution_typestring
Filter by paper's contribution typeone of model · method · benchmark · dataset · survey · theoretical
cursorstring
Cursor from previous response's next_cursor for keyset pagination
datasetstring
Filter to papers that evaluate on a specific dataset e.g. 'MMLU', 'ImageNet'
daysinteger
Limit to papers published within N days
exclude_idsarray
arXiv IDs to exclude from results (for deduplication across chained calls)
fieldsstring
Comma-separated list of fields to return (e.g. 'arxiv_id,title,llm_summary,llm_novelty_score'). If omitted, returns the lean 12-field default unless verbose=true.
github_url_existsboolean
Filter on whether the paper has a linked GitHub URL (true = only papers with a repo). Stricter than has_code (which counts any code link).
has_codeboolean
Filter to papers with a linked code release (has_code=true). Surfaces runnable/reproducible work — pair with min_stars/sort='community' to find the papers practitioners actually adopt.
impact_mininteger
Minimum impact_pct (0-100), e.g. 80 = top 20% FORECAST impact. This is a RISING-WORK filter: impact_pct is only computed for the last ~90 days, so impact_min restricts results to recent papers pred...
limitinteger
Results per page (max 50)default: 20
method_categorystring
Filter by method category e.g. 'reinforcement learning', 'transformer'
method_namestring
Filter to papers introducing/using a specific named method e.g. 'LoRA', 'YOLO', 'DPO'. Case-insensitive substring match on the extracted method_name field.
min_citationsinteger
Minimum real citation count. Unlike impact_min (a ~90-day FORECAST percentile), this filters on PROVEN citations and keeps established/canonical papers.
min_starsinteger
Minimum GitHub stars on the paper's linked repo. A proxy for engineering adoption — surfaces work that practitioners are actually running/building on. Pair with sort='community' to rank by it. COVE...
modestring
Search mode. 'semantic' (default) uses embedding similarity — finds conceptually related papers even without exact keyword matches. 'keyword' uses Postgres full-text search — faster but only matche...one of keyword · semantic
novelty_minnumber
Minimum novelty score (0-1). Use 0.5+ for novel papers.
pageinteger
Page numberdefault: 1
published_afterstring
Only papers published on or after this date, 'YYYY-MM-DD'. Use with published_before to bound an arbitrary date window (days only gives a rolling N-day lookback).

+7 more parameters. See the server's own documentation for the full schema.

get_paperGet full details for one or more papers by arXiv ID. Pass a single-element array for one paper; pass multiple IDs to batch-fetch up to 50 papers in one call. Pass format='bibtex' to get a .bib citation entry (bibtex is single-paper only; for multi-paper bibtex, call repeatedly...4 params

Get full details for one or more papers by arXiv ID. Pass a single-element array for one paper; pass multiple IDs to batch-fetch up to 50 papers in one call. Pass format='bibtex' to get a .bib citation entry (bibtex is single-paper only; for multi-paper bibtex, call repeatedly...

Parameters* required
arxiv_ids*array
One or more arXiv IDs. Single-paper lookup uses [id]; batch lookup passes multiple IDs (max 50). Example: ['2407.15831'] or ['2407.15831', '2402.09906'].
fieldsstring
Comma-separated list of fields to return (e.g. 'arxiv_id,title,llm_summary,abstract'). If omitted, returns the lean 12-field default unless verbose=true.
formatstring
Response format. 'json' (default) returns structured paper data. 'bibtex' returns a .bib citation entry. Bibtex mode uses the first ID in arxiv_ids.one of json · bibtex
verboseboolean
If true, returns the full 28-field paper shape (method/task/dataset extraction, application_domain, baselines, etc.). Default false returns the lean 12-field set. Ignored when `fields` is provided.
get_citationsGet the citation graph for a paper, sorted by citing-paper rank_score (highest-impact first). 'citing' = outgoing references this paper cites; 'cited_by' = incoming citations from other papers. Default response is a lean 12-field shape per paper — pass verbose=true for the ful...6 params

Get the citation graph for a paper, sorted by citing-paper rank_score (highest-impact first). 'citing' = outgoing references this paper cites; 'cited_by' = incoming citations from other papers. Default response is a lean 12-field shape per paper — pass verbose=true for the ful...

Parameters* required
arxiv_id*string
arXiv ID of the paper
directionstring
'citing' = outgoing references this paper cites; 'cited_by' = incoming citations from other papersone of citing · cited_bydefault: cited_by
exclude_idsarray
arXiv IDs to exclude from results (for deduplication across chained calls)
fieldsstring
Comma-separated list of fields to return (e.g. 'arxiv_id,title,llm_summary,llm_novelty_score'). If omitted, returns the lean 12-field default unless verbose=true.
limitinteger
Number of papers to return (max 50)default: 20
verboseboolean
If true, returns the full 28-field paper shape. Default false returns the lean 12-field set. Ignored when `fields` is provided.
fetch_fulltextRead arXiv papers' actual text, by section. Section selection controls context cost: ask for the one or two you need, not whole papers — 'all' is ~13.5KB a paper, 8 of them ~108KB. Section labels are inferred: check `low_confidence_sections` before calling one the paper's own....3 params

Read arXiv papers' actual text, by section. Section selection controls context cost: ask for the one or two you need, not whole papers — 'all' is ~13.5KB a paper, 8 of them ~108KB. Section labels are inferred: check `low_confidence_sections` before calling one the paper's own....

Parameters* required
arxiv_idstring
arXiv ID of one paper.
arxiv_idsarray
Up to 8 arXiv IDs, one entry per paper. `sections` is required past one ID.
sectionsvalue
One section name or an array. Defaults to 'all' for one paper; no default for a batch.
find_authorTwo-mode author tool. Provide exactly one of q or id. Q-MODE (q=...): search for researchers by topic or name — uses embedding similarity for topics ('efficient LLM inference'), fuzzy matching for names ('Yann LeCun'). Returns a list of matching authors with author_id, name, h...4 params

Two-mode author tool. Provide exactly one of q or id. Q-MODE (q=...): search for researchers by topic or name — uses embedding similarity for topics ('efficient LLM inference'), fuzzy matching for names ('Yann LeCun'). Returns a list of matching authors with author_id, name, h...

Parameters* required
fieldstring
(q-mode only) Filter by primary research field e.g. 'cs.LG', 'cs.CV', 'cs.CL'.
idinteger
Author ID for direct profile lookup (id-mode). Returns the single author profile with top 10 papers. Get IDs from q-mode results or co_author_graph.
limitinteger
(q-mode only) Max results to return (default 20).default: 20
qstring
Topic or researcher name to search (q-mode). Returns a list of matching authors. Examples: 'efficient transformer training', 'Geoffrey Hinton'.
co_author_graphFind the co-authorship neighborhood of one or more authors. Given a list of author_ids, returns edges {from, to, papers_count, last_collab_year} where 'from' is one of the input authors and 'to' is any co-author appearing on a shared paper within the window. Use for AC reviewe...2 params

Find the co-authorship neighborhood of one or more authors. Given a list of author_ids, returns edges {from, to, papers_count, last_collab_year} where 'from' is one of the input authors and 'to' is any co-author appearing on a shared paper within the window. Use for AC reviewe...

Parameters* required
author_ids*array
Author IDs to query (1-25). Get author IDs via the find_author tool.
window_yearsinteger
Only count co-authorships from the last N years (default 10, max 30).default: 10
embed_textEmbed a text string into a 768-dim Gemini Flash vector. Use for HyDE-style retrieval: (1) write a hypothetical short paper that would perfectly answer the user's query, (2) embed it with task_type='RETRIEVAL_DOCUMENT' (default — matches the corpus embedding side), (3) pass the...2 params

Embed a text string into a 768-dim Gemini Flash vector. Use for HyDE-style retrieval: (1) write a hypothetical short paper that would perfectly answer the user's query, (2) embed it with task_type='RETRIEVAL_DOCUMENT' (default — matches the corpus embedding side), (3) pass the...

Parameters* required
task_typestring
RETRIEVAL_DOCUMENT (default) matches paper-side embeddings — use for HyDE. RETRIEVAL_QUERY matches query-side semantic search.one of RETRIEVAL_DOCUMENT · RETRIEVAL_QUERYdefault: RETRIEVAL_DOCUMENT
text*string
Text to embed (1-8000 chars). For HyDE flows this is your hypothetical answer/abstract.
get_field_orientationReturns CANDIDATE FOUNDATIONAL PAPERS for a research topic — cheap retrieval only, no synthesis. Ranks papers by a blend of citation count (0.6 weight, captures importance) and semantic similarity to your topic (0.4 weight). Use this to bootstrap a literature survey or get a f...2 params

Returns CANDIDATE FOUNDATIONAL PAPERS for a research topic — cheap retrieval only, no synthesis. Ranks papers by a blend of citation count (0.6 weight, captures importance) and semantic similarity to your topic (0.4 weight). Use this to bootstrap a literature survey or get a f...

Parameters* required
limitinteger
Number of candidate papers to return (5–30, default 15).default: 15
topic*string
Research area to orient on. Be specific for better results. Examples: 'diffusion models for protein structure prediction', 'efficient attention mechanisms for long-context LLMs', 'graph neural netw...
get_foundational_lineageReturns the FOUNDATIONAL WORK FOR A PAPER'S NICHE via the citation graph — the relative question ('what is foundational for THIS paper's specific sub-field', often itself only modestly cited) rather than the obvious global landmarks. Anchors on the paper, takes its embedding n...4 params

Returns the FOUNDATIONAL WORK FOR A PAPER'S NICHE via the citation graph — the relative question ('what is foundational for THIS paper's specific sub-field', often itself only modestly cited) rather than the obvious global landmarks. Anchors on the paper, takes its embedding n...

Parameters* required
anchor_paper_id*string
arXiv ID of the paper to anchor on, e.g. '2504.04704' or '2504.04704v2'. The niche is built from this paper's embedding neighbourhood.
generality_ceilingboolean
When true (default), demote universally-cited landmark papers into the collapsed `discipline` tier so the niche-specific foundations lead. Set false to keep landmarks in the foundational tiers.default: true
limitinteger
Max papers in each of the niche_roots and field_level tiers (5–40, default 15).default: 15
scopestring
Niche breadth: 'narrow' (~100 nearest papers, tightest sub-topic — surfaces the few-citation niche root), 'field' (~200, default), 'broad' (~400, wider area foundations).one of narrow · field · broaddefault: field
save_paperSave a paper to the authenticated user's Scholar Feed library (bookmark). MUTATES the library and feeds the user's personalization — saved papers are the strongest signal in the For You feed and the email digest. Idempotent: calling it again on an already-saved paper leaves it...1 params

Save a paper to the authenticated user's Scholar Feed library (bookmark). MUTATES the library and feeds the user's personalization — saved papers are the strongest signal in the For You feed and the email digest. Idempotent: calling it again on an already-saved paper leaves it...

Parameters* required
arxiv_id*string
arXiv ID of the paper to save, e.g. '2407.15831'.
unsave_paperRemove a paper from the authenticated user's Scholar Feed library. MUTATES the library. Idempotent: removing a paper that isn't saved leaves it unsaved. Note: the saved library is a superset of all collections, so un-saving a paper ALSO removes it from every collection it was...1 params

Remove a paper from the authenticated user's Scholar Feed library. MUTATES the library. Idempotent: removing a paper that isn't saved leaves it unsaved. Note: the saved library is a superset of all collections, so un-saving a paper ALSO removes it from every collection it was...

Parameters* required
arxiv_id*string
arXiv ID of the paper to remove from the library.
like_paperLike a paper — a 'more like this' calibration signal that tunes the user's For You feed toward similar work. INSERT-only and idempotent (liking twice is a no-op, never un-likes). Distinct from save_paper: like expresses taste for ranking; save bookmarks for later reading. Requ...1 params

Like a paper — a 'more like this' calibration signal that tunes the user's For You feed toward similar work. INSERT-only and idempotent (liking twice is a no-op, never un-likes). Distinct from save_paper: like expresses taste for ranking; save bookmarks for later reading. Requ...

Parameters* required
arxiv_id*string
arXiv ID of the paper to like.
list_libraryList the authenticated user's saved papers (their library), newest first. Read-only. Use this to review a reading list or to see what's already saved before saving more. Requires SF_API_KEY. SHAPE: agent callers get a lean record — `llm_summary` (~300 chars) INSTEAD of the abs...4 params

List the authenticated user's saved papers (their library), newest first. Read-only. Use this to review a reading list or to see what's already saved before saving more. Requires SF_API_KEY. SHAPE: agent callers get a lean record — `llm_summary` (~300 chars) INSTEAD of the abs...

Parameters* required
fieldsstring
Comma-separated fields to return, e.g. 'arxiv_id,title,abstract'. Overrides verbose. Library state (note_text/is_read/is_saved/collections) is always included regardless.
limitinteger
How many saved papers to return (max 100).default: 50
pageinteger
Page number for paging through a large library.default: 1
verboseboolean
Return the full paper shape (including the abstract) instead of the lean default. Costs roughly 4x the tokens — prefer llm_summary unless you specifically need the abstract's wording.
list_collectionsList the authenticated user's collections (named groups of saved papers) with paper counts. Read-only. Use before add_to_collection to see existing collections. Requires SF_API_KEY.

List the authenticated user's collections (named groups of saved papers) with paper counts. Read-only. Use before add_to_collection to see existing collections. Requires SF_API_KEY.

No parameters. Call it with no arguments.

create_collectionCreate a new named collection. MUTATES. If a collection with that name already exists, returns the existing one (get-or-create — never errors on duplicate). Use "/" to nest under a folder, e.g. "AgentOPA/Formal" — the folder is derived from the name, so there is no parent to c...1 params

Create a new named collection. MUTATES. If a collection with that name already exists, returns the existing one (get-or-create — never errors on duplicate). Use "/" to nest under a folder, e.g. "AgentOPA/Formal" — the folder is derived from the name, so there is no parent to c...

Parameters* required
name*string
Name for the collection, e.g. 'KV-cache compression'. Use '/' to nest: 'AgentOPA/Formal' files it under an 'AgentOPA' folder.
add_to_collectionAdd a paper to a collection, addressed by collection_id OR collection_name (get-or-create by name — no need to look up an id first). Nest with "/": collection_name "AgentOPA/Formal" files the paper under an "AgentOPA" folder. MUTATES: also auto-saves the paper to the library....3 params

Add a paper to a collection, addressed by collection_id OR collection_name (get-or-create by name — no need to look up an id first). Nest with "/": collection_name "AgentOPA/Formal" files the paper under an "AgentOPA" folder. MUTATES: also auto-saves the paper to the library....

Parameters* required
arxiv_id*string
arXiv ID of the paper to add, e.g. '2407.15831'.
collection_idstring
UUID of an existing collection. Provide this OR collection_name.
collection_namestring
Name of the collection. Created if it doesn't exist. Use '/' to nest, e.g. 'AgentOPA/Formal'. Provide this OR collection_id.
remove_from_collectionRemove a paper from a collection, addressed by collection_id OR collection_name. MUTATES (the paper stays in your library; it's only removed from this collection). Idempotent. Requires SF_API_KEY.3 params

Remove a paper from a collection, addressed by collection_id OR collection_name. MUTATES (the paper stays in your library; it's only removed from this collection). Idempotent. Requires SF_API_KEY.

Parameters* required
arxiv_id*string
arXiv ID of the paper to remove from the collection.
collection_idstring
UUID of the collection. Provide this OR collection_name.
collection_namestring
Name of the collection. Provide this OR collection_id.
create_watchCreate a standing watch — evaluated daily against newly-indexed papers, surfacing new matches via the email digest and via check_watches. MUTATES. Get-or-create by name (re-creating with an existing name returns it unchanged — never errors on duplicate). TWO forms: (1) the v2...11 params

Create a standing watch — evaluated daily against newly-indexed papers, surfacing new matches via the email digest and via check_watches. MUTATES. Get-or-create by name (re-creating with an existing name returns it unchanged — never errors on duplicate). TWO forms: (1) the v2...

Parameters* required
anchor_paper_idstring
Watch papers similar to this arXiv ID. One seed selector only.
author_idstring
Watch an author's new work, by author ID. One seed selector only.
categorystring
Watch an arXiv category (e.g. 'cs.LG'), filtered by novelty_min. One seed selector only.
collection_idstring
Watch the neighborhood of a collection by UUID. One seed selector only.
collection_namestring
Watch the neighborhood of a collection by name (resolved by the backend). One seed selector only.
criteriaobject
v2 STRUCTURED filter (collections/authors/categories/text/has_code/min_novelty/similar). When provided, this defines the watch (kind='filter') and the single-selector seeds above are IGNORED. This...
name*string
Label for the watch, e.g. 'novel KV-cache work'.
novelty_minnumber
Only surface papers at/above this novelty score (0..1). The signal/noise knob — raise it for 'only tell me when it matters'. Default 0.5.default: 0.5
qstring
Semantic/keyword topic seed. One seed selector only.
recency_daysinteger
For a structured (criteria) watch: only consider papers from the last N days (default 7; the 'cites' relation uses 30).
scope_to_citations_ofstring
Watch new papers citing this arXiv ID. One seed selector only.
list_watchesList the authenticated user's watches with name, a one-line definition summary, last_evaluated_at, and pending_hits (count of new matches since the last digest delivery). Read-only. Use before create_watch to see what's already tracked. Requires SF_API_KEY.

List the authenticated user's watches with name, a one-line definition summary, last_evaluated_at, and pending_hits (count of new matches since the last digest delivery). Read-only. Use before create_watch to see what's already tracked. Requires SF_API_KEY.

No parameters. Call it with no arguments.

check_watchesPull new matching papers since the last digest delivery, in the same shape as search_papers results. Optionally scope to one watch by watch_name OR watch_id; omit both for all watches. Read-only and idempotent — does NOT advance any watermark (only digest delivery does), so it...3 params

Pull new matching papers since the last digest delivery, in the same shape as search_papers results. Optionally scope to one watch by watch_name OR watch_id; omit both for all watches. Read-only and idempotent — does NOT advance any watermark (only digest delivery does), so it...

Parameters* required
limitinteger
Max hits to return (max 100).default: 50
watch_idstring
Scope to one watch by UUID. Provide this OR watch_name, or neither for all.
watch_namestring
Scope to one watch by name. Provide this OR watch_id, or neither for all.
delete_watchDelete a watch, addressed by watch_id OR name. MUTATES. Idempotent: deleting a non-existent watch is a no-op (no error). To change a watch in place (rename / novelty_min / retarget criteria) use update_watch instead of delete-and-recreate. Requires SF_API_KEY.2 params

Delete a watch, addressed by watch_id OR name. MUTATES. Idempotent: deleting a non-existent watch is a no-op (no error). To change a watch in place (rename / novelty_min / retarget criteria) use update_watch instead of delete-and-recreate. Requires SF_API_KEY.

Parameters* required
namestring
Name of the watch to delete. Provide this OR watch_id.
watch_idstring
UUID of the watch to delete. Provide this OR name.
update_watchUpdate an existing watch in place — rename, change novelty_min, or RETARGET its structured filter `criteria`. MUTATES. Address by watch_id OR name. Changing criteria replaces the definition and clears the watch's pending hits (so stale matches don't deliver); the next daily ev...6 params

Update an existing watch in place — rename, change novelty_min, or RETARGET its structured filter `criteria`. MUTATES. Address by watch_id OR name. Changing criteria replaces the definition and clears the watch's pending hits (so stale matches don't deliver); the next daily ev...

Parameters* required
criteriaobject
Replace the watch's filter (becomes kind='filter'). Clears pending hits.
namestring
Find the watch by its current name. Provide this OR watch_id.
new_namestring
Rename the watch.
novelty_minnumber
New novelty floor (0..1).
recency_daysinteger
Window for the new criteria.
watch_idstring
Find the watch by UUID. Provide this OR name.
preview_watchDry-run a structured filter over recent papers WITHOUT creating a watch — the tuning loop. Returns {window_days, needs_similarity, match_count, sample} so you can iterate (add a category, raise min_novelty, switch the collection relation) before saving with create_watch. Struc...2 params

Dry-run a structured filter over recent papers WITHOUT creating a watch — the tuning loop. Returns {window_days, needs_similarity, match_count, sample} so you can iterate (add a category, raise min_novelty, switch the collection relation) before saving with create_watch. Struc...

Parameters* required
criteria*object
The structured filter to test.
recency_daysinteger
Window in days (default 7; the 'cites' relation uses 30).
find_gapsFind important work you HAVEN'T saved, for a collection or topic — a 'what am I missing?' analysis. Returns two buckets: foundational_gaps (canonical citation-graph anchors in the niche, not in your library) and frontier_gaps (recent high-novelty work in the niche, not yet sav...5 params

Find important work you HAVEN'T saved, for a collection or topic — a 'what am I missing?' analysis. Returns two buckets: foundational_gaps (canonical citation-graph anchors in the niche, not in your library) and frontier_gaps (recent high-novelty work in the niche, not yet sav...

Parameters* required
collection_idstring
Analyze gaps for a collection by UUID. Provide exactly one seed.
collection_namestring
Analyze gaps for a collection by name (resolved by the backend). Provide exactly one seed.
limitinteger
Max gaps per bucket (max 50). Default 10.default: 10
scopestring
Which gaps to surface: 'foundational' (canonical anchors you're missing), 'frontier' (recent novel work you haven't saved), or 'both' (default).one of foundational · frontier · bothdefault: both
topicstring
Analyze gaps for a free-text topic/area. Provide exactly one seed.
ask_libraryAnswer a question using ONLY the papers you've saved — a synthesis over your library (or one collection) with inline [arXiv-ID] citations. The inverse of find_gaps (which finds important work you're MISSING): ask_library reasons over what you HAVE. Optionally scope to one coll...4 params

Answer a question using ONLY the papers you've saved — a synthesis over your library (or one collection) with inline [arXiv-ID] citations. The inverse of find_gaps (which finds important work you're MISSING): ask_library reasons over what you HAVE. Optionally scope to one coll...

Parameters* required
collection_idstring
Scope the answer to one collection by UUID. Omit to use your whole library.
collection_namestring
Scope the answer to one collection by name (resolved by the backend). Omit to use your whole library.
limitinteger
How many of your most-relevant saved papers to ground the answer on (max 20). Default 8.default: 8
question*string
The natural-language question to answer from your saved papers.
annotate_paperRecord YOUR verdict on a paper — why it matters for your work, when to use it, or why you ruled it out. One note per paper, upserted (writing again replaces it), so it is safe to call repeatedly. Requires SF_API_KEY. WHY IT MATTERS: this note is the only thing that survives be...3 params

Record YOUR verdict on a paper — why it matters for your work, when to use it, or why you ruled it out. One note per paper, upserted (writing again replaces it), so it is safe to call repeatedly. Requires SF_API_KEY. WHY IT MATTERS: this note is the only thing that survives be...

Parameters* required
actionstring
'upsert' (default) writes/replaces the note. 'get' returns the current note without changing it. There is deliberately no delete: a wrong note is corrected by overwriting it, which keeps this tool...one of upsert · getdefault: upsert
arxiv_id*string
arXiv ID of the paper to annotate, e.g. '2407.15831'.
note_textstring
Your verdict (max 5000 chars). Required for the default upsert; ignored for action='get'.
check_driftAnswers 'for my problem, is the method I use superseded — and by what?' over a grounded, entity-resolved knowledge base of textual critique receipts + benchmark-dominance edges (no LLM call at query time). Call with a `family` (e.g. 'rag', 'peft', 'kvcache') and a `method` (e....3 params

Answers 'for my problem, is the method I use superseded — and by what?' over a grounded, entity-resolved knowledge base of textual critique receipts + benchmark-dominance edges (no LLM call at query time). Call with a `family` (e.g. 'rag', 'peft', 'kvcache') and a `method` (e....

Parameters* required
familystring
Builder-problem family to query, e.g. 'rag' (retrieval-augmented generation), 'peft' (parameter-efficient fine-tuning), 'kvcache' (KV-cache compression). Omit it (or pass an unknown family like 'li...
limitinteger
Max items per list — receipts, dominance edges, frontier (3–50, default 12).default: 12
methodstring
Method to check, e.g. 'SnapKV', 'H2O', 'StreamingLLM' (case/spacing-insensitive). Omit to get the whole-family map instead of a single-method verdict.

Sponsors

Configuration

SF_API_KEYsecret

Optional free API key from scholarfeed.org/settings. Anonymous callers get 200 requests/month; a free account raises that to 500/month and unlocks your library, and Pro is 10,000/month.

Readme

Scholar Feed

Scholar Feed MCP Server

CI npm version Node License: MIT smithery badge

Research paper search with ranking and citation tracking, for LLM engineering and academic research, without leaving Claude Code, Cursor, or any MCP client.


View the full README on GitHub

Details

Repository
github.com/ygao2005/scholar-feed-mcp
Website
www.scholarfeed.org
Category
Monitoring & Observability
Package
scholar-feed-mcp
Transport
STDIO, HTTP
Auth
Required
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Monitoring & Observability MCP servers

View all
1mcpware avatarInstagram Mcpmcpware/instagram-mcpInstagram MCP — 23 tools for Instagram Graph API: posts, DMs, stories, reels, analytics.12stars
2carloshpdoc avatarMemorydetectivecarloshpdoc/memorydetectiveiOS leak/perf debugging via MCP: memgraph cycles, .trace analysis, SourceKit-LSP bridging.11stars
3j4th avatarMTG MCP Serverj4th/mtg-mcp-serverMagic: The Gathering card search, combo lookup, draft analytics, and Commander tools.11stars
4finstacklabs avatarFinStack MCPfinstacklabs/finstack-mcpIndia-first MCP server for NSE/BSE, fundamentals, analytics, and market research workflows.9stars
5sarahpark avatarGoogle Search Consolesarahpark/google-search-console-mcpGoogle Search Console MCP server — search analytics, URL inspection, and sitemaps9stars
6dmarcoff avatarDMARKOFF — DMARC, SPF & DKIM Analyticsdmarcoff/mcpDMARC analytics for AI assistants: SPF/DKIM, compliance, anomalies, p=reject readiness, onboarding.0stars