Searches the web through Google, Brave, Serper, SearXNG or SearchAPI.io, reads full pages, and runs multi-source research with citations.
接入配置
选择客户端,复制配置,再按项目文档补齐环境变量。
claude mcp add web-researcher --env GOOGLE_CUSTOM_SEARCH_API_KEY='<GOOGLE_CUSTOM_SEARCH_API_KEY>' --env BRAVE_API_KEY='<BRAVE_API_KEY>' --env SERPER_API_KEY='<SERPER_API_KEY>' --env SEARCHAPI_API_KEY='<SEARCHAPI_API_KEY>' --env TAVILY_API_KEY='<TAVILY_API_KEY>' --env EXA_API_KEY='<EXA_API_KEY>' --env XQUIK_API_KEY='<XQUIK_API_KEY>' --env COURTLISTENER_API_TOKEN='<COURTLISTENER_API_TOKEN>' -- 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 ghcr.io/zoharbabin/web-researcher-mcp:1.50.3~/.codex/config.toml
[mcp_servers.web-researcher]
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", "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>" }
# codex mcp add web-researcher --env GOOGLE_CUSTOM_SEARCH_API_KEY='<GOOGLE_CUSTOM_SEARCH_API_KEY>' --env BRAVE_API_KEY='<BRAVE_API_KEY>' --env SERPER_API_KEY='<SERPER_API_KEY>' --env SEARCHAPI_API_KEY='<SEARCHAPI_API_KEY>' --env TAVILY_API_KEY='<TAVILY_API_KEY>' --env EXA_API_KEY='<EXA_API_KEY>' --env XQUIK_API_KEY='<XQUIK_API_KEY>' --env COURTLISTENER_API_TOKEN='<COURTLISTENER_API_TOKEN>' -- 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 ghcr.io/zoharbabin/web-researcher-mcp:1.50.3~/.cursor/mcp.json
{
"mcpServers": {
"web-researcher": {
"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",
"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>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"web-researcher": {
"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",
"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>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"web-researcher": {
"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",
"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>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"web-researcher": {
"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",
"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>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"web-researcher": {
"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",
"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>"
}
}
}
}需要的环境变量
GOOGLE_CUSTOM_SEARCH_API_KEYBRAVE_API_KEYSERPER_API_KEYSEARCHAPI_API_KEYTAVILY_API_KEYEXA_API_KEYXQUIK_API_KEYCOURTLISTENER_API_TOKEN
把占位值换成你自己的密钥;不要把密钥提交到代码仓库。