Search / io.github.zoharbabin/web-researcher-mcp
Web Researcher MCP
L0· runs locallyYour AI research assistant that cites real sources and stays honest
v1.50.3 · active · repository · descriptor JSON · versions
Search / io.github.zoharbabin/web-researcher-mcp
L0· runs locallyYour AI research assistant that cites real sources and stays honest
v1.50.3 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"web-researcher-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_CUSTOM_SEARCH_API_KEY",
"-e",
"BRAVE_API_KEY",
"-e",
"SERPER_API_KEY",
"-e",
"SEARCHAPI_API_KEY",
"-e",
"TAVILY_API_KEY",
"-e",
"EXA_API_KEY",
"-e",
"XQUIK_API_KEY",
"-e",
"COURTLISTENER_API_TOKEN",
"-e",
"FRED_API_KEY",
"ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${GOOGLE_CUSTOM_SEARCH_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"SERPER_API_KEY": "${SERPER_API_KEY}",
"SEARCHAPI_API_KEY": "${SEARCHAPI_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"XQUIK_API_KEY": "${XQUIK_API_KEY}",
"COURTLISTENER_API_TOKEN": "${COURTLISTENER_API_TOKEN}",
"FRED_API_KEY": "${FRED_API_KEY}"
}
}
}
}claude mcp add web-researcher-mcp -e "GOOGLE_CUSTOM_SEARCH_API_KEY=${GOOGLE_CUSTOM_SEARCH_API_KEY}" -e "BRAVE_API_KEY=${BRAVE_API_KEY}" -e "SERPER_API_KEY=${SERPER_API_KEY}" -e "SEARCHAPI_API_KEY=${SEARCHAPI_API_KEY}" -e "TAVILY_API_KEY=${TAVILY_API_KEY}" -e "EXA_API_KEY=${EXA_API_KEY}" -e "XQUIK_API_KEY=${XQUIK_API_KEY}" -e "COURTLISTENER_API_TOKEN=${COURTLISTENER_API_TOKEN}" -e "FRED_API_KEY=${FRED_API_KEY}" -- docker run -i --rm -e GOOGLE_CUSTOM_SEARCH_API_KEY -e BRAVE_API_KEY -e SERPER_API_KEY -e SEARCHAPI_API_KEY -e TAVILY_API_KEY -e EXA_API_KEY -e XQUIK_API_KEY -e COURTLISTENER_API_TOKEN -e FRED_API_KEY ghcr.io/zoharbabin/web-researcher-mcp:1.50.3[mcp_servers.web-researcher-mcp]
command = "docker"
args = ["run", "-i", "--rm", "-e", "GOOGLE_CUSTOM_SEARCH_API_KEY", "-e", "BRAVE_API_KEY", "-e", "SERPER_API_KEY", "-e", "SEARCHAPI_API_KEY", "-e", "TAVILY_API_KEY", "-e", "EXA_API_KEY", "-e", "XQUIK_API_KEY", "-e", "COURTLISTENER_API_TOKEN", "-e", "FRED_API_KEY", "ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"]
env = { "GOOGLE_CUSTOM_SEARCH_API_KEY" = "${GOOGLE_CUSTOM_SEARCH_API_KEY}", "BRAVE_API_KEY" = "${BRAVE_API_KEY}", "SERPER_API_KEY" = "${SERPER_API_KEY}", "SEARCHAPI_API_KEY" = "${SEARCHAPI_API_KEY}", "TAVILY_API_KEY" = "${TAVILY_API_KEY}", "EXA_API_KEY" = "${EXA_API_KEY}", "XQUIK_API_KEY" = "${XQUIK_API_KEY}", "COURTLISTENER_API_TOKEN" = "${COURTLISTENER_API_TOKEN}", "FRED_API_KEY" = "${FRED_API_KEY}" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"web-researcher-mcp": {
"type": "local",
"command": [
"docker",
"run",
"-i",
"--rm",
"-e",
"GOOGLE_CUSTOM_SEARCH_API_KEY",
"-e",
"BRAVE_API_KEY",
"-e",
"SERPER_API_KEY",
"-e",
"SEARCHAPI_API_KEY",
"-e",
"TAVILY_API_KEY",
"-e",
"EXA_API_KEY",
"-e",
"XQUIK_API_KEY",
"-e",
"COURTLISTENER_API_TOKEN",
"-e",
"FRED_API_KEY",
"ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
],
"enabled": true,
"environment": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "{env:GOOGLE_CUSTOM_SEARCH_API_KEY}",
"BRAVE_API_KEY": "{env:BRAVE_API_KEY}",
"SERPER_API_KEY": "{env:SERPER_API_KEY}",
"SEARCHAPI_API_KEY": "{env:SEARCHAPI_API_KEY}",
"TAVILY_API_KEY": "{env:TAVILY_API_KEY}",
"EXA_API_KEY": "{env:EXA_API_KEY}",
"XQUIK_API_KEY": "{env:XQUIK_API_KEY}",
"COURTLISTENER_API_TOKEN": "{env:COURTLISTENER_API_TOKEN}",
"FRED_API_KEY": "{env:FRED_API_KEY}"
}
}
}
}{
"mcpServers": {
"web-researcher-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_CUSTOM_SEARCH_API_KEY",
"-e",
"BRAVE_API_KEY",
"-e",
"SERPER_API_KEY",
"-e",
"SEARCHAPI_API_KEY",
"-e",
"TAVILY_API_KEY",
"-e",
"EXA_API_KEY",
"-e",
"XQUIK_API_KEY",
"-e",
"COURTLISTENER_API_TOKEN",
"-e",
"FRED_API_KEY",
"ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${GOOGLE_CUSTOM_SEARCH_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"SERPER_API_KEY": "${SERPER_API_KEY}",
"SEARCHAPI_API_KEY": "${SEARCHAPI_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"XQUIK_API_KEY": "${XQUIK_API_KEY}",
"COURTLISTENER_API_TOKEN": "${COURTLISTENER_API_TOKEN}",
"FRED_API_KEY": "${FRED_API_KEY}"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=web-researcher-mcp&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyJydW4iLCItaSIsIi0tcm0iLCItZSIsIkdPT0dMRV9DVVNUT01fU0VBUkNIX0FQSV9LRVkiLCItZSIsIkJSQVZFX0FQSV9LRVkiLCItZSIsIlNFUlBFUl9BUElfS0VZIiwiLWUiLCJTRUFSQ0hBUElfQVBJX0tFWSIsIi1lIiwiVEFWSUxZX0FQSV9LRVkiLCItZSIsIkVYQV9BUElfS0VZIiwiLWUiLCJYUVVJS19BUElfS0VZIiwiLWUiLCJDT1VSVExJU1RFTkVSX0FQSV9UT0tFTiIsIi1lIiwiRlJFRF9BUElfS0VZIiwiZ2hjci5pby96b2hhcmJhYmluL3dlYi1yZXNlYXJjaGVyLW1jcDoxLjUwLjMiXSwiZW52Ijp7IkdPT0dMRV9DVVNUT01fU0VBUkNIX0FQSV9LRVkiOiIke0dPT0dMRV9DVVNUT01fU0VBUkNIX0FQSV9LRVl9IiwiQlJBVkVfQVBJX0tFWSI6IiR7QlJBVkVfQVBJX0tFWX0iLCJTRVJQRVJfQVBJX0tFWSI6IiR7U0VSUEVSX0FQSV9LRVl9IiwiU0VBUkNIQVBJX0FQSV9LRVkiOiIke1NFQVJDSEFQSV9BUElfS0VZfSIsIlRBVklMWV9BUElfS0VZIjoiJHtUQVZJTFlfQVBJX0tFWX0iLCJFWEFfQVBJX0tFWSI6IiR7RVhBX0FQSV9LRVl9IiwiWFFVSUtfQVBJX0tFWSI6IiR7WFFVSUtfQVBJX0tFWX0iLCJDT1VSVExJU1RFTkVSX0FQSV9UT0tFTiI6IiR7Q09VUlRMSVNURU5FUl9BUElfVE9LRU59IiwiRlJFRF9BUElfS0VZIjoiJHtGUkVEX0FQSV9LRVl9In19"
}{
"servers": {
"web-researcher-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_CUSTOM_SEARCH_API_KEY",
"-e",
"BRAVE_API_KEY",
"-e",
"SERPER_API_KEY",
"-e",
"SEARCHAPI_API_KEY",
"-e",
"TAVILY_API_KEY",
"-e",
"EXA_API_KEY",
"-e",
"XQUIK_API_KEY",
"-e",
"COURTLISTENER_API_TOKEN",
"-e",
"FRED_API_KEY",
"ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${GOOGLE_CUSTOM_SEARCH_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"SERPER_API_KEY": "${SERPER_API_KEY}",
"SEARCHAPI_API_KEY": "${SEARCHAPI_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"XQUIK_API_KEY": "${XQUIK_API_KEY}",
"COURTLISTENER_API_TOKEN": "${COURTLISTENER_API_TOKEN}",
"FRED_API_KEY": "${FRED_API_KEY}"
}
}
}
}{
"mcpServers": {
"web-researcher-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_CUSTOM_SEARCH_API_KEY",
"-e",
"BRAVE_API_KEY",
"-e",
"SERPER_API_KEY",
"-e",
"SEARCHAPI_API_KEY",
"-e",
"TAVILY_API_KEY",
"-e",
"EXA_API_KEY",
"-e",
"XQUIK_API_KEY",
"-e",
"COURTLISTENER_API_TOKEN",
"-e",
"FRED_API_KEY",
"ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
],
"env": {
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${GOOGLE_CUSTOM_SEARCH_API_KEY}",
"BRAVE_API_KEY": "${BRAVE_API_KEY}",
"SERPER_API_KEY": "${SERPER_API_KEY}",
"SEARCHAPI_API_KEY": "${SEARCHAPI_API_KEY}",
"TAVILY_API_KEY": "${TAVILY_API_KEY}",
"EXA_API_KEY": "${EXA_API_KEY}",
"XQUIK_API_KEY": "${XQUIK_API_KEY}",
"COURTLISTENER_API_TOKEN": "${COURTLISTENER_API_TOKEN}",
"FRED_API_KEY": "${FRED_API_KEY}"
}
}
}
}extensions:
"web-researcher-mcp":
enabled: true
name: "web-researcher-mcp"
type: stdio
cmd: "docker"
args:
- "run"
- "-i"
- "--rm"
- "-e"
- "GOOGLE_CUSTOM_SEARCH_API_KEY"
- "-e"
- "BRAVE_API_KEY"
- "-e"
- "SERPER_API_KEY"
- "-e"
- "SEARCHAPI_API_KEY"
- "-e"
- "TAVILY_API_KEY"
- "-e"
- "EXA_API_KEY"
- "-e"
- "XQUIK_API_KEY"
- "-e"
- "COURTLISTENER_API_TOKEN"
- "-e"
- "FRED_API_KEY"
- "ghcr.io/zoharbabin/web-researcher-mcp:1.50.3"
envs:
"GOOGLE_CUSTOM_SEARCH_API_KEY": "${GOOGLE_CUSTOM_SEARCH_API_KEY}"
"BRAVE_API_KEY": "${BRAVE_API_KEY}"
"SERPER_API_KEY": "${SERPER_API_KEY}"
"SEARCHAPI_API_KEY": "${SEARCHAPI_API_KEY}"
"TAVILY_API_KEY": "${TAVILY_API_KEY}"
"EXA_API_KEY": "${EXA_API_KEY}"
"XQUIK_API_KEY": "${XQUIK_API_KEY}"
"COURTLISTENER_API_TOKEN": "${COURTLISTENER_API_TOKEN}"
"FRED_API_KEY": "${FRED_API_KEY}"
timeout: 300
Placeholders to fill from your own secret store: ${GOOGLE_CUSTOM_SEARCH_API_KEY}, ${BRAVE_API_KEY}, ${SERPER_API_KEY}, ${SEARCHAPI_API_KEY}, ${TAVILY_API_KEY}, ${EXA_API_KEY}, ${XQUIK_API_KEY}, ${COURTLISTENER_API_TOKEN}, ${FRED_API_KEY}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured +updated-5d-ago -unpinned-packages(2)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/zoharbabin/web-researcher-mcp:1.50.3 | oci | unpinned | – | GOOGLE_CUSTOM_SEARCH_API_KEY, BRAVE_API_KEY, SERPER_API_KEY, SEARCHAPI_API_KEY, TAVILY_API_KEY, EXA_API_KEY, XQUIK_API_KEY, COURTLISTENER_API_TOKEN, FRED_API_KEY |
docker.io/zoharbabin/web-researcher-mcp:1.50.3 | oci | unpinned | – |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.zoharbabin/web-researcher-mcp",
"title": "Web Researcher MCP",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "1.50.3",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/zoharbabin/web-researcher-mcp:1.50.3",
"registryType": "oci",
"environmentVariables": [
{
"name": "GOOGLE_CUSTOM_SEARCH_API_KEY",
"isSecret": true,
"description": "Google Custom Search API key"
},
{
"name": "GOOGLE_CUSTOM_SEARCH_ID",
"description": "Google Programmable Search Engine ID"
},
{
"name": "SEARCH_PROVIDER",
"description": "Search provider: google, brave, serper, searxng, searchapi, duckduckgo, tavily, exa, hackernews, reddit, bluesky, github, or xquik"
},
{
"name": "SEARCH_ROUTING",
"description": "Use multiple search engines with automatic switching if one goes down (e.g. brave,google,serper)"
},
{
"name": "BRAVE_API_KEY",
"isSecret": true,
"description": "Brave Search API key"
},
{
"name": "SERPER_API_KEY",
"isSecret": true,
"description": "Serper.dev API key"
},
{
"name": "SEARCHAPI_API_KEY",
"isSecret": true,
"description": "SearchAPI.io API key"
},
{
"name": "SEARXNG_URL",
"description": "SearXNG instance URL"
},
{
"name": "TAVILY_API_KEY",
"isSecret": true,
"description": "Tavily Search API key"
},
{
"name": "EXA_API_KEY",
"isSecret": true,
"description": "Exa API key (neural/semantic web search provider)"
},
{
"name": "XQUIK_API_KEY",
"isSecret": true,
"description": "Xquik API key (metered X/Twitter post search provider)"
},
{
"name": "EDGAR_CONTACT_EMAIL",
"description": "Contact email for SEC EDGAR (enables filing_search); falls back to OPENALEX_EMAIL"
},
{
"name": "COURTLISTENER_API_TOKEN",
"isSecret": true,
"description": "CourtListener API token (legal_search works without it; a token raises the rate limit)"
},
{
"name": "FRED_API_KEY",
"isSecret": true,
"description": "FRED API key (enables econ_search for Federal Reserve economic data)"
}
]
},
{
"transport": {
"type": "stdio"
},
"identifier": "docker.io/zoharbabin/web-researcher-mcp:1.50.3",
"registryType": "oci"
}
],
"repository": {
"url": "https://github.com/zoharbabin/web-researcher-mcp",
"source": "github"
},
"description": "Your AI research assistant that cites real sources and stays honest"
}