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)
MCP web search + tiered web fetch for AI agents (Exa, Firecrawl), SSRF-guarded, cross-platform.
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.
EXA_API_KEY, FIRECRAWL_API_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
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": {
"web-retrieval": {
"command": "uvx",
"args": [
"web-retrieval-mcp"
],
"env": {
"EXA_API_KEY": "your-value",
"FIRECRAWL_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add web-retrieval --env EXA_API_KEY=your-value --env FIRECRAWL_API_KEY=your-value -- uvx web-retrieval-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"web-retrieval": {
"command": "uvx",
"args": [
"web-retrieval-mcp"
],
"env": {
"EXA_API_KEY": "your-value",
"FIRECRAWL_API_KEY": "your-value"
}
}
}
}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": {
"web-retrieval": {
"type": "stdio",
"command": "uvx",
"args": [
"web-retrieval-mcp"
],
"env": {
"EXA_API_KEY": "your-value",
"FIRECRAWL_API_KEY": "your-value"
}
}
}
}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 8, 2026
The registry name was verified with the GitHub account VelvetSP, which owns the repo
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.
You need to fill in: EXA_API_KEY, FIRECRAWL_API_KEY
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.1.2) reached the registry 5 months 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:↓ Downloads per weeki★ 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.
An open-source [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for source-grounded web research. Connect Codex CLI and the Codex IDE extension, Claude Code, Claude Desktop, Cursor, ChatGPT desktop, or any other compatible MCP client to six read-only tools for Exa or Tavily search, resilient Exa → Camoufox → Tavily → Firecrawl page retrieval, AI/ML paper discovery, and developer-source search—with explicit provenance, optional local caching, and SSRF guards.
[Why use it?](#why-use-web-retrieval-mcp) · [Quick start](#quick-start) · [Tools](#six-read-only-tools) · [Routing](#how-retrieval-works) · [Configuration](#configuration-reference) · [Security](#security-model) · [FAQ](#frequently-asked-questions)
Web research is more reliable when an agent can see where every result came from, choose the right retrieval strategy, and recover when one provider or page-access method fails. web-retrieval-mcp makes those controls part of the tool contract:
Sources trailer. Exa deep modes additionally return a clearly labeled synthesized answer, with grounding when Exa provides it, before the source-separated result blocks.Built-in capabilities vary by agent and can improve over time. The useful comparison is therefore not “all defaults are bad”; it is whether you need a portable, inspectable retrieval layer with controls your current client does not expose.
| Need | Typical bundled search/fetch surface | web-retrieval-mcp |
|---|---|---|
| Search output | Client-defined result or synthesis format | Default search returns source-separated blocks plus Sources; Exa deep modes add a labeled synthesis |
| Backend choice | Provider and routing are usually managed by the client | Exa or Tavily search, with a disclosed Firecrawl fallback |
| Difficult pages | One client-specific access path | Indexed content, guarded local browser rendering, Tavily Extract, and Firecrawl tiers |
| Retrieval intent | Usually search or page text | Full body, concise summary, or query-grounded page answer |
| Research discovery | General web index | Dedicated paper and developer-source tools in addition to web search |
| Freshness and filters | Whatever the client exposes | Date windows, hour-level recency, domains, categories, result limits, and forced freshness |
| Auditability | Client-specific | Fetch tier/cache/truncation disclosures; Tavily and Firecrawl search-fallback labels; explicit filter notices where supported |
| Operations | Client-defined; often hosted or opaque | Local stdio or self-hosted loopback HTTP, optional private UDS cache |
| Security policy | Client-specific | Initial URL validation plus guarded browser requests and redirects |
Use it as an independent complementary retrieval lane by default. If you want it to replace Claude Code's built-in WebSearch and WebFetch, the package also includes an optional, previewable hook installer.
Python 3.10 or newer is required.
For the complete feature set in an isolated environment:
pipx install --include-deps 'web-retrieval-mcp[all]'
camoufox fetch
--include-deps exposes Camoufox's own command from the isolated pipx environment; the second command downloads its managed browser. If you do not want local rendering, install the base package or selected non-render extras and skip the browser download.
For a lean Exa + Firecrawl installation:
pipx install web-retrieval-mcp
With uv installed, you can run the base package in a temporary isolated environment without a permanent install:
uvx web-retrieval-mcp
Or install into an existing virtual environment:
python -m pip install 'web-retrieval-mcp[all]'
python -m camoufox fetch
The browser download is required whenever you install the render extra and want Camoufox to serve render="auto" or render="always" calls.
Optional extras are composable:
| Extra | Adds |
|---|---|
tavily | Tavily Search and Tavily Extract |
render | Local Camoufox/Playwright rendering |
cache | Valkey client for completed-result caching |
keyring | Cross-platform native secret-store access |
all | Every optional runtime capability above |
For the broadest routing coverage, configure Exa and Firecrawl; add Tavily when you want provider-selectable search or another full-body fetch tier.
export EXA_API_KEY='<your-exa-api-key>'
export FIRECRAWL_API_KEY=' ' export TAVILY_API_KEY=' ' # optional
You do not need all three keys to start the server. Tools resolve credentials lazily and report what a selected route is missing. See Credential storage for a key file and OS secret-store alternatives.
All three providers advertised no-card entry allocations when checked on 2026-09-01; plans and unit costs can change, so check their live pricing before estimating a workload:
| Provider | Entry allocation checked 2026-09-01 | Used for |
|---|---|---|
| Exa | $20 signup credit plus $10 monthly API credits | Default web search and first indexed-content fetch tier |
| Firecrawl | 1,000 credits per month | Search/fetch fallback and research/developer indexes |
| Tavily | 1,000 API credits per month | Optional search provider and full-body extract tier |
| Camoufox | Local open-source browser | JavaScript-rendered page retrieval on your machine |
Codex CLI and the Codex IDE extension share MCP configuration. Add the server with the CLI, then verify it is registered:
codex mcp add web-retrieval -- web-retrieval-mcp
codex mcp list
With uvx and no prior install:
codex mcp add web-retrieval -- uvx web-retrieval-mcp
See OpenAI's Codex MCP documentation for the current CLI, IDE, and configuration-file details.
Claude Code:
claude mcp add web-retrieval -- web-retrieval-mcp
With uvx and no prior install:
claude mcp add web-retrieval -- uvx web-retrieval-mcp
Claude Desktop, Cursor, and other clients that accept an mcpServers object can use:
{
"mcpServers": { "web-retrieval": { "command": "web-retrieval-mcp" } } }
That configuration assumes the executable is on the client's PATH. For an uvx launch, use "command": "uvx" and "args": ["web-retrieval-mcp"]. If a desktop client does not inherit your shell environment, use the private key file described below or place literal key values in the client's protected environment configuration. Do not rely on ${VARIABLE} interpolation unless your client documents that behavior.
ChatGPT desktop and clients with different setup surfaces can connect through the MCP transport their current version supports. This server uses stdio by default and can also expose Streamable HTTP; consult the client's documentation for its configuration format and supported transports.
Once the MCP server is connected, prompts can stay natural:
Search the web for the latest primary documentation about Python package metadata.
Keep each source separate and preserve its URL.
Fetch https://example.com/report, force a fresh retrieval, and answer only: What methodology did the authors use?
Find AI/ML papers about retrieval reranking, inspect the strongest paper for its reported benchmark result, then find newer work that cites it.
Search merged pull requests and documentation for the origin of this exact error: "transport closed".
All tools carry MCP's read-only annotation. MCP clients receive the complete generated input schema and descriptions when they connect.
| Tool | Compact signature | Best for |
|---|---|---|
web_search | web_search(query, num_results=8, mode="auto", …, provider=None) | General web search through Exa or Tavily, with source-separated results and Firecrawl fallback |
web_fetch | web_fetch(url, render="auto", max_chars=None, max_age_hours=None, mode="full", question=None, tavily=None) | Readable page bodies, concise summaries, or grounded answers through a tiered fetch cascade |
research_papers | research_papers(query, k=8) | Ranked AI/ML paper discovery through Firecrawl's Research Index |
research_paper | research_paper(paper_id, query=None) | Paper metadata and optional query-relevant full-text passages for claim verification |
research_similar | research_similar(paper_id, intent, k=8, mode="similar", …) | Related papers, citers, or references guided by a natural-language intent |
research_github | research_github(query, k=8, passages=2, types=None, repos=None) | Developer documentation, repository READMEs, issues, and merged pull requests |
web_search supports relevance or date-oriented filters, domain inclusion/exclusion, publication windows, generated per-result summaries, and Exa's fast/deep search modes. Tavily receives equivalent controls where its API supports them; approximations and dropped controls are disclosed in the output.
The research-paper index is arXiv-oriented and best suited to AI/ML. For scholarly work outside that scope, use web_search(category="publication").
Exa is the default search provider. Select Tavily for one call with provider="tavily", or globally:
export WEB_SEARCH_PROVIDER=tavily
Only exa and tavily are accepted. If the
Only the beginning is shown; read the rest in the repo