[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"pack-detail-mcp-search-rag-tools-zh":3,"seo:pack:mcp-search-rag-tools:zh":99},{"code":4,"message":5,"data":6},200,"操作成功",{"pack":7},{"slug":8,"icon":9,"tone":10,"status":11,"status_label":12,"title":13,"description":14,"items":15,"install_cmd":98},"mcp-search-rag-tools","🔎","#0EA5E9","stable","稳定","MCP 搜索 + RAG 工具","想让 AI agent 既能搜公网又能查私有文档的开发者必装十件套：Tavily MCP 做面向 AI 的 web 搜索打底 + Exa \u002F Firecrawl 两种 backend 取舍 + omnisearch 多提供商聚合 + Perplexity Sonar API 出有引用的答案 + Citations 渲染源标 + Qdrant \u002F haiku.rag 给私有文档做向量 RAG + lnav 本地日志检索 + Ragas 评测整条链是否真的有据可查。按推荐安装顺序排列。",[16,28,38,45,51,61,68,75,83,91],{"id":17,"uuid":18,"slug":19,"title":20,"description":21,"author_name":22,"view_count":23,"vote_count":24,"lang_type":25,"type":26,"type_label":27},2818,"b2f4accc-45ba-44f3-9a1e-aea8c3096e0d","tavily-search-search-api-built-for-ai-agents","Tavily Search — Search API Built for AI Agents","Tavily Search returns LLM-ready answers from the web — not link lists. One call gets snippets, citations, optional generated answer. Free tier 1K\u002Fmo.","Tavily",309,0,"en","agent","Agent",{"id":29,"uuid":30,"slug":31,"title":32,"description":33,"author_name":34,"view_count":35,"vote_count":24,"lang_type":25,"type":36,"type_label":37},3227,"dc30fe00-f5e3-4bf2-9420-dd003ccdc950","exa-mcp-server-remote-search-tools-for-agents","Exa MCP Server — Remote Search Tools for Agents","Exa MCP Server connects clients to Exa’s hosted web\u002Fcode search tools via a remote MCP URL, with simple config for Cursor, VS Code, Claude Code, and Codex.","MCP Hub",259,"mcp","MCP",{"id":39,"uuid":40,"slug":41,"title":42,"description":43,"author_name":34,"view_count":44,"vote_count":24,"lang_type":25,"type":36,"type_label":37},3063,"79ce3827-16d5-45c4-934c-036028571fb8","firecrawl-mcp-web-search-scrape-tools","Firecrawl MCP — Web Search & Scrape Tools","Add Firecrawl MCP to your agent to search, scrape, and extract full-page content. Run via npx with an API key; fits Cursor, Claude Code, VS Code.",183,{"id":46,"uuid":47,"slug":48,"title":49,"description":50,"author_name":34,"view_count":44,"vote_count":24,"lang_type":25,"type":36,"type_label":37},3882,"5a328f21-6027-5e3e-b446-df5e659d9a41","mcp-omnisearch-unified-search-mcp-server","mcp-omnisearch — Unified Search MCP Server","Run mcp-omnisearch as an MCP server to unify Tavily, Brave, Kagi, Exa, GitHub search, and extraction tools behind one interface.",{"id":52,"uuid":53,"slug":54,"title":55,"description":56,"author_name":57,"view_count":58,"vote_count":24,"lang_type":25,"type":59,"type_label":60},2983,"25b2aa98-cc43-4d6c-b654-5baa3f3c9f62","perplexity-sonar-api-search-grounded-llm-in-one-call","Perplexity Sonar API — Search-Grounded LLM in One Call","Perplexity Sonar API returns LLM answers grounded in real-time web search with citations. Tiers: sonar \u002F sonar-pro \u002F sonar-reasoning.","Perplexity",214,"skill","Skill",{"id":62,"uuid":63,"slug":64,"title":65,"description":66,"author_name":57,"view_count":67,"vote_count":24,"lang_type":25,"type":59,"type_label":60},2985,"dd02260f-0044-4e5a-8e2d-5849c95fd587","perplexity-citations-render-source-footnotes-in-your-ui","Perplexity Citations — Render Source Footnotes in Your UI","Parse Perplexity inline citation markers ([1][2][3]) + the citations URL array into clickable footnote UI. Markdown render, hover preview.",185,{"id":69,"uuid":70,"slug":71,"title":72,"description":73,"author_name":34,"view_count":74,"vote_count":24,"lang_type":25,"type":36,"type_label":37},610,"301ce58e-1c73-48a8-af58-dfa560e8a13c","qdrant-mcp-vector-search-engine-ai-agents-301ce58e","Qdrant MCP — Vector Search Engine for AI Agents","MCP server for Qdrant vector database. Gives AI agents the power to store and search embeddings for RAG, semantic search, and recommendation systems. 22,000+ stars on Qdrant.",370,{"id":76,"uuid":77,"slug":78,"title":79,"description":80,"author_name":81,"view_count":82,"vote_count":24,"lang_type":25,"type":36,"type_label":37},3637,"bf886e93-454a-5713-8b61-1456eb2fefee","haiku-rag-agentic-rag-cli-mcp-server","haiku.rag — Agentic RAG CLI + MCP Server","haiku.rag is an agentic RAG toolkit with CLI, Python API, and MCP server; verified 524★ and supports `add-src`, `ask --cite`, and `serve --mcp`.","Agent Toolkit",223,{"id":84,"uuid":85,"slug":86,"title":87,"description":88,"author_name":89,"view_count":90,"vote_count":24,"lang_type":25,"type":59,"type_label":60},1375,"4493f997-38c4-11f1-9bc6-00163e2b0d79","lnav-logfile-navigator-sql-live-tailing-4493f997","lnav — The Logfile Navigator with SQL and Live Tailing","lnav is an advanced log file viewer that understands dozens of log formats, provides SQL queries against log records, live-tails rotating files, and timestamps-merges multiple logs into one view.","Script Depot",205,{"id":92,"uuid":93,"slug":94,"title":95,"description":96,"author_name":89,"view_count":97,"vote_count":24,"lang_type":25,"type":59,"type_label":60},291,"2c856b4d-64e5-46b2-9bbd-a7ce9f7a7296","ragas-evaluate-rag-llm-applications-2c856b4d","Ragas — Evaluate RAG & LLM Applications","Ragas evaluates LLM applications with objective metrics, test data generation, and data-driven insights. 13.2K+ GitHub stars. RAG evaluation, auto test generation. Apache 2.0.",308,"tokrepo install pack\u002Fmcp-search-rag-tools",{"pageType":100,"pageKey":8,"locale":101,"title":102,"metaDescription":103,"h1":104,"tldr":105,"bodyMarkdown":106,"faq":107,"schema":123,"internalLinks":129,"citations":142,"wordCount":155,"generatedAt":156},"pack","zh","MCP 搜索 + RAG 工具 — 10 个服务器搞定公网搜索、引用溯源、私有文档检索","Tavily MCP \u002F Exa MCP \u002F Firecrawl MCP \u002F omnisearch \u002F Perplexity Sonar + Citations \u002F Qdrant MCP \u002F haiku.rag \u002F lnav \u002F Ragas — 一套有顺序的 MCP，让 AI agent 既能搜公网、又能给出有引用的答案、又能从你的私有文档和日志里检索。含 cookie 作用域 \u002F 调度 \u002F 评测取舍。","MCP 搜索 + RAG 工具 — 公网搜索、引用、私有文档检索","十个服务器和 API，按推荐安装顺序排：Tavily MCP 做面向 AI 的 web 搜索打底、Exa MCP 和 Firecrawl MCP 给不同 scrape 行为的备选 backend、mcp-omnisearch 多路复用提供商、Perplexity Sonar 出带引用的答案 + Citations 渲染源标、Qdrant MCP 和 haiku.rag 给私有文档做向量 RAG、lnav 做本地日志检索、Ragas 评测整条管线是否真的有据可查。装完你的 agent 就能搜公网、查私有 corpus，每个声明都能审计。","## 这个 pack 解决什么\n\n开发者把搜索和 RAG 接进 AI agent，每次都撞同一堵墙。每个 web 搜索 API 返回格式不一样。每个向量库的 embedding 契约不一样。每个引用系统对\"什么算源\"的口径不一样。而且没人能告诉你，LLM 给出的那个答案，到底有没有从它拿到的 snippet 里得出来。\n\n本 pack 选 10 个 MCP \u002F API，把整条管线正面覆盖 — **公网搜索 → 多提供商路由 → 带引用的答案 → 私有文档检索 → 本地日志检索 → grounding 评测** — 并安排了安装顺序，每装一个解锁下一层。装完你的 agent 能搜实时公网、检索你自己的 corpus，**而且每个声明都能审计**。\n\n## 推荐安装顺序\n\n1. **Tavily MCP \u002F Tavily Search API** — 从这里起步。返回格式是为 LLM 设计的：snippet、citation 元数据、可选的生成答案，一次调用全有。比起通用 web 搜索 wrapper，省掉了\"解析 SERP\"这一步。Tavily 文档公开了请求和响应 schema，还有当下就能接通的免费档。\n2. **Exa MCP Server（远程）** — 第二个装的 web 搜索 MCP，不是第一个。Exa 是原生 embedding 的搜索索引 — 返回的是**语义相近**的结果，不是关键词匹配。把它挂到和 Tavily 同一个工具名后面，让 agent 自己选：关键词式 query 走 Tavily，探索 \u002F 概念式 query 走 Exa。\n3. **Firecrawl MCP** — 搜索 + 抓取二合一。Tavily \u002F Exa 返回 snippet，Firecrawl 返回**整页清洗后的 markdown**。snippet 不够用时换它 — 长文、文档站、任何你要塞回 LLM 上下文窗口的内容。MCP 同时暴露 `search` 和 `scrape`，agent 按调用决定走哪条。\n4. **mcp-omnisearch — 统一搜索 MCP 服务器** — 接了两三个提供商之后，omnisearch 是多路复用器。一个工具名，多个 backend。agent 按 hint 选提供商，或者你设默认值；某 backend 挂了自动降级到下一个。**至少有两个提供商时才装它**，否则就是空转。\n5. **Perplexity Sonar API — 带搜索的 LLM** — 和 Tavily \u002F Exa 形状不一样。你发问题，它回**带引用的答案**。grounding 这一步在 server 端完成。agent 的任务是\"答\"而不是\"取\"时用它。和下一项配对使用做源标渲染。\n6. **Perplexity Citations — 渲染源脚注** — 渲染那一半。Sonar 返回 citation 数组；这个端点产出干净的源脚注，可以塞进 agent 回复或 Markdown UI。**两个配对装，不要单独装**。Perplexity API 参考里每条 citation 是结构化对象，含 URL \u002F 标题 \u002F snippet — **照原文渲染，不要让 LLM 改写**。\n7. **Qdrant MCP — 向量搜索引擎** — 私有文档层。把文档、代码、runbook、转录稿索引成 embedding；MCP 暴露 `qdrant-find` 和 `qdrant-store` 给 agent 用。Qdrant 是标准选择 — 有稳定的 MCP wrapper、Apache 2.0 宽松许可。先单机 Docker 起，撑不住再 scale。\n8. **haiku.rag — Agentic RAG CLI + MCP 服务器** — 第二个 RAG MCP。Qdrant MCP 是薄的向量 wrapper，haiku.rag 是**有主张的 RAG 管线** — chunking、检索、可选 rerank、citation 表层 — 同时作为本地 CLI 和 MCP 暴露。**你不想自己造管线**时选它；**你想造**时选 Qdrant MCP。\n9. **lnav — 日志文件导航器** — 本地搜索的逃生通道。Web 搜索和向量 RAG 覆盖**内容**层；lnav 覆盖**运维**层。Agent shell 出去跑 lnav，在本地日志上跑 SQL，拿到带时间戳的匹配。lnav 文档说它自动识别常见日志格式 — agent 不用额外 prompt 就能用。\n10. **Ragas — 评测 RAG & LLM 应用** — 收官。管线接通之后，Ragas 用你的 eval set 给 answer faithfulness \u002F context precision \u002F context recall 打分。这是你发现 omnisearch 路由到错的 provider、Qdrant 取出\"语义相近但不对\"的 chunk、LLM 把源材料改写成源里根本没说过的话的方式。\n\n## 它们怎么协同\n\n```\n          [ 公网层 ]                     [ 私有 corpus 层 ]        [ 本地运维层 ]\n          Tavily MCP                     Qdrant MCP                lnav（SQL 跑日志）\n          Exa MCP                        haiku.rag\n          Firecrawl MCP                          │\n               │                                 │\n               └─── mcp-omnisearch ──┐           │\n                                     │           │\n                            Perplexity Sonar API │\n                                     │           │\n                            Perplexity Citations │\n                                     │           │\n                                     └──── agent 答案 ────► Ragas eval set\n```\n\n主干是 **Tavily MCP + Perplexity Sonar + Citations + Qdrant MCP + Ragas** — 这五件套覆盖单人 agent 80% 的搜索 + RAG 工作。Exa MCP 和 Firecrawl MCP 是**备选 web backend**，做语义搜索或全页抓取时切换。omnisearch 是**菜单变多之后的路由层**。haiku.rag 是**有主张的 RAG** 分支，你不想自己拼管线时用。lnav 是**本地运维**分支，问题是日志而不是文档时用。\n\n## Web 搜索 vs RAG vs 带引用的答案 — 选对层\n\n- **Web 搜索 MCP（Tavily \u002F Exa \u002F Firecrawl）** — agent 拿 snippet 或整页，自己决定下一步。最适合探索、查事实、找链接。最不适合\"用户想要答案而不是研究报告\"。\n- **带引用的答案 API（Perplexity Sonar + Citations）** — server 端做检索**和**合成，返回一个答案 + 来源。最适合 chatbot 和 copilot。最不适合\"我想控制具体用了哪些源\"。\n- **向量 RAG（Qdrant MCP \u002F haiku.rag）** — agent 从**你的** corpus 检索。最适合私有文档、内部 runbook、代码考古。最不适合\"变化频率快于你重建索引节奏\"的内容。\n- **本地搜索（lnav）** — 在本地日志上跑 SQL。最适合运维问题。最不适合内容问题 — 不要把它当通用检索层。\n\n真实的 agent 通常至少混两个层。常犯的错是只选一个 — 通常是向量 RAG — 然后硬把它套到所有形状上。\n\n## 引用和 grounding — 不要省评测这一步\n\n把搜索和 RAG 堆在 agent 后面的全部意义，是你能**证明**每个声明是从哪儿来的。这个承诺只有在你真的去**度量**时才成立。Ragas 算的三个指标对本 pack 都重要：\n\n- **Faithfulness** — 答案是不是从检索到的上下文里推出来的，还是 LLM 自己编的？这是抓\"模型把源材料改写成源里根本没说的话\"的关键指标。\n- **Context precision** — 取出来的 chunk 里有多少是相关的？低 precision = 你的向量库取多了，LLM 在被迫过滤本不该看的噪声。\n- **Context recall** — 应该取出来的 chunk 里取到了多少？低 recall = 你的 chunking 或 embedding 把答案整块漏掉了。\n\n第一天就用一个**很小的** eval set 接上 Ragas — 5 个问题、手标正确上下文，就够你在切换 omnisearch 后面的 provider、调整 chunker 时抓回归。\n\n## 常见踩坑\n\n- **装了两个 web 搜索 MCP 但没有路由逻辑** — agent 会按调用随机挑一个。要么在系统提示里设默认，要么在第二个 backend 之前先装 omnisearch。\n- **把 Perplexity Sonar 当搜索 API 用** — Sonar 已经合成了。你想要 snippet 喂自己的 LLM，你想要的是 Tavily 或 Exa。Sonar 的价值是**答案 + 引用一起给**。\n- **Qdrant 不带重建索引任务** — 向量 RAG 会静默腐烂。Corpus 漂移、embedding 不更新，agent 自信满满地回答半年前的旧答案。**第一天就排重建索引计划**。\n- **haiku.rag 和 Qdrant MCP 都接上** — 它们重叠。**选一个**做规范 RAG 路径，另一个可以关掉。两层 RAG 比一层更糟 — agent 不知道信哪个。\n- **Citation 被改写成转述** — 让 LLM 改写 citation 文本就**毁掉了审计链**。Perplexity Citations 的 payload **照原文 + 链接渲染**，不要当散文。\n- **跳过 Ragas** — 没有 eval set，每次\"答案看起来对\"都是下一次切 backend 时等爆的回归。\n",[108,111,114,117,120],{"q":109,"a":110},"只来得及装一个，先装哪个？","Tavily MCP。它的返回格式是最接近 LLM 能直接用的形状 — snippet、citation 元数据、可选的生成答案，一次调用全有。本 pack 里其他 web 搜索 MCP 都是在它之上做优化：Exa 做语义搜索、Firecrawl 做整页抓取、omnisearch 做路由。如果你跳过 Tavily 直接上原生 Brave 或通用搜索 wrapper，agent 会花 token 解析一份本来就不是给它做的 SERP 格式。",{"q":112,"a":113},"Perplexity Sonar 和 Tavily 都能返回搜索结果，区别是啥？","它们在不同层。Tavily 返回 snippet，让你的 LLM 合成答案。Perplexity Sonar 在 server 端做**检索 + 合成**，返回一个答案加结构化 citation。想控制\"哪些源进了模型上下文窗口\"用 Tavily。想要\"答案 + 引用一起给、能直接发出去\"用 Sonar。如果你叠用 — Tavily 先收候选、Sonar 再合成 — 你付了两份钱、还把审计链搞糊涂。**每次调用挑一个层**。",{"q":115,"a":116},"Qdrant MCP 和 haiku.rag 需要都装吗？","不要，同时接通常更糟。Qdrant MCP 是薄的向量 wrapper — 你自己带 chunking 和检索逻辑。haiku.rag 是**有主张的 RAG 管线**，帮你处理 chunking \u002F 检索 \u002F citation 表层，同时作为 CLI 和 MCP 暴露。**已经有自己管线 + 想在前面套个稳定 MCP 壳** → 选 Qdrant MCP。**完全不想造管线** → 选 haiku.rag。两个都装的话，**在系统提示里指定一个**做规范检索路径，agent 不要在两层 RAG 之间仲裁。",{"q":118,"a":119},"怎么保证 agent 给的 citation 是真的不是改写过的？","三层。(1) Perplexity Citations 的 payload **照原文渲染** — URL \u002F 标题 \u002F snippet 一字不改，永远不让 LLM 重写 citation 文本。(2) 你自己的 RAG 层在工具响应里**同时返回 chunk 原文和文档 ID**；在 prompt 里要求 agent 引用时**逐字引**而不是 summarize。(3) 用一个小 eval set 跑 Ragas faithfulness；faithfulness 就是专门抓\"答案偏离检索到的上下文\"的。第三步是你在 omnisearch 后面切 backend、调 chunker 时抓回归的方式。",{"q":121,"a":122},"这些能在离线 \u002F 内网隔离环境跑吗？","部分能。Tavily \u002F Exa \u002F Firecrawl \u002F Perplexity Sonar 都是托管 API，需要出网。Qdrant 本地跑 — 单机 Docker 对大多数个人 corpus 够用了。haiku.rag 本地跑。lnav 完全本地。Ragas 如果你接一个本地 LLM 做 judge，也能本地跑。**所以离线子集是 Qdrant + haiku.rag + lnav + Ragas（本地 judge）**。本 pack 里 web 搜索和带引用答案这两层**没有离线等价物** — 你要换成自托管搜索索引（比如 Hister 或 Elasticsearch MCP），代价是失去 AI 友好的返回格式。",{"@context":124,"@type":125,"name":13,"description":126,"numberOfItems":127,"inLanguage":128},"https:\u002F\u002Fschema.org","ItemList","十个 MCP 服务器和 API，按推荐安装顺序排，给需要搜公网 \u002F 给出有引用的答案 \u002F 从私有文档和日志检索的 AI agent 用 — 涵盖 Tavily \u002F Exa \u002F Firecrawl \u002F omnisearch \u002F Perplexity Sonar + Citations \u002F Qdrant \u002F haiku.rag \u002F lnav \u002F Ragas。",10,"zh-CN",[130,134,138],{"url":131,"anchor":132,"reason":133},"\u002Fzh\u002Ftopics\u002Fpersonal-knowledge-base-rag","个人知识库 RAG pack","兄弟 pack，聚焦私有文档 RAG 这一片，不带公网搜索层",{"url":135,"anchor":136,"reason":137},"\u002Fzh\u002Ftopics\u002Fml-engineer-rag-eval","ML 工程师 RAG 评测 pack","Ragas 接通后想深挖评测 \u002F grounding 的进阶 pack",{"url":139,"anchor":140,"reason":141},"\u002Fzh\u002Fai-tools-for\u002Fsearch","TokRepo 搜索工具分类","本 pack 之外的非 MCP 搜索 backend（自托管索引 \u002F 爬虫）配套",[143,147,151],{"claim":144,"source_name":145,"source_url":146},"Model Context Protocol 规范定义 AI 客户端如何连接工具服务器","Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"claim":148,"source_name":149,"source_url":150},"Ragas 给 RAG 管线计算 faithfulness \u002F context precision \u002F context recall","Ragas 官方文档","https:\u002F\u002Fdocs.ragas.io\u002F",{"claim":152,"source_name":153,"source_url":154},"Qdrant 暴露向量搜索 MCP 服务器，含 find 和 store 工具","Qdrant MCP server","https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fmcp-server-qdrant",1796,"2026-05-22T00:00:00Z"]