使用说明
简单网络搜索mcp
零配置MCP服务器,使任何LLM都能够 搜索网页 和 阅读网页.没有API密钥,没有浏览器安装,没有配置文件-只需运行它。
npx simple-web-search-mcp --log
特征
- 两个工具:
search_web(搜索互联网)和read_url(阅读任何网页) - 9搜索引擎 --以可配置的顺序尝试具有自动容错功能的引擎:DuckDuckGo、Brave、Bing、Google、Ecosia、Startpage、Qwant、Yahoo、Yandex
/search和/read提示 --在Claude Desktop和其他MCP客户端中工作的slash命令- 速率限制 --429/503上具有自动重试+指数回退的每台主机节流
- 缺省安全 --输入验证、URL方案实施(仅限http/https)、HTML剥离、控制字符删除、标记注入转义、内容围栏
- 默认情况下为零配置 --开箱即用,可通过CLI标志、环境变量或配置文件进行完全自定义
- 可选文件日志记录 --使用
--log将每日日志文件写入~/.simple-web-search-mcp/logs/ - 没有API密钥 --所有引擎都通过纯HTTP工作
- 不安装浏览器 --内置Node.js的纯HTTP
fetch+干杯 - 清洁降价输出 --LLM实际可以使用的结构化结果
设置
光标
添加 .cursor/mcp.json:
{
"mcpServers": {
"web-search": {
"command": "npx",
"args": ["-y", "simple-web-search-mcp", "--log"]
}
}
}
克劳德桌面
添加 claude_desktop_config.json:
{
"mcpServers": {
"web-search": {
"command": "npx",
"args": ["-y", "simple-web-search-mcp", "--log"]
}
}
}
具有自定义选项
{
"mcpServers": {
"web-search": {
"command": "npx",
"args": [
"-y", "simple-web-search-mcp",
"--log",
"--engines", "brave,duckduckgo",
"--max-results", "5"
]
}
}
}
工具
search_web
在互联网上搜索并获得降价结果。按顺序尝试配置发动机,但在出现故障时失败。您可以请求每次呼叫首先尝试特定的引擎。默认情况下,结果包括 [1], [2],…作为每个结果标题和代码段旁边的markdown链接(链接到源URL),加上 参考文献 底部截面;使用config禁用 citations: false 或 --no-cite,或强行继续 --cite.
| 参数 | 类型 | 说明 |
|---|---|---|
query |
string | 搜索查询 |
prefer_engine |
string | 可选。先尝试发动机(例如。 duckduckgo, brave, bing). |
include_citations |
boolean | 可选。如果设置,则覆盖此调用的服务器配置(包括/省略引用)。 |
think |
boolean | 可选。如果为真,查询多个引擎,按URL合并,并返回编译的研究结果(前3个引擎)。 |
read_url
获取一个网页,并将其内容作为干净、可读的标记返回。剥离导航、广告和样板。
| 参数 | 类型 | 说明 |
|---|---|---|
url |
string | 要获取的URL(例如。 https://...) |
Slash命令(提示)
支持提示的MCP客户端将显示以下内容 / 命令:
| 命令 | 描述 |
|---|---|
/search <input> |
搜索网络。键入您的查询;可选地以标志结尾: -engine, -cite, -no-cite, -think (例如。 weather --brave, topic --think 深入研究)。提示标志覆盖MCP/服务器配置。 |
/read <url> |
阅读网页并总结其内容 |
标志/搜索 --在以下位置使用一个或两个连字符 结束 您的查询。这些将覆盖该请求的服务器配置:
- 发动机:
-brave,--dd等等。(先试试那台发动机) - 引用:
--cite(包括参考文献),--no-cite(省略参考文献) - 思考(研究):
--think或-think--在多个引擎上运行相同的查询(前3个),按URL合并结果,并使用“Found via”列返回编译后的研究。用于深入研究。
每个搜索响应都以 通过[搜索引擎][表情符号] (例如。 via DuckDuckGo :D);每个读取响应都以开头 通过[URL][:].
启用引用后,指示模型包括 内联引用 [1] 、[2]等(在该来源的句子或事实旁边)以及 参考文献 底部截面;每个数字都匹配相同的来源(维基百科风格)。
如果你没有看到“通过…”或引用链接: 模型没有调用 search_web 工具(例如“模型未能生成工具调用”)。请使用支持工具/函数调用的模型,或重试查询。当工具被实际调用时,服务器总是返回“通过…”和引用。
| 旗帜(满) | 缩写 | 发动机 |
|---|---|---|
--duckduckgo |
--dd |
DuckDuckGo |
--brave |
--b |
勇敢 |
--bing |
--bi |
Bing |
--google |
--g 谷歌 |
|
--ecosia |
--ec |
Ecosia |
--startpage |
--sp |
起始页 |
--qwant |
--qw |
Qwant |
--yahoo |
--yh |
雅虎 |
--yandex |
--ya |
Yandex |
搜索引擎
发动机按顺序试运转。如果第一个引擎出现故障或没有返回结果,则会自动尝试下一个引擎。
| ID | 姓名 | 备注 |
|---|---|---|
duckduckgo |
DuckDuckGo | 默认首选。HTML端点,非常可靠 |
brave |
勇敢搜索 | 以隐私为重点的良好替代方案 |
bing |
Bing | 微软的搜索引擎 |
google |
谷歌 | 使用普通HTTP(验证码)可能不太可靠 |
ecosia |
Ecosia | Bing驱动,用广告收入种树 |
startpage |
首页 | 带有隐私的谷歌搜索结果可能需要Cookie |
qwant |
Qwant | 欧洲隐私引擎(使用Lite HTML) |
yahoo |
雅虎 | 经典搜索引擎,打开重定向网址 |
yandex |
Yandex | 支持英语的俄罗斯搜索引擎 |
默认顺序: duckduckgo, brave, bing, google, ecosia, startpage, qwant, yahoo, yandex
自定义 --engines brave,duckduckgo (CLI), WEB_SEARCH_ENGINES=brave,duckduckgo (env),或 "engines": ["brave", "duckduckgo"] (配置文件)。
每个引擎都有自己的解析器 src/engines/ --易于维护、修复或添加新的。
配置
一切都是开箱即用的。通过三层覆盖任何设置(最高优先级优先):
1.CLI标志
npx simple-web-search-mcp --engines brave,duckduckgo --max-results 5 --timeout 20000
| 标志 | 默认值 | 描述 |
|---|---|---|
--log |
off | 将日志写入 ~/.simple-web-search-mcp/logs/ (每日文件 YYYY-MM-DD.log) |
--cite |
-- | 在搜索结果中包含维基百科风格的引用(覆盖配置) |
--no-cite |
-- | 在搜索结果中省略引用部分(覆盖配置) |
--engines <list> |
所有9个引擎 | 以逗号分隔的引擎顺序 |
--max-results <n> |
10 |
要返回的最大搜索结果数 |
--timeout <ms> |
15000 |
HTTP请求超时 |
--rate-limit <ms> |
1000 |
对同一主机的请求之间的最小延迟 |
--max-retries <n> |
3 |
重试429/503/网络错误 |
--max-content-length <n> |
12000 |
要返回的页面内容的最大字符数 |
--user-agent <string> |
Chrome UA | 自定义用户代理标头 |
--config <path> |
-- | JSON配置文件的路径 |
2.环境变量
WEB_SEARCH_ENGINES=brave,duckduckgo WEB_SEARCH_MAX_RESULTS=5 npx simple-web-search-mcp
| 变量 | 映射到 |
|---|---|
WEB_SEARCH_LOG |
启用文件日志记录(设置为 1, true,或 yes) |
WEB_SEARCH_CITATIONS |
citations — 1/true/yes 为了包括参考文献, 0/false/no 省略 |
WEB_SEARCH_ENGINES |
engines |
WEB_SEARCH_MAX_RESULTS |
maxResults |
WEB_SEARCH_TIMEOUT |
timeoutMs |
WEB_SEARCH_RATE_LIMIT |
rateLimitMs |
WEB_SEARCH_MAX_RETRIES |
maxRetries |
WEB_SEARCH_MAX_CONTENT_LENGTH |
maxContentLength |
WEB_SEARCH_USER_AGENT |
userAgent |
WEB_SEARCH_CONFIG |
配置文件的路径 |
3.配置文件
服务器按以下顺序查找JSON配置文件:
--config <path>(CLI标志)$WEB_SEARCH_CONFIG(env 是)./.simple-web-search.json(项目本地)~/.simple-web-search/config.json(用户级别)
示例配置文件:
{
"engines": ["brave", "duckduckgo", "bing"],
"maxResults": 5,
"timeoutMs": 20000,
"rateLimitMs": 2000,
"maxRetries": 2,
"maxContentLength": 8000,
"citations": true
}
集 "citations": false 在搜索结果中省略“引用”部分。在运行时使用覆盖 --cite 或 --no-cite.
安全
所有输入和输出都经过消毒:
- 输入验证 --查询被修剪、长度限制(400个字符)和删除控制字符
- URL验证 --只有
http:和https:方案是允许的;javascript:,data:,file:等被阻塞 - HTML剥离 --在输出之前,从提取的文本中删除所有HTML标记
- 控制字符删除 --从所有输出中删除二进制/控制字符
- Markdown注入转义 --抓取标题中的特殊字符被转义,因此它们无法破坏markdown链接语法
- 内容物围栏 --抓取的页面内容用视觉分隔符清晰地分隔,这样LLM就可以将其与指令区分开
- 输出为纯文本 --服务器只返回markdown格式的文本,从不返回原始HTML或可执行内容
速率限制
内置的速率限制保护您和搜索引擎:
- 每台主机限制 --强制对同一主机名的请求之间的最小延迟(默认为1秒)
- 自动重试 --重试HTTP 429(请求太多)和503(服务不可用)
- 指数退避 --重试之间间隔1秒、2秒、4秒、8秒(上限为15秒)
- 尊重
Retry-After--尊重服务器的Retry-After标头(如果存在) - 可配置的 --调整
rateLimitMs和maxRetries满足您的需求
项目结构
src/
index.ts MCP server — tools, prompts, startup
config.ts Config loading (CLI > env > file > defaults)
logger.ts Optional file logging (~/.simple-web-search-mcp/logs, enabled with --log)
parse-search-input.ts Parses /search input for trailing --engine / --abbrev flags
search.ts SearchClient — orchestrates engines + page reading
sanitize.ts Input/output sanitization
rate-limiter.ts Per-host throttling + retry with backoff
engines/
types.ts SearchEngine interface
index.ts Engine registry + default order
duckduckgo.ts DuckDuckGo HTML parser
brave.ts Brave Search parser
bing.ts Bing parser
google.ts Google parser
ecosia.ts Ecosia parser
startpage.ts Startpage parser
qwant.ts Qwant Lite parser
yahoo.ts Yahoo parser
yandex.ts Yandex parser
tests/
sanitize.test.ts Sanitization unit tests
engines.test.ts Engine parser unit tests (all 9 engines)
config.test.ts Config loading unit tests
rate-limiter.test.ts Rate limiter unit tests
fixtures/ Mock HTML for each engine
需求
- Node.js 18或更高版本
发展
git clone <repo-url>
cd simple-web-search-mcp
npm install
npm run build
npm start
脚本
| 脚本 | 描述 |
|---|---|
npm test |
运行单元测试(vitest) |
npm run test:watch |
在监视模式下运行测试 |
npm run lint |
带Biome的棉绒 |
npm run lint:fix |
自动修复棉绒问题 |
npm run format |
带生物特征的格式 |
npm run docs |
生成API文档(TypeDoc) |
npm run build |
编译TypeScript |
许可证
麻省理工学院