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)
Web, academic and code search with graph RAG, data lineage, ontology and cross-project schema links.
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.
SEARCH_API, SURF_SEARCH_PROVIDER, SURF_SCHOLAR_PROVIDER, SURF_BROWSER_ENGINE, CHROME_PATH, SURF_PROFILE_ROOT, SURF_RESEARCH, SURF_RETRIEVAL_MODE, SURF_RESEARCH_ROOT, SURF_RESEARCH_VECTOR_MODEL, SURF_RESEARCH_VECTOR_LOW_MEMORY, SURF_RESEARCH_VECTOR_THREADS, SURF_RESEARCH_REPO_AUTO, SURF_RESEARCH_REPO_AUTO_MAX_MB, SURF_RESEARCH_REPO_AUTO_MAX_FILES, SURF_RESEARCH_BROKER_IDLE_MS, SURF_RESEARCH_READ_CONCURRENCY, SURF_RESEARCH_QUERY_TIMEOUT_MS, GITHUB_TOKEN, SURF_LOCALE, SURF_TZ, SURF_HEADLESS, SURF_IDLE_CLOSE_MS, SURF_ALLOW_PRIVATE, SURF_LLM_HEAL, SURF_LLM_PROVIDER, SURF_LLM_MODEL, ANTHROPIC_API_KEY, ORCAROUTER_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": {
"google-surf": {
"command": "npx",
"args": [
"-y",
"google-surf-mcp"
],
"env": {
"SEARCH_API": "your-value",
"SURF_SEARCH_PROVIDER": "your-value",
"SURF_SCHOLAR_PROVIDER": "your-value",
"SURF_BROWSER_ENGINE": "your-value",
"CHROME_PATH": "your-value",
"SURF_PROFILE_ROOT": "your-value",
"SURF_RESEARCH": "your-value",
"SURF_RETRIEVAL_MODE": "your-value",
"SURF_RESEARCH_ROOT": "your-value",
"SURF_RESEARCH_VECTOR_MODEL": "your-value",
"SURF_RESEARCH_VECTOR_LOW_MEMORY": "your-value",
"SURF_RESEARCH_VECTOR_THREADS": "your-value",
"SURF_RESEARCH_REPO_AUTO": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_MB": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_FILES": "your-value",
"SURF_RESEARCH_BROKER_IDLE_MS": "your-value",
"SURF_RESEARCH_READ_CONCURRENCY": "your-value",
"SURF_RESEARCH_QUERY_TIMEOUT_MS": "your-value",
"GITHUB_TOKEN": "your-value",
"SURF_LOCALE": "your-value",
"SURF_TZ": "your-value",
"SURF_HEADLESS": "your-value",
"SURF_IDLE_CLOSE_MS": "your-value",
"SURF_ALLOW_PRIVATE": "your-value",
"SURF_LLM_HEAL": "your-value",
"SURF_LLM_PROVIDER": "your-value",
"SURF_LLM_MODEL": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"ORCAROUTER_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add google-surf --env SEARCH_API=your-value --env SURF_SEARCH_PROVIDER=your-value --env SURF_SCHOLAR_PROVIDER=your-value --env SURF_BROWSER_ENGINE=your-value --env CHROME_PATH=your-value --env SURF_PROFILE_ROOT=your-value --env SURF_RESEARCH=your-value --env SURF_RETRIEVAL_MODE=your-value --env SURF_RESEARCH_ROOT=your-value --env SURF_RESEARCH_VECTOR_MODEL=your-value --env SURF_RESEARCH_VECTOR_LOW_MEMORY=your-value --env SURF_RESEARCH_VECTOR_THREADS=your-value --env SURF_RESEARCH_REPO_AUTO=your-value --env SURF_RESEARCH_REPO_AUTO_MAX_MB=your-value --env SURF_RESEARCH_REPO_AUTO_MAX_FILES=your-value --env SURF_RESEARCH_BROKER_IDLE_MS=your-value --env SURF_RESEARCH_READ_CONCURRENCY=your-value --env SURF_RESEARCH_QUERY_TIMEOUT_MS=your-value --env GITHUB_TOKEN=your-value --env SURF_LOCALE=your-value --env SURF_TZ=your-value --env SURF_HEADLESS=your-value --env SURF_IDLE_CLOSE_MS=your-value --env SURF_ALLOW_PRIVATE=your-value --env SURF_LLM_HEAL=your-value --env SURF_LLM_PROVIDER=your-value --env SURF_LLM_MODEL=your-value --env ANTHROPIC_API_KEY=your-value --env ORCAROUTER_API_KEY=your-value -- npx -y google-surf-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"google-surf": {
"command": "npx",
"args": [
"-y",
"google-surf-mcp"
],
"env": {
"SEARCH_API": "your-value",
"SURF_SEARCH_PROVIDER": "your-value",
"SURF_SCHOLAR_PROVIDER": "your-value",
"SURF_BROWSER_ENGINE": "your-value",
"CHROME_PATH": "your-value",
"SURF_PROFILE_ROOT": "your-value",
"SURF_RESEARCH": "your-value",
"SURF_RETRIEVAL_MODE": "your-value",
"SURF_RESEARCH_ROOT": "your-value",
"SURF_RESEARCH_VECTOR_MODEL": "your-value",
"SURF_RESEARCH_VECTOR_LOW_MEMORY": "your-value",
"SURF_RESEARCH_VECTOR_THREADS": "your-value",
"SURF_RESEARCH_REPO_AUTO": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_MB": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_FILES": "your-value",
"SURF_RESEARCH_BROKER_IDLE_MS": "your-value",
"SURF_RESEARCH_READ_CONCURRENCY": "your-value",
"SURF_RESEARCH_QUERY_TIMEOUT_MS": "your-value",
"GITHUB_TOKEN": "your-value",
"SURF_LOCALE": "your-value",
"SURF_TZ": "your-value",
"SURF_HEADLESS": "your-value",
"SURF_IDLE_CLOSE_MS": "your-value",
"SURF_ALLOW_PRIVATE": "your-value",
"SURF_LLM_HEAL": "your-value",
"SURF_LLM_PROVIDER": "your-value",
"SURF_LLM_MODEL": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"ORCAROUTER_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": {
"google-surf": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"google-surf-mcp"
],
"env": {
"SEARCH_API": "your-value",
"SURF_SEARCH_PROVIDER": "your-value",
"SURF_SCHOLAR_PROVIDER": "your-value",
"SURF_BROWSER_ENGINE": "your-value",
"CHROME_PATH": "your-value",
"SURF_PROFILE_ROOT": "your-value",
"SURF_RESEARCH": "your-value",
"SURF_RETRIEVAL_MODE": "your-value",
"SURF_RESEARCH_ROOT": "your-value",
"SURF_RESEARCH_VECTOR_MODEL": "your-value",
"SURF_RESEARCH_VECTOR_LOW_MEMORY": "your-value",
"SURF_RESEARCH_VECTOR_THREADS": "your-value",
"SURF_RESEARCH_REPO_AUTO": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_MB": "your-value",
"SURF_RESEARCH_REPO_AUTO_MAX_FILES": "your-value",
"SURF_RESEARCH_BROKER_IDLE_MS": "your-value",
"SURF_RESEARCH_READ_CONCURRENCY": "your-value",
"SURF_RESEARCH_QUERY_TIMEOUT_MS": "your-value",
"GITHUB_TOKEN": "your-value",
"SURF_LOCALE": "your-value",
"SURF_TZ": "your-value",
"SURF_HEADLESS": "your-value",
"SURF_IDLE_CLOSE_MS": "your-value",
"SURF_ALLOW_PRIVATE": "your-value",
"SURF_LLM_HEAL": "your-value",
"SURF_LLM_PROVIDER": "your-value",
"SURF_LLM_MODEL": "your-value",
"ANTHROPIC_API_KEY": "your-value",
"ORCAROUTER_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.
SURF_SEARCH_PROVIDER envSURF_SCHOLAR_PROVIDER envSURF_BROWSER_ENGINE envCHROME_PATH envSURF_PROFILE_ROOT envSURF_RESEARCH envSURF_RETRIEVAL_MODE envSURF_RESEARCH_ROOT envSURF_RESEARCH_VECTOR_MODEL envSURF_RESEARCH_VECTOR_LOW_MEMORY envSURF_RESEARCH_VECTOR_THREADS envSURF_RESEARCH_REPO_AUTO envSURF_RESEARCH_REPO_AUTO_MAX_MB envSURF_RESEARCH_REPO_AUTO_MAX_FILES envSURF_RESEARCH_BROKER_IDLE_MS envSURF_RESEARCH_READ_CONCURRENCY envSURF_RESEARCH_QUERY_TIMEOUT_MS envSURF_LOCALE envSURF_TZ envSURF_HEADLESS envSURF_IDLE_CLOSE_MS envSURF_ALLOW_PRIVATE envSURF_LLM_HEAL envSURF_LLM_PROVIDER envSURF_LLM_MODEL envThese 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 9, 2026
The registry name was verified with the GitHub account HarimxChoi, 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: SEARCH_API, GITHUB_TOKEN, ANTHROPIC_API_KEY, ORCAROUTER_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 (1.1.6) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js 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.
English | Korean
Google Surf MCP searches the web, papers, and codebases, then uses Auto Ontology to organize what you read into a local knowledge graph. Start without an API key or a separate database server, and build a personal knowledge base from connected sources and project records.
Sponsored by SearchApi
Stack: TypeScript, Chrome/Playwright, LiteParse, Tree-sitter, SurrealDB, Multilingual E5, and Graphology. Architecture
Requires Node.js 22.12+ and Chrome or Chromium for browser search. CI covers Node 22 and 24 on Linux and Windows.
Register the server in your MCP client:
{
"mcpServers": { "google-surf": { "command": "npx", "args": ["-y", "google-surf-mcp@latest"] } } }
Restart the client. Auto Ontology is enabled by default; the local embedding model may be downloaded when you first index content. For search and extraction without the database or embedding model, set SURF_RESEARCH=false in the server environment.
Client setup, local installation, and SearchApi configuration
Browser search is the default. SearchApi is an optional primary provider or fallback; it requires your own account, key, and credits.
Optional LLM-assisted repair and OrcaRouter setup
Seven tools are available with Auto Ontology enabled:
| Tool | Use |
|---|---|
search / search_parallel | Discover new web sources and read them in the same call with extract_mode. |
scholar_search | Find paper-specific Google Scholar metadata. |
extract | Read a web page, PDF, or repository from an already-known URL. |
project_memory_search | Local-only search of indexed project knowledge; no live web search. |
project_memory | Manage projects, save research records, index user-approved local folders, and export graphs. |
health | Inspect search and local runtime status. |
Providing project_id to web search does not make it local-only. Use project_memory_search for stored knowledge.
Tool parameters, limits, follow-up reads, and repeatable source collection
Search and extraction results are saved automatically. Plans, experiments, failures, and decisions are linked when your agent records them through project_memory.
Web + papers + code + project records
| Local knowledge graph | Hybrid retrieval + source-backed evidence
Projects stay separate by default. Selected projects can link knowledge using matching DOIs, repository URLs, or explicitly registered aliases; original records are not merged or moved.
Create a standalone graph explorer for one project:
project_memory(action="export", project_id="my-project", export_format="html", export_view="graph")
The HTML explorer includes PKM, lineage, and ontology views with PNG/JSON downloads. DOT and Neo4j exports are also available. The feature was renamed from Research to Auto Ontology; existing SURF_RESEARCH* settings, project_memory* tools, CLI names, and storage paths still work.
Ontology, lineage, code indexing, and export details
Live web result ranking on 32 held-out queries:
| Ranking | nDCG@5 | MRR | Precision@5 |
|---|---|---|---|
| Original provider ranking | 0.8949 | 0.8203 | 0.6375 |
| BM25 + RRF | 0.8971 | 0.8203 | 0.6500 |
Evaluation conditions, retrieval results, and resource measurements
| Guide | Contents |
|---|---|
| Getting started | Installation, clients, browser search, SearchApi setup |
| Tools and workflows | Tool parameters, limits, evidence responses, source collection |
| Auto Ontology | Storage, code structure, graph retrieval, lineage, exports |
| Configuration | Environment variables, resource settings, OrcaRouter |
| Operations and security | CAPTCHA, cache cleanup, CLI, privacy, optional Codex hooks |
| Benchmarks | Measurements, conditions, and evaluation boundaries |
Contributing · Changelog · MIT License