Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
Finds and ranks recent scientific papers that matter most for a research question or project.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"research-scan": {
"command": "uvx",
"args": [
"research-scan"
]
}
}
}Run this in your terminal
claude mcp add research-scan -- uvx research-scanPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"research-scan": {
"command": "uvx",
"args": [
"research-scan"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"research-scan": {
"type": "stdio",
"command": "uvx",
"args": [
"research-scan"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified against the domain synectic.org (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.6.4) reached the registry 4 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Research Scan finds and ranks recent scientific papers that matter most for a specific research question, project, or decision. Starting from a brief or a single question, it retrieves the literature, expands through citation graphs, measures coverage, verifies every DOI against the live record, and emits evidence objects — while the agent driving it plans the queries, screens the candidates and ranks the shortlist. It is an evidence pipeline for a reasoning agent, not an assistant that answers questions.
Documentation: https://researchscan.synectic.org
The work is split in two, deliberately.
The CLI is deterministic and model-free. It retrieves across OpenAlex, Semantic Scholar and arXiv, walks the citation graph, dedups, counts coverage per criterion, shortlists, verifies every DOI against the live record, applies the selection rules and renders the result. It contains no LLM SDK and makes no judgement about a paper.
The agent supplies the cognition. Planning the queries, scoring each candidate 0–3, writing gap queries when coverage is thin, and reranking the shortlist are all model decisions. The skill packages the rubrics they are made against, as plain Markdown in skills/research-scan/references/; whatever agent hosts it executes them.
Files are the interface between the two halves: the filesystem is the protocol boundary between reasoning and execution, not a storage detail. That is what lets Claude Code, Codex, Cursor or a plain Python loop drive the same chain over the same artifacts.
brief ─▶ [plan queries] ─▶ retrieve ─▶ [screen 0–3] ─▶ expand ─▶ [screen] ─▶ coverage
─▶ [gap round, if coverage is thin] ─▶ shortlist ─▶ [rerank] ─▶ verify ─▶ emit
Bracketed steps are the agent's; the rest are CLI stages.
Two things bound the result. A purpose — build, research or orient — decides what a paper has to do to earn a slot. A profile — quick, standard or deep — decides how much the scan costs. Both are described under How it works.
Output is a run directory of validated JSON plus a Markdown brief you can hand to a human, in which every paper's DOI, title, year and first author were checked against the live record.
Python ≥ 3.11 and uv.
uvx research-scan doctor # run any command without installing
uv tool install research-scan # or put it on PATH permanently
configure asks for each credential, shows what is already set, writes ~/.config/research-scan/.env with mode 0600 inside a 0700 directory, and finishes by running doctor.
research-scan configure # `setup` is an alias for the same command
Keys are read without echo. Re-running is safe: every variable shows its current value masked to the last four characters, Enter keeps it, typing replaces it. Anything already in the file that configure does not ask about — comments included — is left exactly as it was. If stdin is not a terminal it prints the file to write and exits 2 rather than hanging, which is the behaviour you want in a Dockerfile or a provisioning script.
| Variable | Needed for |
|---|---|
OPENALEX_API_KEY | OpenAlex, the primary source. Required; doctor exits 3 without it. |
OPENALEX_MAILTO | Strongly recommended. Raises OpenAlex to 5 req/s and joins the Crossref polite pool. |
S2_API_KEY | Recommended. Semantic Scholar search and citation-graph expansion work without it, throttled to roughly a third of the rate; doctor warns. |
NCBI_API_KEY | Optional. Raises this client's NCBI E-utilities limit from 3 to 10 req/s; PubMed retrieval is not built, so today only doctor's probe uses it. |
To write the file by hand instead, .env.example in the repo is the template. Process environment beats ~/.config/research-scan/.env, which beats a repo-local ./.env.
doctor invokes every source live with the cache bypassed, rather than listing what it thinks is configured.
research-scan doctor # a four-line summary and a verdict
research-scan doctor --verbose # every check, with timings and paths research-scan doctor --json # machine-readable; this is the CI/agent interface
Research Scan ✓ configuration ✓ OpenAlex ✓ Semantic Scholar ✓ Crossref ✓ arXiv ○ PubMed PubMed: endpoint reachable; source routed for biomed but not built ✓ writable run store Ready.
Exit 0 means go. Exit 3 means a mandatory check failed; see Troubleshooting. The checks and the exit code are identical in all three output modes — only the presentation differs.
○ marks a source that is routed but has no retrieval adapter — see the sources table. The probe still runs and still reports honestly: PubMed's row says the E-utilities endpoint answered, which is a different claim from being able to retrieve from it. doctor --json carries the same fact as sources_not_built, alongside a providers map whose keys and values are unchanged.
With the skill installed, ask for a scan in your agent:
/research-scan "I am designing a financial education product for young adults.
Research question: What interventions have the strongest recent evidence for increasing long-term savings behavior?
Context:
financial literacy scores.
Find the 10 papers that should shape our product decisions. Explain why each paper matters, what it found, and what evidence gaps remain." --profile standard
A one-line question works. A brief with context works better, because the planning step maps each section of it onto a specific part of the search plan. The template is skills/research-scan/examples/brief.example.md — a worked build brief — and brief.research-example.md is the same template at Purpose: research.
/research-scan research/my-brief.md --profile standard --top 10
| Brief section | What it feeds |
|---|---|
| `Purpose:` line | Which sub-criteria the plan derives and what why_it_matters must argue. build, research or orient; omit it and the agent infers one. |
| What this is about | The brief_summary and the domain routing. Say the setting, not just the topic. |
| What we need to decide or answer | The sub-criteria every paper is scored against. Name the actual open choices, or the actual questions. |
| What we already believe (the premise) | The contradictory query. A scan that only confirms the premise is not evidence. |
| Exclusions | queries.json.must_not, enforced in code at word boundaries — never as NOT-terms in query text. |
| Known papers or authors | anchors: pinned into the pool, exempt from the filters and the cap, always used as expansion seeds. |
Results land in research/scans/ - /. See Outputs.
Full argument list:
/research-scan <brief.md | "question"> [--profile quick|standard|deep] [--top N] [--foundational N]
[--from YYYY-MM] [--to YYYY-MM] [--slug name] [--domain behavioral|cs|biomed|general] [--max-candidates N] [--per-query N] [--gap-round]
Two front doors to the same pipeline. The skill is where the rubrics live, so it is the one that carries the screening and reranking cognition; the MCP server exposes the same four decision points as tools for any client that speaks MCP.
Any one of these; all three point at the same skills/research-scan/.
# 1. symlink a clone — edits to the rubrics take effect immediately
ln -s "$PWD/skills/research-scan" ~/.claude/skills/research-scan
claude --plugin-dir /path/to/research-scan
npx skills add Synectic-Research/research-scan
The skill follows the open Agent Skills format, so the same folder serves Codex, Cursor, Copilot and any other host that reads SKILL.md. Codex looks in ~/.agents/skills:
mkdir -p ~/.agents/skills && ln -s "$PWD/skills/research-scan" ~/.agents/skills/research-scan
The CLI needs the network, which Codex's default sandbox blocks. Run research-scan doctor once outside Codex (it creates the cache and config directories), then start a scanning session with network access and the cache writable. Both apply to the whole session, not only to research-scan. A full scan is a long, unattended task, so run it with codex exec and say that it should finish:
codex exec --sandbox workspace-write -c sandbox_workspace_write.network_access=true \
--add-dir ~/.cache/research-scan \ 'Use the research-scan skill on brief.md with --profile quick, and run every step through the report.'
Outside a git repository, codex exec also needs --skip-git-repo-check.
The plugin installs the skill and configures the uvx MCP server in one step; the .mcp.json route below stays the path for non-plugin clients such as Claude Desktop and Cursor.
/plugin marketplace add Synectic-Research/research-scan
/plugin install research-scan@synectic
research-scan mcp speaks MCP on stdin/stdout and nothing else. It reads no token and needs none: the process is trusted because your client launched it. Nothing extra to install — the server ships with the package.
{
"mcpServers": { "research-scan": { "command": "uvx", "args": ["research-scan", "mcp"] } } }
| Client | Where that goes |
|---|---|
| Claude Code | .mcp.json in the project root |
| Claude Desktop | claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
Four tools, one per model decision the pipeline needs: scan_start (you supply the query plan), scan_continue (screening scores, gap queries, or a page of rerank entries), scan_verify and scan_result. They are not a chat endpoint over the pipeline: each is a decision point where a judgement is needed, and the client's model supplies exactly the cognition the skill would — same stage order, same artifacts. The adapter drives the CLI as a subprocess and reads its exit codes. Run research-scan mcp --help for the other transport.
Each stage is idempotent and re-runnable: change queries.json or pass a flag and re-run from the stage it affects. The CLI owns candidates.json, shortlist.json, manifest.json and evidence.*; the agent owns queries.json, screen.json and ranked.json. Neither edits the other's files.
Declared on the brief's Purpose: line, or inferred. It decides which sub-criteria the plan derives, what screening counts as relevant, and what why_it_matters has to argue.
| Purpose | A paper earns its place by | Example |
|---|---|---|
build | moving a design or plan decision | "What should we know before we design the enrolment flow?" |
research | changing what we believe, what we would test, or how we would measure it | "What is the strongest recent evidence that default enrolment affects how much people save?" |
orient | being something a newcomer must know, recent first | "I am new to mechanistic interpretability — what must I read, recent first?" |
One flag sets how much the scan costs. --profile belongs to init and is recorded in the manifest; an explicit flag still overrides it — `-
Only the beginning is shown; read the rest in the repo