【免费下载链接】mcp-searxng
Private web search for AI assistants via SearXNG — supports Claude, Cursor, and any MCP client
web_url_read是 mcp-searxng 中让 AI 助手读取网页和 PDF 的核心工具:抓取任意 URL 并返回可读 Markdown,还能用section按标题精准截取章节、用readHeadings先看页面结构。本文讲清它的全部参数与实战用法。
快速上手:先搜索,再读页
mcp-searxng 是运行在 SearXNG 之上的私有 Web 搜索 MCP 服务器,连接 Claude、Cursor 等任意 MCP 客户端。典型工作流只有两步:
- 调用
searxng_web_search搜索,从结果里挑出目标链接 - 调用
web_url_read并传入该 URL,拿到整页可读内容
⚡ 注意:web_url_read直接抓取目标网站,不经过 SearXNG,因此搜索和读取可以完全独立测试。
web_url_read 的 6 个参数速查表
工具定义见 src/types.ts,完整参数说明见官方工具文档 docs/tools.md:
| 参数 | 必填 | 类型 | 作用 |
|---|---|---|---|
url | ✅ | string | 要抓取并处理的 URL |
startChar | 否 | number | 从第几个字符开始提取(默认 0) |
maxLength | 否 | number | 最多返回多少字符 |
section | 否 | string | 提取指定标题下方的内容 |
paragraphRange | 否 | string | 返回指定段落范围,如'1-5'、'3'、'10-' |
readHeadings | 否 | boolean | 只返回标题列表,不返回正文 |
多参数同时给出时的处理顺序(见 applyPaginationOptions):
readHeadings→section→paragraphRange→startChar/maxLength
也就是说:先用标题定位章节,再做段落过滤,最后按字符数截断——这正好构成"由粗到细"的读取策略。
如何查看页面结构:readHeadings 参数
面对长文档,直接全量读取既慢又浪费上下文。推荐的第一招是"先看目录,再取内容":
{"url":"https://example.com/guide","readHeadings":true}返回该页所有 Markdown 标题(每行一个),页面没有标题时返回提示No headings found in the content.。
📌 两个重要规则:
readHeadings是独立模式:一旦设为true,其他提取参数(section、maxLength等)一律不生效- 标题列表用于挑选下一轮
section要用的关键词
按标题定位章节:section 参数
section是"按标题定位内容"的关键,提取逻辑见 extractSection:
- 匹配规则:在所有标题行中查找包含
section文本的那一行(#到######均可),匹配不区分大小写,传部分文字也能命中 - 截取范围:从命中标题开始,一直到下一个同级或更高级的标题为止;子标题(更深层级)的内容会一并包含
例如某文档的结构是:
# Getting Started ## Installation ## First Search # Troubleshooting传"section":"installation"会返回## Installation到## First Search之间的全部内容,而不是整页。
📐 一个实用组合:先用readHeadings:true确认标题原文,第二次调用再用section取章节。两步调用成本远低于"全文拉回来再筛选",对 AI 助手的上下文消耗尤其友好。
若标题没找到,工具会明确返回:
Section "xxx" not found in the content.此时回到标题列表核对原文即可,不必盲目重试。
读取 PDF:文本提取规则与限制
web_url_read对application/pdf走专门的解析路径(src/pdf-reader.ts),在独立、资源受限的 worker 中提取文本:
| 限制项 | 默认值 | 说明 |
|---|---|---|
| 页数上限 | 500 页 | 超出直接提示,不硬解析 |
| 输入/文本大小上限 | 16 MiB | 固定天花板,与URL_READ_MAX_CONTENT_LENGTH_BYTES取较小值 |
| 解析超时 | 30 秒 | 下载完成后单独计时 |
| 并发解析 | 2 个 | 同一进程最多 2 份 PDF 并行,多出的请求返回 busy |
📄 需要特别注意:不支持 OCR。纯扫描版/图片型 PDF 会返回说明文字而非正文:
No extractable text (likely a scanned/image PDF; OCR is not supported).其他常见 PDF 提示及含义:
| 提示文案 | 含义与处理 |
|---|---|
Password-protected PDF cannot be read. | 加密 PDF,先解除密码 |
PDF has too many pages to extract safely (observed: X; limit: 500). | 页数超限,换用更短的文档 |
PDF text extraction is busy; try again later. | 解析槽位已满,稍后重试 |
Response declared application/pdf but did not contain a PDF document. | 服务端 Content-Type 标错,实际可能是中间页/错误页 |
提取成功的 PDF 文本会以text代码块形式返回,与网页 Markdown 一样可以继续套用section等过滤参数。
分页与段落过滤:控制返回量
字符级分页——大页面可以分段读取,例如先取前 4000 字符:
{"url":"https://example.com/article","maxLength":4000}接着用startChar读后续部分,实现翻页式阅读。注意maxLength只限制返回文本长度,不会降低下载大小限制。
段落级过滤——paragraphRange按空行分隔的段落计数,支持三种写法:
'3':只要第 3 段'1-5':第 1 到 5 段'10-':第 10 段直到结尾
序号越界时返回Paragraph range "10-" is invalid or out of bounds.
💡 优先级提示:section命中后再叠加paragraphRange或maxLength,就是"章节 + 片段"的精细组合,适合只要某章开头几句话的场景。
web_url_read 常见报错与解决
| 症状 | 原因 | 解决方式 |
|---|---|---|
Content too large: ... exceeds the ... limit. | 页面超过 5 MiB 默认上限(可经URL_READ_MAX_CONTENT_LENGTH_BYTES调整) | readHeadings/section只能裁剪输出、救不了超限下载,需调大配置 |
Website returned empty content. | 页面转 Markdown 后为空 | 确认 URL 是否渲染依赖脚本,或换搜索到的其他来源 |
Unsupported content type: application/zip. ... | 二进制/媒体/压缩包被有意拒绝 | 这是设计行为,换文档类 URL |
| 私有/内网地址被拦截 | 默认安全边界(含重定向目标) | 确有需求时按配置文档开启MCP_HTTP_ALLOW_PRIVATE_URLS |
| 同一 URL 反复读内容不变 | 进程内有本地缓存,分页参数在缓存上重新切片 | 等待缓存过期或重启进程,属正常行为 |
完整的排错对照表见 docs/troubleshooting.md,各限制项的默认值见 CONFIGURATION.md。
支持的内容类型一览
web_url_read按 Content-Type 智能分流(分类逻辑见 classifyContentType):
| 内容类型 | 处理方式 |
|---|---|
HTML(text/html、application/xhtml+xml) | 转换为 Markdown |
JSON(application/json、*+json) | 美化后放入代码块 |
| 纯文本、YAML、TOML、XML | 以可读代码块原样返回 |
| 提取文本(有限制,见上文) | |
| 图片、音视频、压缩包等二进制 | 拒绝读取,返回简短说明 |
进阶:应对反爬的浏览器求解器
若目标站有访问挑战,mcp-searxng 可配置 FlareSolverr / Byparr 浏览器求解器:先获取 cookie 与 User-Agent,再由web_url_read用该会话二次抓取。相关控制与预算(预检、超时、失败回退)见 docs/browser-solver-deployment.md 与 CONFIGURATION.md。求解器只解决"拿到会话",不保证目标页放行,排错时请区分获取阶段与回放阶段。
相关文档与源码
- 工具参数与限制全表:docs/tools.md
- 研究工作流(搜索 + 交叉验证 + 引用):docs/research-workflow.md
- 工具注册入口:src/index.ts
- 读取与转换主逻辑:src/url-reader.ts
- PDF 提取 worker 与常量:src/pdf-reader.ts
- URL 安全边界(私有地址拦截):src/url-security.ts
【免费下载链接】mcp-searxng
Private web search for AI assistants via SearXNG — supports Claude, Cursor, and any MCP client
相关推荐
CVAT 计算机视觉标注工具:10分钟从零到跑通的实战手册
CVAT 计算机视觉标注工具:10分钟从零到跑通的实战手册 手动标 500 张图,标到第三小时手已经开始抖?数据标注往往是 AI 项目里最卡脖子的环节。CVAT
数据标注计算机视觉数据集AI 应用后端前端如何用Chrome Regex Search实现网页精准内容定位?
如何用Chrome Regex Search实现网页精准内容定位? 面向开发者与研究者的正则表达式搜索实践指南 🔍 痛点场景:当传统查找功能成为效率瓶颈 场景
如何用Chrome正则表达式搜索解决网页内容精准定位难题?
如何用Chrome正则表达式搜索解决网页内容精准定位难题? 你是否曾在浏览网页时,需要快速找到特定格式的信息却无从下手?比如从冗长的文章中提取邮箱、从数据表格里
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考