喵喵搜索开源了——一个可自托管的多引擎联网搜索与 MCP 服务

大家好,我是汉堡🍔。

今天把一个做了一段时间的项目开源了:喵喵搜索(miaomiao-search)。

GitHub 地址:https://github.com/dnwwdwd/miaomiao-search

如果觉得有用,欢迎点个 ⭐ Star,这是我持续更新最大的动力。


它是什么

一句话:可自托管的多引擎联网搜索 + Remote MCP 服务。

你可以把它部署在自己的机器或懒猫微服上,然后让 AI 客户端(比如 Codex、小龙猫)通过 MCP 协议调用它来搜索互联网、读取网页正文——完全在你自己的控制下,不依赖第三方中转。


核心功能

聚合 11 个搜索源,一次搜索覆盖:

  • Bing、Baidu、DuckDuckGo、Sogou
  • CSDN、掘金
  • GitHub(支持可选 Token)
  • B站(公开接口,返回官方 CDN 封面)
  • Exa、Firecrawl、Tavily(需要用户自己的 API Key,按用户加密存储)

读取网页正文,支持 JavaScript 渲染回退(生产镜像内置 Chromium)。

Remote MCP 服务,通过 Streamable HTTP 暴露 MCP Tools,外部客户端用 Access Token 接入,懒猫应用间可以委托鉴权,不需要额外 Token。

管理门户,可以管理搜索引擎开关、缓存、限流、历史记录和审计日志。

账号体系,支持懒猫 OIDC 和本地账号密码两种登录方式。


技术栈

  • 前端:Next.js 16、React 19、TypeScript、Tailwind CSS v4
  • 后端:Fastify 5、SQLite、Drizzle ORM
  • MCP:MCP TypeScript SDK v2
  • 搜索底层:open-websearch@2.1.11 daemon 适配器

单实例运行,数据用 SQLite 持久化,按懒猫 UID 隔离用户数据,包内不含数据库或密钥。


本地跑起来

要求:Node.js 20+、pnpm,以及一个可通过 HTTP(S) 访问的 Open-WebSearch daemon。

▼
bash
复制代码
pnpm install

启动 Open-WebSearch daemon(Windows PowerShell 示例):

▼
powershell
复制代码
$env:SEARCH_MODE="request" $env:USE_PROXY="true" $env:PROXY_URL="http://127.0.0.1:7890/" pnpm --filter @miaomiao-search/server exec open-websearch serve --port 3210

再分别启动服务端和门户:

▼
bash
复制代码
pnpm server:dev pnpm dev

默认地址:

  • 门户:http://127.0.0.1:3000/
  • 服务端:http://127.0.0.1:3001/
  • MCP Endpoint:http://127.0.0.1:3000/mcp

安全设计

几个关键点说一下:

  • 实例密钥派生会话、MCP Token Hash 和设置加密密钥,生产环境由懒猫清单注入,不能写进仓库。
  • Exa、Firecrawl、Tavily、GitHub 的凭据在门户"引擎管理"中按用户保存,服务端只在当前用户数据库中存加密值。
  • 外部 MCP 客户端用 Authorization: Bearer <Token> 接入;懒猫应用间调用由 ingress 注入 X-HC-SOURCE 和 X-HC-USER-ID,委托鉴权,不需要额外 Token。
  • 门户不把 X-HC-* 头当登录凭据,所有受保护 API 将当前 UID 与应用会话绑定校验。

许可

Apache-2.0,详见仓库 LICENSE。


项目还在持续迭代中,欢迎提 Issue 和 PR。

如果觉得有用,点个 Star 是对我最大的支持 ⭐

👉 https://github.com/dnwwdwd/miaomiao-search

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
吃遍全国汉堡
作者分享
GPT发癫了,我也没聊彩票啊
3
可以转战Claude订阅了,GPT发布延迟还被吊着打,甚至不如去订阅国产 AI 聚合套餐
4
Notus 正式发布:我做了一个真正属于自己的 AI 知识库
6
Notus太强了,点赞
3
这篇文章我十分赞同,GPT 给我的感觉就是不够灵性、不够聪明,必须要给明确的目标和指定任务才能干的好,倘若任务十分发散开放就变得十分糖。相比之下 Claude 就非常有灵性,它总是能看透用户意图抓到用户实际需要什么,特别是在做调研类任务时 Claude 显得更强,GPT 总是 get 不到我的点,我让它找啥它才找啥,很难把我提出每个需求串起来去找,这就很难受。好在GPT 6 Astra 好了不少,但是太贵了。 https://chatgpt.com/share/6ab08cbd-982c-83e8-8d49-02d6006e75e8 这个对话就是一个活生生的例子,我想找一个可以查看各家coding agent额度的项目,通过官方OAuth登录进行登录认证,而不是读取auth.json等权限文件,因为我想搬砖到懒猫微服上去。但这个 GPT 气得我没话说,我把所有需求说明白了,它找出个dsh 插件来了https://github.com/lninghaha/dsh-coding-subscription-oauth 最后跟我说没找到,还是我告诉它有个项目能符合我的要求才开始分析(实际我并没让它分析,我只是问他合不合适,分析过程中它还说了如何去搬到懒猫微服,因为 GPT 记忆中知道搬到懒猫微服的前提是什么,其中条件之一必须是web端架构且不依赖于其他任何项目,是一个独立的项目个体,但它还是能找出 dsh 插件来搪塞我)。 更别说其他的工作,比如调整UI、写文案等。X 上有个帖子说的很好,我让 GPT 调整网页的文案或者按钮的位置,比如我希望把登录功能作为单独的页面展示而不是弹窗,它会非常脑残得在登录页面底部写上“登录功能已作为单独页面展示,而不是弹窗”,如果你经历过肯定知道我在说什么。 还有codex的多agent协作非常的垃圾,主agent不信任sub-agent的执行结果,非要自己去验证,导致之前我本来想写一个文章介绍如何进行多agent实战,但它耗了我2个重置机会连第一个阶段都没进行完,一共有6阶段。而且 GPT 的重置就是个骗局,因为不断重置你很难判断一周内套餐实际能用多少的token量,从而官方可以不断的削减使用量,而且因为不断重置模型不断降智,速度也很慢。
8
下载 APP